跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI

基于 FastAPI 自动构建 SSE MCP 服务器

基于 FastAPI 和 fastapi-mcp 库构建支持模型上下文协议(MCP)的服务器。通过安装 uvicorn 和 fastapi 依赖,定义 API 端点并自动转换为 MCP 工具。示例展示了如何集成天气查询接口,并通过 Inspector 工具调试 SSE 连接。支持 stdio 到 SSE 的代理模式,便于不同客户端接入。该架构利用异步编程处理高并发,结合容器化部署实现弹性伸缩,适合将企业能力转化为大模型可调用的标准化服务。

氛围发布于 2026/2/8更新于 2026/7/204.6K 浏览
基于 FastAPI 自动构建 SSE MCP 服务器

基于 FastAPI 构建 MCP 服务器

Anthropic 推出的 MCP 协议旨在让 AI 代理与应用程序之间的对话更顺畅。FastAPI 基于 Starlette 和 Uvicorn,采用异步编程模型,可轻松处理高并发请求,适合大模型与外部系统的实时交互需求。

FastAPI 基础知识

安装依赖

pip install uvicorn fastapi

FastAPI 服务代码示例

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"data": "Hello MCP!"}

uvicorn 启动 server

uvicorn server:app --reload

FastAPI 开发 MCP Server

fastapi-mcp 是一个零配置工具,用于自动将 FastAPI 端点暴露为模型上下文协议(MCP)工具。

  • 直接集成:不需要复杂的设置,直接集成到 FastAPI 应用中。
  • 自动转换:无需手动编写代码,自动将 FastAPI 端点转换为 MCP 工具。
  • 灵活性:支持自定义 MCP 工具,与自动生成的工具一同使用。
  • 性能:基于 Python 3.10+ 和 FastAPI,保证了高性能的 API 服务。
  • 文档友好:保持了原有的 API 文档,方便开发者使用和理解。

安装依赖

pip install fastapi-mcp

MCP 服务代码示例

from fastapi import FastAPI
from fastapi_mcp import add_mcp_server
from typing import Any
import httpx

NWS_API_BASE = "https://api.weather.gov"
USER_AGENT = "weather-app/1.0"

app = FastAPI()
mcp_server = add_mcp_server(
    app,
    mount_path="/mcp",
    name="Weather MCP Server",
    describe_all_responses=True,
    describe_full_response_schema=True
)

async def make_nws_request(url: str) -> dict[str, Any] | None:
    headers = {
        "User-Agent": USER_AGENT,
        "Accept": "application/geo+json"
    }
    async with httpx.AsyncClient() as client:
        try:
            response = await client.get(url, headers=headers, timeout=30.0)
            response.raise_for_status()
            return response.json()
        except Exception:
            return None

@mcp_server.tool()
async def get_forecast(latitude: float, longitude: float) -> str:
    points_url = f"{NWS_API_BASE}/points/{latitude},{longitude}"
    points_data = await make_nws_request(points_url)
    if not points_data:
        return "Unable to fetch forecast data for this location."
    
    forecast_url = points_data["properties"]["forecast"]
    forecast_data = await make_nws_request(forecast_url)
    if not forecast_data:
        return "Unable to fetch detailed forecast."
    
    periods = forecast_data["properties"]["periods"]
    forecasts = []
    for period in periods[:5]:
        forecast = f"""
        {period['name']}: Temperature: {period['temperature']}°{period['temperatureUnit']} Wind: {period['windSpeed']} {period['windDirection']} Forecast: {period['detailedForecast']}
        """
        forecasts.append(forecast)
    return "\n---\n".join(forecasts)

启动 mcp server

uvicorn server:app --host 0.0.0.0 --port 8001 --reload

启动 mcp inspector 调试

CLIENT_PORT=8081 SERVER_PORT=8082 npx -y @modelcontextprotocol/inspector

当集成了 MCP 的 FastAPI 应用运行起来后,可以用任何支持 SSE 的 MCP 客户端连接它。这里使用 mcp inspector 进行调试,通过 SSE 连接 Weather MCP 服务器。

SSE 是一种单向通信的模式,所以它需要配合 HTTP Post 来实现客户端与服务端的双向通信。严格的说,这是一种 HTTP Post(客户端->服务端) + HTTP SSE(服务端->客户端)的伪双工通信模式,区别于 WebSocket 双向通信。

如果 MCP 客户端不支持 SSE,可以使用 mcp-proxy 连接 MCP 服务器。本质上是本地通过 stdio 连接到 mcp-proxy,再由 mcp-proxy 通过 SSE 连接到 MCP Server 上。

mcp-proxy 支持两种模式:stdio to SSE 和 SSE to stdio。

安装 mcp-proxy
uv tool install mcp-proxy
配置 claude_desktop_config.json
{
  "mcpServers": {
    "weather-api-mcp-proxy": {
      "command": "mcp-proxy",
      "args": ["http://127.0.0.1:8001/mcp"]
    }
  }
}

总结

FastAPI 构建 MCP 服务器的核心价值在于:通过类型安全的异步接口,将企业现有能力快速转化为大模型可调用的标准化服务。这种架构既保留了 FastAPI 的高效开发体验,又通过 MCP 协议实现了与前沿 AI 技术的无缝对接,同时结合 Docker 和 Kubernetes 实现弹性伸缩部署,可以快速应对大模型调用量的突发增长,是构建下一代智能系统的理想选择。

目录

  1. 基于 FastAPI 构建 MCP 服务器
  2. FastAPI 基础知识
  3. 安装依赖
  4. FastAPI 服务代码示例
  5. uvicorn 启动 server
  6. FastAPI 开发 MCP Server
  7. 安装依赖
  8. MCP 服务代码示例
  9. 启动 mcp server
  10. 启动 mcp inspector 调试
  11. 安装 mcp-proxy
  12. 配置 claudedesktopconfig.json
  13. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • AIGC 下一站:文生视频技术发展与伦理风险
  • CANN 算子开发:Transformer 核心算子优化与 AIGC 实战
  • AIGC 赋能艺术创作:探索新机遇
  • 零经验转行 AI:AGI 产品经理求职指南与面试准备
  • 初学者如何选择编程语言和开发方向指南
  • MySQL 数据类型核心指南:选型、实战与避坑
  • Web 可访问性最佳实践:构建人人可用的前端界面
  • 前端地图开发基础:服务类型、坐标系与 SDK 选型指南
  • Spring Boot 入门:Spring Web MVC 概念与实战
  • OpenClaw 集成 GLM 模型实现免费联网搜索
  • LeetCode Hot 100 经典题型 Python 刷题记录
  • AI 产品经理的核心职责、工作流程与能力要求解析
  • AI Agent 开发入门:零基础学习指南
  • 渗透测试基础概念、流程与常见漏洞详解
  • MCP Server 实现 Excel 表格一键生成可视化图表 HTML 报告
  • ESLint 实战指南:从原理到 TypeScript 工程化配置
  • Python Pandas 安装踩坑与解决方案
  • 双向循环链表插入操作详解
  • PX4 模块化架构与工程目录解析
  • C++ 类和对象:拷贝构造与赋值运算符详解

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online