AI MCP 服务器示例(FastMCP 实现)

使用说明内容(Markdown格式)

  • 项目简介

    • 该仓库包含可直接运行的 MCP 服务器实现示例,使用 FastMCP 库暴露一组工具函数(如获取构建信息、获取最近构建等),并演示如何以两种传输模式提供 MCP 服务:本地 STDIO 和 HTTP 服务端口。
    • 核心代码位于 12_mcp/ 目录下的两个示例脚本:
      • 01_local-mcp-server-fastmcp.py:本地 STDIO 传输的 MCP 服务器
      • 02_http-mcp-server-fastmcp.py:HTTP 传输的 MCP 服务器
    • 03_run_with_docker.md 提供了在 Docker 环境中部署的参考。
  • 主要功能点

    • 使用 FastMCP 声明工具(@mcp.tool())并暴露服务器端功能
    • 支持两种传输模式:stdio(本地通信,适合集成开发环境)与 http(对外暴露为 HTTP 服务)
    • 提供示例工具函数,例如获取构建信息、获取最后一次构建等
    • 代码结构自包含、可直接运行,便于学习 MCP 服务的搭建与暴露工具的模式
  • 安装步骤

    • 准备环境
      • 安装 Python 3.x
      • 建立并激活虚拟环境(示例中常用:python3 -m venv venv,然后 source venv/bin/activate)
    • 安装依赖
      • 运行:pip install -r requirements.txt
    • 运行服务器
      • 本地 STDIO 服务器:
        • 运行脚本:python3 12_mcp/01_local-mcp-server-fastmcp.py
        • 服务器名称在代码中设为 build-server-local,传输为 STDIO
      • HTTP 服务器:
        • 运行脚本:python3 12_mcp/02_http-mcp-server-fastmcp.py
        • 服务器名称在代码中设为 build-server-http,传输为 HTTP,监听 0.0.0.0:8000,路径 /mcp
  • 服务器配置(给 MCP 客户端的配置信息,JSON 格式) 说明:MCP 客户端需要知道启动服务器的命令及参数,以便建立连接。下面提供两个配置实例,分别对应 STDIO 与 HTTP 服务。

{ "servers": [ { "server_name": "build-server-local", "command": "python3", "args": ["12_mcp/01_local-mcp-server-fastmcp.py"], "transport": "stdio" // 本地 STDIO 通信,直接通过进程的标准输入输出建立 MCP 连接 }, { "server_name": "build-server-http", "command": "python3", "args": ["12_mcp/02_http-mcp-server-fastmcp.py"], "transport": "http", "host": "0.0.0.0", "port": 8000, "path": "/mcp" // 服务将通过 HTTP 提供 MCP 端点 } ] }

  • 基本使用方法

    • 通过 STDIO 的 MCP 服务器
      • 启动后,MCP 客户端直接与运行中的进程进行标准输入输出通信
      • 客户端可以通过 MCP 协议向该服务器发送请求并接收响应 -通过 HTTP 的 MCP 服务器
      • 启动后,MCP 客户端通过 HTTP 请求与服务交互,适合在分布式环境中使用
    • 两种模式都暴露了工具函数(如获取构建信息、最近构建等),客户端可按需组合调用
  • 额外信息

    • 01_local-mcp-server-fastmcp.py 的 server 名称为 build-server-local,暴露的工具包括 get_build_information、get_last_build
    • 02_http-mcp-server-fastmcp.py 的 server 名称为 build-server-http,暴露的同样工具集合,额外通过 HTTP 端口对外提供 MCP 服务
    • 03_run_with_docker.md 提供在 Docker 环境下的部署思路,便于在云端或容器化环境快速部署
  • 运行与测试建议

    • 在本地开发环境中,优先使用 STDIO 版本进行调试,确保工具函数能够正确返回 JSON 字符串
    • 在需要对外暴露时,使用 HTTP 版本,并遵循网络安全最佳实践(防火墙、端口暴露策略等)
    • 查看 README 的使用说明,结合示例脚本逐步理解 MCP 协议下的服务暴露流程

服务器信息