Python FastMCP 模板

用于创建基于Python和FastMCP的模型上下文协议(MCP)服务器的模板,支持STDIO和SSE两种传输协议。

  • by m4tice
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 m4tice/python-fastmcp-tpl

使用说明

Python快速MCP模板

使用Python和FastMCP创建模型上下文协议(MCP)服务器的模板。

概述

此模板为构建支持两种传输协议的MCP服务器提供了基础:

  • 工作室 (默认)-标准输入/输出通信
  • 上海证券交易所 -服务器通过HTTP发送事件

特性

  • 在STDIO和SSE协议之间轻松切换配置
  • 自动 mcp.json 配置生成
  • 示例工具实现(mcp_get_precise_time)
  • 采用模块化组件的清洁项目结构

文件结构

├── mcp_server.py                    # Main MCP server application
├── mcp_settings.py                  # Configuration settings
├── mcp_transport_configurator.py    # Auto-configures mcp.json
├── mcp_util.py                      # Utility functions (add your tools here)
├── requirements.txt                 # Python dependencies
└── README.md                        # This file

设置

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 配置传输协议: 编辑 mcp_settings.py 选择您的传输协议:

    SETTINGS = {
        PROTOCOL : STDIO,  # or SSE
        PORT     : "5500"  # only used for SSE
    }
    

传输协议

STDIO(默认)

  • 使用标准输入/输出进行通信
  • 适用于与支持流程生成的客户端直接集成
  • 为VS Code MCP扩展自动生成配置

SSE(服务器发送事件)

  • 使用服务器发送事件进行基于HTTP的通信
  • 在可配置端口上运行(默认值:5500)
  • 适用于基于web的集成或防火墙限制适用的情况

运行服务器

方法1:直接执行(推荐)

python mcp_server.py

这将:

  1. 自动配置相应的 mcp.json 文件
  2. 使用所选传输协议启动服务器

方法2:仅配置

只需更新 mcp.json 不启动服务器的配置:

python mcp_transport_configurator.py

配置文件

服务器自动生成 .vscode/mcp.json 根据您的协议选择。

关于生成配置的注意事项

  • 配置器写入 .vscode/mcp.json 进入当前工作 目录(cwd)。生成的配置嵌入了VS代码 占位符 ${workspaceFolder} (不是 ${cwd})在命令/args/env中 条目,因此VS Code在以下情况下解析相对于工作区的路径 MCP扩展运行代理。
  • 对于STDIO模式,配置器会选择一个适合操作系统的Python可执行文件 里面 .venv:
    • 窗户: .venv\\Scripts\\python.exe
    • macOS/Linux: .venv/bin/python

路径分隔符注释

  • 配置器在构建时使用Python路径实用程序 包含字符串的占位符。在Windows上,这会导致反斜杠 (\)在生成的JSON值内;在它使用的POSIX系统上 正斜杠(/)。因为VS Code会扩展 ${workspaceFolder} 在 运行时、混合或平台特定的分隔符可能出现在 扩张。如果您需要工作区中完全规范化的路径 配置时,请考虑以下任一情况:
    • 在JSON中使用正斜杠(例如。 ${workspaceFolder}/.venv/...),或
    • 在中使用每个平台的覆盖 launch.json/配置块。

STDIO配置(示例)

Windows(配置程序在Windows上运行时可能产生的结果):

{
    "servers": {
        "my-mcp-server": {
            "command": "${workspaceFolder}\\.venv\\Scripts\\python.exe",
            "args": ["${workspaceFolder}\\agent_tpl\\mcp_server.py"],
            "env": {
                "PYTHONPATH": "${workspaceFolder}"
            }
        }
    }
}

macOS/Linux(配置器在POSIX上运行时可能产生的结果):

{
    "servers": {
        "my-mcp-server": {
            "command": "${workspaceFolder}/.venv/bin/python",
            "args": ["${workspaceFolder}/agent_tpl/mcp_server.py"],
            "env": {
                "PYTHONPATH": "${workspaceFolder}"
            }
        }
    }
}

SSE配置(示例)

{
    "servers": {
        "my-sse-mcp-server": {
            "type": "sse",
            "url": "http://127.0.0.1:5500/sse"
        }
    }
}

添加您自己的工具

  1. 在中实现您的功能 mcp_util.py
  2. 在中添加MCP工具包装 mcp_server.py 使用 @app.tool() 装饰器

例子:

# In mcp_util.py
def my_custom_function(param1, param2):
    """Your custom logic here"""
    return f"Result: {param1} + {param2}"

# In mcp_server.py
@app.tool()
def my_custom_tool(param1: str, param2: str):
    """
    Description of what this tool does
    """
    return my_custom_function(param1, param2)

故障排除

常见问题

  1. 端口已在使用中(SSE模式):

    • 更改端口 mcp_settings.py
    • 检查是否有其他服务正在使用该端口
  2. Python路径问题(STDIO模式):

    • 确保您使用的是虚拟环境
    • 验证生成的Python路径 mcp.json
  3. 模块导入错误:

    • 检查是否安装了所有依赖项
    • 验证PYTHONPATH是否设置正确

日志和调试

  • STDIO模式:检查VS代码MCP扩展日志
  • SSE模式:服务器日志打印到控制台

示例提示

Tell me the precise time (using MCP Tools).

许可证

此模板按原样提供,用于教育和发展目的。

作者

GUU8HC