返回市场
快速API-MCP服务器

快速API-MCP服务器

作者:purity32 星标更新:2025-05-05

项目介绍

🚀 FastAPI MCP 服务器

版本 许可证 Python

FastAPI MCP 服务器是一个专门为大型语言模型设计的集成应用程序。基于 FastAPI 框架开发,提供高性能的服务器端事件(SSE)通信、智能工具注册以及全面的会话管理功能。

📖 项目简介

该项目是一个轻量级、高性能的 MCP 服务器实现,旨在简化人工智能模型与用户应用之间的交互。它利用了 FastAPI 的异步特性和模式验证能力,并结合了 SSE(服务器发送事件)技术来实现低延迟实时通信,通过会话管理系统支持多用户和多模型并发交互,为开发驱动型的人工智能应用提供了强大的后端支持。

✨ 项目亮点

  • 🔄 FastAPI + MCP 整合:无缝整合 FastAPI 的高性能与 MCP 协议,提供标准化的模型交互接口。
  • 📡 高效的 SSE 实时通信:基于服务器发送事件(SSE)的单向实时数据流,具有毫秒级响应。
  • 👥 多用户会话隔离:完整的会话创建、存储和管理机制,确保多用户场景下的数据隔离。
  • 🔐 灵活的身份验证机制:支持多种身份验证方法,包括令牌、路径和查询参数,满足不同场景的需求。
  • ⚡ 完全异步处理架构:从请求处理到数据库操作均采用异步设计,支持高并发访问。
  • 🧰 智能工具注册系统:简化人工智能工具功能的注册和管理,便于扩展模型能力。

🔍 工作原理

graph TD
    A[客户端] -->|发送请求| B[FastAPI服务器]
    B -->|创建/获取| C[会话服务]
    C -->|管理| D[用户会话]
    B -->|路由到| E[MCP处理器]
    E -->|注册| F[工具函数]
    E -->|使用| G[SSE传输]
    G -->|实时响应| A
    
    classDef client fill:#f9f,stroke:#333,stroke-width:2px;
    classDef server fill:#bbf,stroke:#333,stroke-width:2px;
    classDef service fill:#bfb,stroke:#333,stroke-width:2px;
    
    class A client;
    class B,E server;
    class C,D,F,G service;

📸 截图

MCP 交互界面

MCP接口

MCP Inspector 参数透明传输

无感透传

MCP Inspector 参数认证验证

参数鉴权

📁 项目结构

fastapi-mcp-server/
├── auth/               # 认证相关模块
├── database/           # 数据库连接和管理
├── models/             # 数据模型定义
├── routes/             # API路由定义
├── services/           # 业务逻辑服务
├── tools/              # 工具函数
├── transport/          # 传输层实现
├── utils/              # 通用工具函数
├── config.py           # 配置文件
├── main.py             # 应用入口
└── server.py           # MCP服务器初始化

🛠️ 安装指南

前提条件

  • 🐍 Python 3.13+
  • 🗄️ 支持异步数据库(可选)
  • 📦 UV 包管理器(推荐)

安装步骤

  1. 克隆代码仓库:
git clone git@github.com:purity3/fastapi-mcp-server.git
cd fastapi-mcp-server
  1. 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# 或者
.venv\Scripts\activate     # Windows
  1. 安装依赖:

使用 UV 安装(推荐):

# 如果尚未安装 uv
pip install uv

# 使用 uv 安装依赖
uv pip install -e .

或者使用 pip 安装:

pip install -e .
  1. 配置环境变量:

创建 .env 文件,参考 .env.example 设置必要的环境变量。

  1. 创建数据库:

需要在数据库目录中创建一个 session.db 数据库文件,可以通过运行以下命令进行初始化:

# 确保 database 目录存在
mkdir -p database

# 创建空的 session.db 文件
touch database/session.db

# 应用程序首次运行时会自动创建必要的表结构
  1. 自定义认证逻辑:

auth/credential.py 中实现自己的 API 密钥验证逻辑。默认提供基本框架,您需要根据自身需求进行修改:

# 示例:自定义鉴权逻辑
async def verify_api_key(api_key: str) -> bool:
    """
    验证 API 密钥是否有效
    
    Args:
        api_key: 要验证的 API 密钥
    
    Returns:
        如果 API 密钥有效则返回 True,否则返回 False
    """
    # 实现您的自定义验证逻辑
    # 可以是本地验证、数据库查询或远程 API 调用
    
    # 简单示例:检查 API 密钥格式和前缀
    if not api_key or not api_key.startswith("sk_"):
        return False
        
    # 添加更多验证步骤...
    
    return True  # 验证通过

🚀 用户指南

启动服务器

使用 Python 启动:

python -m main
# 或使用安装的入口点
start

使用 UV 启动:

uv run start

使用调试模式启动:

mcp dev server.py

服务器默认运行在 http://localhost:8000

自定义工具

tools/ 目录下添加您的自定义工具函数,并在 server.py 中进行注册:

@mcp.tool()
def your_custom_tool():
    # 实现您的工具逻辑
    pass

⚙️ 环境变量

变量名称描述默认值是否必需
HOST服务器主机127.0.0.1
PORT服务器端口8000
DATABASE_URL数据库连接地址None

🔧 常见问题解决

连接问题

  • 无法启动服务器:检查端口是否被占用,并尝试更改 PORT 环境变量。
  • SSE 连接断开:检查网络连接或客户端超时设置。

工具注册问题

  • 工具注册失败:确保工具函数格式正确且已正确导入。
  • 工具执行错误:检查实用函数的错误处理逻辑。

会话管理问题

  • 会话创建失败:检查数据库连接配置。
  • 会话过期:调整会话过期时间或确保客户端维持活跃连接。

🔮 未来计划

我们计划在未来版本中添加以下功能:

  • [ ] Docker 容器部署

    • [] 创建优化的 Docker 镜像
    • [] 提供 Docker Compose 配置
    • [] 支持多容器协作部署
  • [ ] IP 黑白名单系统

    • [] 基于 IP 的访问控制
    • [] 支持 CIDR 格式的网络规则
    • [] 可配置的拦截策略
  • [ ] FastMCP 流式模式支持

    • [] 支持异步流式响应传输
    • [] 实现 MCP 协议的流式处理机制
    • [] 提供流式传输的进度监控和错误处理
  • [ ] 高级监控和日志

    • 实时性能监控
    • [] 结构化日志输出
    • [] 分布式追踪支持

📜 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文档。