把MCP Server接入Claude Desktop和Cursor
摘要:详细介绍MCP Server接入Claude Desktop和Cursor的完整配置流程,包含claude_desktop_config.json编写、stdio传输配置、常见连接问题排查,让AI工具调用你的自定义MCP工具。
把MCP Server接入Claude Desktop和Cursor
上一篇我们写了个计算器Server,在MCP Inspector里跑通了。但Inspector只是调试工具,真正用起来,得让AI客户端认识你的Server。我当时第一次接Claude Desktop,配了半天没反应,重启了五六次才搞明白是路径写错了。Cursor那边更折腾,配置文件位置找了半天。这篇我把两个主流客户端的接入方法一次性讲清楚,附上我踩过的连接坑和排查思路。
我们继续用上一篇的calc_server.py,看看它在Claude Desktop和Cursor里被AI调用的完整效果。
接入Claude Desktop
Claude Desktop是接入MCP最顺手的客户端,原生支持,配置文件就一个。
先确认你装了Claude Desktop,并且更新到最新版。旧版本可能没有MCP支持入口。
配置文件的位置按系统不同。
- macOS,
~/Library/Application Support/Claude/claude_desktop_config.json - Windows,
%AppData%\Claude\claude_desktop_config.json
Windows下完整路径一般是C:\Users\你的用户名\AppData\Roaming\Claude\claude_desktop_config.json。如果文件不存在,自己建一个。
打开Claude Desktop,进设置,找到Developer或开发者选项,点Edit Config,它会自动用默认编辑器打开这个json文件。这比手动找路径方便。
配置文件的内容长这样。
{"mcpServers":{"calculator":{"command":"python","args":["C:\\ABSOLUTE\\PATH\\TO\\calc_server.py"]}}}这里有几个容易出错的细节,我逐个说。
第一,路径必须用绝对路径。Claude Desktop启动Server时的工作目录不是你的项目目录,用相对路径会找不到文件。
第二,Windows路径里的反斜杠要写两遍。JSON里单个反斜杠是转义符,C:\Users\xxx会解析出错。要么写成C:\\Users\\xxx,要么直接用正斜杠C:/Users/xxx,两种都行。
第三,command字段填的是启动命令。如果你用uv管理,建议写成下面这样更稳。
{"mcpServers":{"calculator":{"command":"uv","args":["--directory","C:\\projects\\my-first-mcp","run","calc_server.py"]}}}用uv的好处是它会自动激活虚拟环境,不用你操心Python解释器路径。如果你直接用python,要确保这个python能找到mcp包,否则启动即报错。
第四,如果uv或python不在系统PATH里,Claude Desktop会启动失败。这种情况把command换成可执行文件的完整路径,比如C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\python.exe。Windows下可以用where uv或where python查到完整路径。
保存配置文件后,彻底退出Claude Desktop再重新打开。注意是退出,不是最小化。Mac上Cmd+Q退出,Windows右键托盘图标退出。重启后,在对话界面的输入框附近会多出一个工具图标,展开能看到你配置的Server和它提供的工具。
试着问一句"帮我算一下12的阶乘"。Claude会识别出需要调用factorial工具,弹出一个确认提示,你点允许,它就调用并返回"12 的阶乘是 479001600"。第一次看到AI调用自己写的工具,感觉挺奇妙。
接入Cursor
Cursor的MCP接入稍微绕一点,配置文件位置和Claude Desktop不同。
Cursor支持两种配置范围。一种是全局配置,对所有项目生效,文件在~/.cursor/mcp.json。Windows下是%USERPROFILE%\.cursor\mcp.json,完整路径大概是C:\Users\你的用户名\.cursor\mcp.json。另一种是项目级配置,只对当前项目生效,文件在项目根目录的.cursor\mcp.json。
更简单的办法是走图形界面。打开Cursor,进Settings,找到MCP这一项,点Add new MCP server。它让你填名字、类型选stdio、再填command和args。填完它会自动生成配置文件,省得手动找路径。
不管哪种方式,最终生成的json格式都一样。
{"mcpServers":{"calculator":{"command":"uv","args":["--directory","C:\\projects\\my-first-mcp","run","calc_server.py"]}}}注意Cursor的配置结构跟Claude Desktop几乎一样,都是mcpServers下面挂Server名,再挂command、args、可选的env。所以一份配置基本能两边通用。
如果Server需要环境变量,比如数据库密码、API key,用env字段传入。
{"mcpServers":{"calculator":{"command":"uv","args":["--directory","C:\\projects\\my-first-mcp","run","calc_server.py"],"env":{"SOME_API_KEY":"your-key-here"}}}}保存后重启Cursor。在Cursor的对话窗口里,输入框上方有个工具开关,确认你的calculator Server是启用状态。然后输入"用calculator工具算一下7加8"。Cursor会调用add工具并返回结果。
这里要提醒一个Cursor的限制。Cursor目前主要消费MCP的Tools能力,对Resources和Prompts的支持不如Claude Desktop完整。如果你的Server重度依赖Resources和Prompts,建议优先在Claude Desktop里验证。
调试技巧
接入客户端后经常会遇到连不上的情况。我总结了一套排查流程,按顺序往下查。
第一步,先确认Server本身能独立跑。在终端里直接执行python calc_server.py,它应该阻塞等待输入,不报错。如果一启动就报错,那是Server代码或环境的问题,跟客户端无关。
第二步,检查配置文件JSON格式。JSON对逗号、引号很敏感,多一个少一个都解析失败。把整个文件粘到任意JSON校验工具里检查一遍。我踩过一次坑,最后一个配置项后面多了个逗号,Claude Desktop静默忽略整个文件。
第三步,看客户端日志。Claude Desktop的日志位置,macOS是~/Library/Logs/Claude/mcp.log,Windows是%AppData%\Claude\logs\mcp.log。Server启动失败的原因基本都在这里。Cursor的日志在Settings的MCP面板里能直接看到每个Server的状态和报错。
第四步,用MCP Inspector复现客户端的启动方式。Inspector其实就是个MCP客户端,它连得上,说明Server没问题,问题在客户端配置。Inspector连不上,问题在Server本身。
第五步,注意stdout污染。这个坑上一篇提过,这里再强调。如果你在Server里写了print(),接客户端后Server会启动失败或者调用时断连。日志里会看到JSON解析错误。把所有print改成stderr输出。
完整配置示例
我把两个客户端的完整配置放在一起,方便你对照。假设项目在C:\projects\my-first-mcp,Server文件是calc_server.py。
Claude Desktop的claude_desktop_config.json。
{"mcpServers":{"calculator":{"command":"uv","args":["--directory","C:\\projects\\my-first-mcp","run","calc_server.py"]}}}Cursor的.cursor\mcp.json。
{"mcpServers":{"calculator":{"command":"uv","args":["--directory","C:\\projects\\my-first-mcp","run","calc_server.py"]}}}macOS用户把路径换成/Users/你的用户名/projects/my-first-mcp这种形式,注意用正斜杠,不用双反斜杠。
效果验证
接好后实测一遍。
在Claude Desktop里问"帮我算15加27,再算10的阶乘"。Claude会连续调用两次工具,先add(15, 27)得到"15 加 27 等于 42.0",再factorial(10)得到"10 的阶乘是 3628800"。整个过程你能看到每次调用的确认弹窗,工具名、参数都列得清清楚楚。
在Cursor里问"用计算器工具算一下9的阶乘"。Cursor调用factorial(9),返回"9 的阶乘是 362880"。结果会直接出现在对话里,像AI本来就会算一样。
两个客户端用的是同一份Server代码,一行没改。这就是MCP标准化的好处。
常见问题与避坑
坑一,配置改了但客户端没反应。九成是没彻底重启。Claude Desktop关窗口不算退出,要退出进程。Cursor改了配置也要重启或重新加载MCP。改完配置先彻底退出再打开。
坑二,Windows路径反斜杠没转义。JSON里C:\Users的\U会被当成转义序列,导致路径错误。解决,全部用双反斜杠\\或正斜杠/。这是Windows用户最常踩的坑。
坑三,command找不到。python、uv、npx这些命令不在客户端能找到的PATH里。症状是日志里报"command not found"或类似错误。解决,把command换成完整可执行文件路径,用where命令查。
坑四,虚拟环境没激活导致import失败。直接用python calc_server.py时,如果当前python不是虚拟环境里的,找不到mcp包。解决,用uv的--directory run方式,或者command指向虚拟环境的python,比如C:\projects\my-first-mcp\.venv\Scripts\python.exe。
坑五,多个Server配在一起其中一个出错导致整体加载失败。Claude Desktop对一个Server启动失败有时会影响整个MCP面板不显示。解决,排查时先只配一个Server,确认能跑再加其他的。日志里会标出是哪个Server出的问题。
两个客户端的接入对比
| 对比项 | Claude Desktop | Cursor |
|---|---|---|
| 配置文件 | claude_desktop_config.json | .cursor/mcp.json |
| 配置位置 | AppData或Library下 | 用户目录或项目目录 |
| 图形化配置 | 间接,编辑器打开json | 有图形界面添加 |
| Tools支持 | 完整 | 完整 |
| Resources支持 | 完整 | 较弱 |
| Prompts支持 | 完整 | 较弱 |
| 日志查看 | mcp.log文件 | 设置面板内直接看 |
| 适合验证 | 全部原语 | 主要是工具 |
如果你的Server用了Resources和Prompts,用Claude Desktop验证最全。如果只做工具,两个都行,Cursor还更方便在编码场景里用。
小结
接入客户端的核心就是写对那个JSON配置文件。Claude Desktop和Cursor的配置结构几乎一样,都是mcpServers下挂command和args。最大的几个坑是路径要绝对、Windows反斜杠要转义、command要在PATH里、改完要彻底重启。排查连不上问题,按先验Server、再查JSON、再看日志、最后用Inspector复现的顺序走,基本都能定位。下一节我们写一个真正有用的Server,让AI能查你本地的文件。
相关推荐
- 5分钟跑通你的第一个MCP Server(Python版)
- Claude Desktop集成:配置、调试与最佳实践
- Cursor集成:让AI编程工具调用你的MCP Server