“ 使用MCP协议就可以解耦智能体和工具的开发,使得其可配置。”
对智能体来说除了大模型之外,最重要的就是其工具;在之前的开发过程中,使用函数作为智能体的工具,但由于每家模型服务商的标准都不一样,因此开发起来相对比较麻烦,并且无法标准化;因此才有了MCP(模型上下文协议)的出现,目的就是统一智能体工具的开发,其作用就类似于USB接口。
通过MCP协议就可以把智能体开发和工具开发完全拆分开来,智能体是智能体,工具是工具;在需要的时候,直接把工具加入到智能体中即可使用,通过可插拔的方式,可以达到快速改造智能体功能的目的。
如果再把提示词和记忆模块做成动态可配置,那么就可以通过配置的方式,快速搭建不同功能的智能体。
fastapi-mcp改造fastapi项目
什么是fastapi-mcp?
-
FastAPI-MCP是一个基于python FastAPI框架开发的开源项目,可以自动识别并暴露FastAPI接口为MCP工具 -
拥有FastAPI框架的所有优点,如异步高并发、独立远程部署、OpenAPI文档 -
提供SSE、mcp-remote接入方式,支持设置授权访问,适配各种支持MCP协议客户端 -
FastAPI-MCP开源地址:https://github.com/tadata-org/fastapi_mcp,原理图如下所示:

- 自动发现与转换
:自动扫描FastAPI应用中的所有端点,转换为MCP工具格式,无需手动注册 - 文档完整性保留
:完整继承Swagger文档描述和参数校验规则,确保AI调用准确性 - 灵活部署模式
:支持挂载到原应用或独立部署,适配不同架构需求 - 智能端点筛选
:通过operation_id或标签控制暴露的接口范围 - 动态热更新
:运行时可刷新服务目录,自动包含新增端点 - 多协议支持
:原生兼容SSE协议,通过mcp-proxy适配非SSE客户端
uv add fastapi-mcp
pip install fastapi-mcp
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
app = FastAPI()
mcp = FastApiMCP(
app,
# 可选参数
name="My API MCP"
)
# 将 MCP 服务器直接挂载到 FastAPI 应用
mcp.mount()
if __name__ == "__main__":
uvicorn.run("index:app", host="0.0.0.0", port=8000, reload=True)
自定义暴露的端点
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
app = FastAPI()
# 只包含特定操作
mcp = FastApiMCP(
app,
include_operations=["get_user", "create_user"]
)
# 排除特定操作
mcp = FastApiMCP(
app,
exclude_operations=["delete_user"]
)
# 只包含具有特定标签的操作
mcp = FastApiMCP(
app,
include_tags=["users", "public"]
)
# 排除具有特定标签的操作
mcp = FastApiMCP(
app,
exclude_tags=["admin", "internal"]
)
# 结合操作 ID 和标签(包含模式)
mcp = FastApiMCP(
app,
include_operations=["user_login"],
include_tags=["public"]
)
mcp.mount()
关于过滤的注意事项:
-
不能同时使用 include_operations
和exclude_operations
-
不能同时使用 include_tags
和exclude_tags
-
可以结合操作过滤和标签过滤(例如,使用 include_operations
和include_tags
) -
当结合过滤器时,将采用贪婪方法。匹配任一条件的端点将被包含
然后你就可以使用支持mcp服务的客户端连接mcp服务,如claude,cherry studio等等;只需要在这些工具的配置文件中加入以下配置:
# windows
{
"mcpServers": {
"my-api-mcp-proxy": {
"command": "mcp-proxy",
"args": ["http://127.0.0.1:8000/mcp"]
}
}
}
# macos
{
"mcpServers": {
"my-api-mcp-proxy": {
"command": "你自己安装的mcp-proxy路径 可以使用which mcp-proxy命令查找",
"args": ["http://127.0.0.1:8000/mcp"]
}
}
}
总之,在智能体的开发中,使用MCP协议,可以把智能体的开发和工具的开发隔离开来,只需要按照标准的MCP协议开发即可;在智能体中就可以使用插拔的方式调用需要的工具。
(文:AI探索时代)