极简版 MCP 工具实现方案

用一个最小示例演示如何实现并注册一个 MCP 工具(greet),供 Claude Code 调用。

目录结构

mcp_test/
├── .claude/
│   ├── settings.json        # 项目级 MCP 配置
│   └── settings.local.json  # 本地授权(允许启用该服务器)
├── .mcp.json                # 项目级 MCP 服务器定义
├── .venv/                   # Python 虚拟环境
├── hello_mcp.py             # MCP 服务端实现
└── readme.md

实现步骤

1. 编写 MCP 服务端

新建 hello_mcp.py:

'''
	MCPServer 这个库
	使用 pip install mcp
	装一下
'''
from mcp.server import MCPServer 

server = MCPServer("hello-world")


@server.tool(description="向某人打招呼")
def greet(name: str) -> str:
    """向某人打招呼"""
    return f"你好,{name}!欢迎使用 MCP 工具!"


if __name__ == "__main__":
    server.run()  # 默认 stdio 传输

要点:

  • MCPServer("hello-world") 创建服务实例,名称需与配置文件中的 key 一致。
  • @server.tool() 装饰器把函数暴露为 MCP 工具,工具名即函数名 greet。
  • 参数 name: str 会自动映射为工具的入参 schema,类型标注不可省略。
  • server.run() 默认使用 stdio 传输,由客户端拉起子进程通信。

2. 注册到 MCP 配置

新建 .mcp.json,把服务注册上去:

{
  "mcpServers": {
    "hello-world": {
      "type": "stdio",
      "command": "D:/cursor-workspace/mcp_test/.venv/Scripts/python.exe",
      "args": ["D:/cursor-workspace/mcp_test/hello_mcp.py"]
    }
  }
}

要点:

  • command 指向虚拟环境中的 Python 解释器,确保 mcp 依赖可用。
  • args 传入服务端脚本路径。
  • type 固定为 stdio,表示通过标准输入输出通信。

3. 授权启用

在 .claude/settings.local.json 中确认已启用该服务器:

{
  "enabledMcpjsonServers": [
    "hello-world"
  ]
}

4. 验证调用

重启会话后即可使用该工具,例如:

用 greet 工具跟我打个招呼,我叫小明

返回:

你好,小明!欢迎使用 MCP 工具!

项目级 vs 全局

以上均为项目级方案,配置写在项目根目录,随仓库共享给团队成员。

若希望全局可用(所有项目都能调用),把 mcpServers 配置注册到 ~/.claude/settings.json 中即可:

{
  "mcpServers": {
    "hello-world": {
      "type": "stdio",
      "command": "/绝对路径/.venv/Scripts/python.exe",
      "args": ["/绝对路径/hello_mcp.py"]
    }
  }
}

全局配置中的路径需要使用绝对路径,否则在不同项目下无法定位脚本。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐