MCP协议示例脚本

提供基于MCP协议的示例脚本,包括计算器和RSS搜索功能,适用于快速开发和集成MCP协议。

  • by godson2607
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 godson2607/MCP-Server

使用说明

项目自述

此存储库包含几个最小MCP(模型上下文协议)示例脚本,演示了 fastmcp 和 fastapi 集成,加上一个小型RSS提要搜索器。文件包括:

  • fastapi_mcp_calculator.py --FastAPI应用程序公开计算器端点,转换为MCP fastapi_mcp.作为标准FastAPI服务运行(示例使用 uvicorn 上 localhost:8002).
  • fastmcp_calculator.py — fastmcp STDIO传输示例。注册简单的计算器工具,并使用STDIO(默认)运行MCP服务器。
  • fastmcp_calculatorv2.py — fastmcp HTTP传输示例。注册相同的计算器工具,但将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=)以便检查员更好地发现。
  • 对于生产,添加日志记录、输入验证和单元测试。