使用说明
项目自述
此存储库包含几个最小MCP(模型上下文协议)示例脚本,演示了 fastmcp 和 fastapi 集成,加上一个小型RSS提要搜索器。文件包括:
fastapi_mcp_calculator.py--FastAPI应用程序公开计算器端点,转换为MCPfastapi_mcp.作为标准FastAPI服务运行(示例使用uvicorn上localhost:8002).fastmcp_calculator.py—fastmcpSTDIO传输示例。注册简单的计算器工具,并使用STDIO(默认)运行MCP服务器。fastmcp_calculatorv2.py—fastmcpHTTP传输示例。注册相同的计算器工具,但将MCP服务器作为HTTP服务运行(示例使用transport="http",host="localhost",port=8003).feed_mcp.py--一个使用feedparser按查询搜索FreeCodeCamp RSS源和YouTube源,返回结果。
快速摘要
所有脚本都实现了基本的算术工具(乘、加、减、除)。 feed_mcp.py 实现了三个工具来搜索FreeCodeCamp内容并返回简短结果。
- 计算器工具:
multiply(a, b),add/add_numbers(x, y),subtract(a, b),divide(a, b)(处理除零)。 - 进给工具(英寸
feed_mcp.py):fcc_news_search(query, max_results=3),fcc_youtube_search(query, max_results=3),fcc_secret_message().
需求
- Python 3.8+(推荐3.10+)
fastmcp和fastapi_mcp取决于您运行的脚本fastapi和uvicorn为了fastapi_mcp例子feedparser为了feed_mcp.py
安装常见依赖项(示例):
python -m pip install fastmcp fastapi uvicorn feedparser
如果 fastmcp 或 fastapi_mcp 在您的环境中PyPI上不可用,请根据您的项目说明或本地软件包安装它们。
如何跑步
1) STDIO MCP(fastmcp_calculator.py)
python fastmcp_calculator.py
这将启动一个通过STDIO进行通信的MCP服务器。可用于嵌入其他进程或与通过STDIO与MCP通信的客户端一起使用。
2) 使用fastmcp的HTTP MCP(fastmcp_calculatorv2.py)
python fastmcp_calculatorv2.py
这将启动通过HTTP提供的相同计算器工具(默认示例使用 host=localhost, port=8003).
3) FastAPI MCP(FastAPI_MCP_calculator.py)
python fastapi_mcp_calculator.py
此文件定义了计算器的FastAPI端点,并通过以下方式挂载MCP fastapi_mcp默认情况下,该示例以 uvicorn 上 localhost:8002.
您可以直接测试FastAPI端点(例如POST /multiply JSON正文 {"a": 6, "b": 7})或者使用指向安装的MCP HTTP路径的MCP检查器。
4) 馈送MCP(Feed_MCP.py)
python feed_mcp.py
它运行一个STDIO MCP,提供搜索FreeCodeCamp RSS和YouTube提要的工具。工具接受a query string并返回一个简短的结果列表。
示例用法(概念性)
- 乘:
multiply(6, 7)→42 - 添加:
add(5, 3)→8 - 减去:
subtract(9, 4)→5 - 划分:
divide(10, 2)→5.0 - 除以零:
divide(1, 0)→ 根据脚本引发错误或返回错误响应 - RSS搜索:
fcc_news_search("python")→ 匹配的FreeCodeCamp文章列表
提示和故障排除
- 如果所选端口已经在使用中(例如。,
8002或8003),停止冲突的服务或更改脚本中的端口。 - 对于HTTP MCP,验证网络绑定(使用
localhost用于本地测试)。如果需要外部访问,请绑定到0.0.0.0通过适当的安全控制。 - STDIO传输要求客户端生成脚本并通过STDIO进行通信;确保您的检查器/客户端支持STDIO模式。
- 如果外部包装丢失,
pip install依赖并重新运行。
扩展示例
- 通过装饰功能添加更多工具
@mcp.tool()并返回可序列化的值。 - 为工具添加丰富的元数据(
name=,description=,tags=)以便检查员更好地发现。 - 对于生产,添加日志记录、输入验证和单元测试。