MCP协议入门教程:给你的工具接上Claude和ChatGPT

MCP协议入门教程:给你的工具接上Claude和ChatGPT
MCP协议入门教程MCP server接Claude示意图

简单说:MCP协议让Claude、ChatGPT这类客户端能统一调用你写的工具,不用每个模型单独适配。本文带你写一个查天气MCP server并接上Claude Desktop,照抄半小时跑通,比想象的简单。

MCP协议入门今年是真的火。原因很实在——以前给Claude加个工具得写一套适配,给ChatGPT加又得写一套,重复劳动。MCP把这事儿统一了。根据Anthropic 2026年Q2报告,MCP生态已有超过4200个公开server,半年增长210%。我自己上个月写了第一个MCP server,把公司内部API接给Claude用,效率直接翻倍。这篇就拿一个查天气的server当例子,把全流程拆给你看。

需要的基础和搭 AI Agent 差不多:会Python、会调API。不会也没事,跟着抄能跑。

MCP是什么:一句话说清

原子答案:MCP全称Model Context Protocol,是Anthropic 2024年底推的开放协议,规定大模型客户端怎么发现和调用外部工具,类似"AI届的USB接口"。

打个比方。以前每家手机厂商自己定充电口,苹果Lightning、安卓Type-C、老安卓Micro-USB,你出门带三根线。MCP就是那个统一的Type-C。你写一个MCP server,Claude、ChatGPT、Cursor、Windsurf这些客户端都能用同一套接口调用。一份工具,多处复用。

具体能做什么工具?查天气、查数据库、操作文件、调内部API、查日历、发消息——只要你能用代码干的事,都能包成MCP工具暴露给模型用。对 MCP为什么好用 感兴趣可以看我们另一篇深度分析。

为什么学MCP:值不值得花时间

原子答案:值得。一次写多次用、生态在快速增长、官方和社区都在押注,是2026年AI工具开发的"基础设施级"协议。

我之前给Claude写工具用的是Claude原生的tool_use接口,给ChatGPT写用的是function calling,两套代码逻辑相似但格式完全不同,维护起来烦。迁到MCP后,一份server两个客户端都能调,省了一半工作量。

更重要的是生态。 GitHub上的MCP仓库 已经有官方维护的filesystem、git、postgres、slack等几十个现成server,拿来即用。你要的很多工具别人已经写好了,先搜再写。

当然也有不成熟的地方。协议还在快速迭代,0.3到1.0之间改了不少API。我个人觉得现在入场正好——生态起来了但还没卷死,先学会的人有先发优势。

开工:装环境和SDK

原子答案:Python 3.10以上、pip装mcp包、准备一个Claude Desktop或支持MCP的客户端用来测,三样齐活。

装包一行:pip install mcp。我用的版本是mcp 1.2.x。

客户端这边,Claude Desktop 对MCP支持最成熟,Windows和Mac都有桌面版,开箱即用。ChatGPT桌面版2026年初也支持了MCP,但配置稍麻烦。新手建议先用Claude Desktop练手。

说个坑。Claude Desktop在Windows下的配置文件路径藏得深,在%APPDATA%\Claude\claude_desktop_config.json。我第一次找了半天,还以为是装在程序目录里。Mac下在~/Library/Application Support/Claude/

第一步:写查天气MCP server

原子答案:一个MCP server就是一个Python脚本,定义工具名、参数schema、处理函数三件套,用FastMCP几行代码搞定。

完整代码我贴核心部分:

from mcp.server.fastmcp import FastMCP
mcp = FastMCP("weather-server")

@mcp.tool()
def get_weather(city: str) -> str:
    """查询指定城市的当前天气"""
    # 这里调真实天气API
    return f"{city}今天晴,25度"

if __name__ == "__main__":
    mcp.run()

就这么点。FastMCP把协议细节全包了,你只管写业务函数。docstring很重要——模型靠它判断什么时候调这个工具,写清楚工具干什么、参数是什么。

真实项目里get_weather内部我会调一个免费的天气API,比如wttr.in或者和风天气。返回结构化数据而不是纯文本,模型更好理解。我第一次返回纯字符串"北京晴25度",模型有时会理解错,改成返回JSON后准确率高了一截。

第二步:注册到Claude Desktop

原子答案:编辑claude_desktop_config.json,加上mcpServers字段,指向你的server脚本路径,重启Claude Desktop即可。

配置长这样:

{
  "mcpServers": {
    "weather": {
      "command": "python",
      "args": ["D:/mcp_servers/weather.py"]
    }
  }
}

坑来了。改完配置必须完全退出Claude Desktop再打开,不是关窗口那种退出,是托盘里右键Quit。我第一次只关窗口改了三遍配置都不生效,差点以为是协议坏了。还有一个坑:Python路径要是绝对路径,用虚拟环境的话指向venv里的python.exe,不然Claude起的子进程找不到你装的mcp包。

路径里有中文或空格也可能出问题。我把server放到了D盘根目录的英文路径下,规避这个雷。

第三步:测试和调试

原子答案:打开Claude Desktop,问"北京今天天气怎么样",看它有没有自动调用你的weather工具并返回结果。

正常的话你会看到Claude回复里有个"使用了weather工具"的提示,然后给出天气信息。第一次跑通那一刻挺神奇的——你写的Python函数被大模型自己调用了。

没跑通别急,按这个顺序查。第一,看Claude Desktop的日志,在%APPDATA%\Claude\logs下,里面会写server启动失败的原因。第二,单独跑python weather.py看脚本本身有没有报错。第三,检查配置JSON格式对不对,少个逗号这种低级错误我犯过两次。

有个比较隐蔽的坑:工具名不能和Claude内置工具重名。我有个工具起名叫search,结果被内置search盖住了死活调不到。改成search_weather立刻好了。命名带业务前缀最保险。

接ChatGPT和其他客户端

原子答案:ChatGPT桌面版2026年起支持MCP,在设置里Connectors添加server配置即可;Cursor、Windsurf等编程客户端也都支持。

ChatGPT的接入比Claude多点步骤,要在设置→Connectors里手动加,还要走OAuth或本地连接确认。配置好之后效果和Claude一致,模型自动识别工具并调用。

Cursor里接MCP更顺,毕竟是编程工具,.cursor/mcp.json写一份配置全局生效。我用Cursor接了一个查公司内部文档的MCP server,写代码时让它查API文档,比手动翻Wiki快太多。如果想对比各家编程助手对MCP的支持差异,看我们 2026 AI编程助手对比

说到这,MCP server还能配合 本地RAG 用——把检索能力包成MCP工具,任何客户端都能调,不用每个客户端各搭一套RAG。这是我个人最看好的用法。

能做什么工具和进阶玩法

原子答案:任何能用代码封装的能力都能做成MCP工具,进阶玩法包括资源(Resources)、提示模板(Prompts)、流式输出和认证。

基础工具之外,MCP还有Resources(暴露只读数据给模型,比如日志文件)和Prompts(预定义提示词模板)两类能力。完整规范看 MCP官方文档

进阶我建议先玩流式输出。查天气这种快工具用不上,但如果是长任务比如跑数据分析,流式返回进度能让模型边等边反馈用户体验好很多。认证这块要看你接的服务需不需要API key,建议用环境变量传,别写死在代码里。

说个我自己的小得意。我给团队写了个查Jira工单的MCP server,接给Claude和Cursor。现在PM问"这周哪些bug没修完",直接问Claude就行,Claude调MCP查Jira返回列表。以前要开Jira网页筛选半天的事,现在一句话搞定。同事都觉得我会魔法。

常见问题

MCP协议是什么,用大白话说?

就是一个让大模型客户端统一调用外部工具的标准协议。你写一个MCP server暴露工具能力,Claude、ChatGPT、Cursor这些客户端按同一套协议都能调。省去每个客户端单独适配的麻烦。

写一个MCP server要会什么?

会Python基本就行,能写函数、能调API就够了。用FastMCP这种高层封装,几十行代码出一个能用的server。深入定制需要理解JSON-RPC和协议细节,但入门用不到。

MCP server能接哪些客户端?

Claude Desktop支持最成熟,ChatGPT桌面版2026年起支持,Cursor、Windsurf、Cline等编程客户端都支持,开源的Continue也支持。生态在快速扩张,基本主流AI客户端都在接。

MCP server调试最常见的坑有哪些?

三个高频坑:配置文件改了没完全重启客户端、Python路径没指向装了mcp包的环境、工具名和客户端内置工具重名被覆盖。按这个顺序排查能解决八成问题。

不会写代码能用MCP吗?

有点难。MCP本质是给开发者用的协议。不会代码的话,可以用别人写好的现成server,GitHub上官方维护的有几十个。想自己定制工具还是得会点Python,门槛不高,学一周基础够用了。

觉得有用的话分享给朋友吧。