mcp服务开发教程
抽空整理下mcp服务开发到使用的过程,手把手教学,一看就会。
本示例以stdio模式运行,
操作系统支持:Windows 10/11、Linux、macOS,教程以macOS为例
Python:3.13及以上。本文档以3.13.7为例
Python依赖包:”fastmcp>=2.12.3,jsonpath-ng>=1.7.0”
UV:0.5以上
客户端采用cherry studio
功能:json的工具包的mcp服务
uv安装
安装 uv
非常简单,可以使用官方提供的安装脚本,也可以通过pip
来安装。
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# With pip.
pip install uv
创建项目
mkdir json-mcp
cd json-mcp
# 初始化项目
uv init
# 激活虚拟环境
source .venv/bin/activate
# 添加 fastmcp 和 jsonpath-ng 包
uv add fastmcp
uv add jsonpath-ng
这样就完成了项目创建并添加指定包
代码
编写mcp服务代码
vim jsonMcp.py
from fastmcp import FastMCP
from jsonpath_ng import parse
import json
mcp = FastMCP("json-mcp")
@mcp.tool()
def query_json(json_str: str, jsonpath: str) -> str:
"""
使用 JSONPath 解析 JSON 字符串,并返回匹配结果。
"""
try:
data = json.loads(json_str)
expr = parse(jsonpath)
matches = [match.value for match in expr.find(data)]
return json.dumps(matches, ensure_ascii=False, indent=2)
except Exception as e:
return f"解析出错: {e}"
def main(): # 添加 main 函数
print("可用的 FastMCP 方法:", dir(mcp))
mcp.run(transport='stdio')
if __name__ == "__main__":
mcp.run(transport='stdio')
运行mcp服务
编写好服务代码后,运行一下看。
uv run jsonMcp.java
安装 MCP Inspector
MCP Inspector 是一款用于测试和调试 MCP(Model Context Protocol)服务器的可视化工具。它提供了一个用户友好的界面,帮助开发者更容易地监控和管理 MCP 服务器的状态和数据。
使用mcp inspector来调试下刚开发的json mcp服务。
克隆仓库
git clone https://github.com/modelcontextprotocol/inspector.git
cd inspector
安装依赖
npm install
启动项目
npm start
在浏览器中输入 http://localhost:6274
(默认端口),即可访问 MCP Inspector 的客户端 UI。
调试
使用stdio模式,命令 uv 参数: run jsonMcp.py
启动完后可以在右侧界面选择对应的tool
输入对应的参数即可完成调试
客户端配置
mcp客户端以cherry studio为例,其他客户端配置类似。
mcp服务配置
打开cherry studio
[设置]->[mcp]->[添加服务器],选择从json导入
将以下json,复制到json配置窗口。(注意需要修改mcp服务实际所在的目录)
{
"mcpServers": {
"json-mcp": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--project",
"/Users/ghf/Downloads/mcp/json-mcp",
"/Users/ghf/Downloads/mcp/json-mcp/jsonMcp.py"
]
}
}
}
点击确认后,即可在界面看到对应的mcp服务。点击红框选项启用mcp服务。
点击mcp卡片可以查看mcp详细。
大模型调用mcp工具
在cherry studio对话窗口,勾选对应json-mcp的mcp服务后,直接对话。
请根据表达式$.phoneNumbers[*].number 帮我从json中提取对应的内容。json:{“firstName”:”John”,”age”:26,”address”:{“streetAddress”:”naist street”,”city”:”Nara”,”postalCode”:”630-0192”},”phoneNumbers”:[{“type”:”iPhone”,”number”:”0123-4567-8888”},{“type”:”home”,”number”:”0123-4567-8910”}]}