MCP 服务器演示项目总结
项目概述
本项目系一个 MCP(Model Control Protocol)服务器演示,具备简单的数学计算功能。项目涵盖两种相异实现方式的 MCP 服务器:
基于 FastAPI 的 MCP 服务器(sse-server.py),采用 sse 协议。
基于 FastMCP 的 MCP 服务器(server.py),运用 stdio 协议。
技术栈
Python 3.12 及以上版本。
FastAPI 。
fastapi-mcp (不低于 0.3.3 版本)。
mcp[cli] (不低于 1.6.0 版本)。
httpx (不低于 0.28.1 版本)。
uvicorn (用于运行 FastAPI 服务器)
环境初始化
当前环境基于 uv(python 虚拟环境管理)达成,烦请提前安装
uv init mcp-server-demo
cd mcp-server-demo
uv add mcp[cli]
uv add uvicorn https fastapi-mcp
服务器实现
- FastAPI MCP 服务器 (sse-server.py)
此服务器借助 FastAPI 框架予以实现,提供加法计算功能,并通过 HTTP SSE 协议与客户端进行通信。
服务器代码 (sse-server.py):
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
app = FastAPI()
显式 add_a_b(工具将被命名为 "add_a_b")
@app.get("/add/{a}/{b}", operation_id="add_a_b")
async def add(a: int, b: int):
"""Add two numbers"""
return {"result":a + b}
mcp = FastApiMCP(app,
name="我的 MCP 服务器",
description="测试使用,目前只用来计算两个数的和",
)
mcp.mount()
使用 uvicorn 启动服务器
if name == "main":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
MCP服务运行在 localhost:8000/mcp
服务器运行:
..venv\Scripts\activate
python.\sse-server.py
运行成功后,终端将输出:
INFO: 已启动服务器进程 [29212]
INFO: 正等待应用程序启动。
INFO: 应用程序启动完毕。
INFO: Uvicorn 运行于 0.0.0.0:8000 (按下 CTRL+C 可退出)
INFO: 127.0.0.1:60502 - "GET /mcp HTTP/1.1" 200 成功
INFO: 127.0.0.1:60503 - "GET /mcp HTTP/1.1" 200 成功
在服务器运行的状况下,即可添加 mcp 配置,随后在富贵论坛APP客户端调用,其中配置文件如下:
sse-server.json
用于配置 MCP 客户端连接至 FastAPI MCP 服务器:
{
"mcpServers": {
"fastapi-mcp": {
"url": "localhost:8000/mcp"
}
}
}
注意:此服务器为服务器发送事件(sse),而非可流式传输的 HTTP(streamableHttp)
在 mcp 客户端中添加 mcp 服务器,接着会调用 add_a_b 功能,实现大模型对于该函数的调用,达成类似于 12+34 之类的计算,确保输出结果。
- FastMCP 服务器 (server.py)
此服务器运用 FastMCP 库直接予以实现,提供加法功能,通过 stdio 协议与客户端进行通信,通常适用于本地集成。
服务器代码 (server.py):
server.py
from mcp.server.fastmcp import FastMCP
创建一个 MCP 服务器
mcp = FastMCP("Demo")
添加一个加法工具
@mcp.tool()
def add(a: int, b: int) -> int:
"""将两个数字相加"""
return a + b
当脚本直接被执行时,使用 stdio 传输运行服务器
if name == "main":
print("通过 stdio 启动 MCP 服务器...")
mcp.run(transport='stdio')
测试代码
..venv\Scripts\activate
uv run mcp dev server.py
运行之后,便可着手调试代码:
PS D:\path\to\mcp-server-demo> uv run mcp dev server.py
开启 MCP 检查器...
⚙️ 代理服务器在端口 6277 监听
MCP 检查器已启动并在 127.0.0.1:6274 运行
新的 SSE 连接
查询参数: [Object: null prototype] {
transportType: 'stdio',
command: 'uv',
args: 'run,--with,mcp,mcp,run,server.py',
env: '{"APPDATA":xxxxxx}'
}
Stdio 传输: 命令=D:\bin\uv.exe, 参数=run,--with,mcp,mcp,run,server.py
启动 stdio 传输
已连接 MCP 客户端至后端服务器传输
创建网页应用传输
创建网页应用传输
设置 MCP 代理
接收到会话 ID 为 8e1d5d5f-a341-4528-a6c4-1541a84d861f 的消息
打开浏览器,访问地址 127.0.0.1:6274 ,选择“Connect”,待连接成功后,即可开始调试。选择“Tools”/“List Tools”,会出现“add”,点击之后,在右边出现 add 对话框,在其中输入 a 和 b 的值,点击“Run Tool”,就能得到计算结果。
server.json
用于配置 MCP 客户端启动 FastMCP 服务器:
{
"mcpServers": {
"demo-server": {
"command": "uv",
"args": [
"--directory",
"D:/path/to/mcp-server-demo", ##请将此路径修改为您自身的路径
"run",
"server.py"
]
}
}
}
此配置文件填写至相关的 client 中即可,其中“–directory”参数指定了.venv 虚拟化环境及 server.py 所在的目录,配置无误即可连接成功。
连接到 MCP 服务器
大模型能够通过 MCP 客户端连接至这些服务器,并使用 add 工具进行简易的加法计算。
注意事项
务必确保已安装所有依赖项(详见 pyproject.toml)
FastAPI MCP 服务器需通过 HTTP 进行访问
FastMCP 服务器采用 stdio 传输方式,适用于本地集成
注:此文档为llms.txt测试,用于大模型开发mcp服务器辅助使用,特此记录。