极简版 MCP 工具实现方案

极简版 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:

python 复制代码
'''
	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,把服务注册上去:

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 中确认已启用该服务器:

json 复制代码
{
  "enabledMcpjsonServers": [
    "hello-world"
  ]
}

4. 验证调用

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

复制代码
用 greet 工具跟我打个招呼,我叫小明

返回:

复制代码
你好,小明!欢迎使用 MCP 工具!

项目级 vs 全局

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

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

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

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

相关推荐
星恒随风5 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
金銀銅鐵5 小时前
带您看懂字节码指令(二):空循环里有什么
java·后端·ai编程
吴名氏.7 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
.痞老板.7 小时前
java ee--多线程(进阶)
java·java-ee
可乐ea8 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
深入云栈9 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
唐墨1239 小时前
linux kernel 比较数据大小的宏定义
linux·算法
程序开发阿元9 小时前
密码不进工具:一个独立开发者的服务器凭据管理办法
linux·ssh
wang_shu_mo_ran10 小时前
MyBatis 从入门到进阶(一)
java·spring·mybatis
量化分析码农11 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端