Token导航 LogoToken导航TokenDH.com
As A Fastapi Application logo
AI代理未说明官方级别未说明来源级核验

As A Fastapi Application

MCP Server

通过FastAPI将Model Context Protocol (MCP)工具转换为HTTP-ready应用,支持多MCP服务器挂载和云平台部署。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
云部署HTTP服务FastAPI工具集成Python

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

BibekBarik18

提供方

BibekBarik18

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

通过FastAPI暴露MCP服务器

一次构建,随处部署。通过简洁的FastAPI接口暴露您的模型上下文协议(MCP)工具。

概述

这个项目展示了如何:

  • 将一个简单的MCP服务器转换为FastAPI应用程序
  • 使用 FastAPI 生命周期钩子运行和管理 MCP 生命周期
  • 在路径前缀下挂载一个或多个MCP应用程序
  • 使用容器或进程基础的运行器部署到通用云平台

______________________________________________________________________

这里的MCP是什么?

MCP(模型上下文协议)允许您向客户端暴露可调用的“工具”。FastMCP助手来自 mcp.server.fastmcp 将这些工具转换为一个可嵌入或挂载到FastAPI等框架中的HTTP就绪应用程序。

______________________________________________________________________

项目结构

.
├─ math_server.py     # Defines a simple MCP tool surface
├─ main.py            # FastAPI app that mounts the MCP app
├─ requirements.txt  # Or pyproject.toml / poetry.lock

______________________________________________________________________

示例MCP服务器

math_server.py(可译为:数学服务器.py,或根据上下文具体含义调整,如“数学服务脚本.py”等)

from mcp.server.fastmcp import FastMCP

mcp = FastMCP(name="MathServer", stateless_http=True)

@mcp.tool(description="A simple add tool")
def add_two(n: int) -> int:
    return n + 2

要点:

  • FastMCP收集装饰过的工具,并通过HTTP和WebSocket提供它们。
  • \stateless_http=True\ 优化了临时、每请求一次的执行方式。非常适合无服务器架构和自动扩展场景。

______________________________________________________________________

在FastAPI中嵌入MCP

main.py 翻译成中文是:“主程序文件.py” 或者 “主文件.py”(根据上下文,也可以简化为“主文件”)

import contextlib
from fastapi import FastAPI
from math_server import mcp
import os

@contextlib.asynccontextmanager
async def lifespan(app: FastAPI):
    async with contextlib.AsyncExitStack() as stack:
        # Start MCP runtime and keep it alive for the app lifecycle
        await stack.enter_async_context(mcp.session_[manager.run](http://manager.run)())
        yield

app = FastAPI(lifespan=lifespan)

# Mount the MCP app at a path prefix
app.mount("/echo", mcp.streamable_http_app())

PORT = int(os.environ.get("PORT", 10000))

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=PORT)

其工作原理如下:

  • 生命周期:保持MCP会话管理器在应用程序的整个生命周期内保持开启状态,以便跨工作进程随时可用工具。
  • 安装:MCP子应用位于下方 /echo如果MCP应用程序提供服务 /mcp,完整路径是 /echo/mcp

______________________________________________________________________

在本地运行

使用 Uvicorn:

uvicorn main:app --reload

终点:

  • 基础挂载点:http://localhost:10000/echo
  • MCP 表面(示例):http://localhost:10000/echo/mcp

注:如果您更改端口通过 PORT请相应地更新您的请求。

______________________________________________________________________

一个主机下运行多个MCP服务器

在共享主机下挂载多个MCP子应用:

import contextlib
from fastapi import FastAPI
from echo_server import mcp as echo_mcp
from math_server import mcp as math_mcp
import os

@contextlib.asynccontextmanager
async def lifespan(app: FastAPI):
    async with contextlib.AsyncExitStack() as stack:
        await stack.enter_async_context(echo_mcp.session_[manager.run](http://manager.run)())
        await stack.enter_async_context(math_mcp.session_[manager.run](http://manager.run)())
        yield

app = FastAPI(lifespan=lifespan)
app.mount("/echo", echo_mcp.streamable_http_app())
app.mount("/math", math_mcp.streamable_http_app())

PORT = int(os.environ.get("PORT", 10000))

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=PORT)

这得出:

  • /echo/mcp 翻译成中文可以是:“/回声/管理控制面板” 或者根据具体语境简化为 “/回声/MCP(管理控制面板)”。不过,这里的“echo”在网络用语中有时也用来指代“回声室”或“重复信息”,但在此处更可能是指一个命令或功能,类似于“回声”或“广播”的作用,而“mcp”通常指的是“管理控制面板”。所以,一个比较通用的翻译是:“/回声/管理控制面板”
  • /math/mcp 翻译为中文是“/数学/最小化约束问题(或最小化约束规划,具体根据上下文确定)”。不过,通常“mcp”在数学或计算机科学领域可能有特定的含义或缩写,但在这里直接翻译为“最小化约束问题”或“最小化约束规划”是比较通用的解释

你也可以添加常规的FastAPI路由在 /api/... 与这些支架并排。

______________________________________________________________________

安全考虑因素

  • 在FastAPI层添加身份验证。API密钥或OAuth是常见的方法。
  • 对公共端点应用速率限制或使用Web应用防火墙(WAF)/内容分发网络(CDN)。
  • 验证工具输入。检查类型和范围以避免误用。

______________________________________________________________________

性能优化技巧

  • 为了实现并发,运行多个工作进程:
  uvicorn main:app --host 0.0.0.0 --port $PORT --workers 2
  • 保持MCP无状态,以实现快速冷启动和水平扩展。

______________________________________________________________________

故障排除

  • 遇到404错误 /mcp检查挂载前缀。使用 app.mount("/echo", ...),路径是 /echo/mcp
  • 端口不匹配:对齐 PORT 环境变量、容器暴露和客户端请求。
  • 验证您的平台健康检查是否针对有效路由进行。

______________________________________________________________________

摘要

  • 定义使用以下工具: FastMCP 并且 @mcp.tool
  • 在FastAPI的生命周期中管理MCP(可能是指某种组件或服务,具体需根据上下文确定)的生命周期。
  • 安装MCP应用程序 app.mount(prefix, mcp.streamable_http_app())
  • 部署到任何运行ASGI应用程序或容器的云平台。
  • 轻松扩展,并在单一URL空间后托管多个MCP服务器。

目录标签

目录标签

云部署HTTP服务FastAPI工具集成Python本地部署MCP协议

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP