Mindket

把 MCP 服务器接入 Claude Desktop、Cursor 和 VS Code

黑色横幅,标题是“MCP 实战课”,下面一行写着“用 Python 或 TypeScript 写 MCP 服务器,测试并接入”。

这三个应用接入本地 MCP 服务器的方式相同:在 JSON 配置文件里写一条命令和它的参数。Claude Desktop 读 claude_desktop_config.json,Cursor 读 .cursor/mcp.json,两者都用 mcpServers;VS Code 读 .vscode/mcp.json,用的是 servers。路径要写绝对路径,写完再重新加载应用,让它读到这个文件。

本节内容

  • 你会把同一个本地服务器注册到 Claude Desktop、Cursor 和 VS Code 里,并清楚每个应用的配置放在哪里。
  • 启动命令和参数在三个应用里是一样的,只有配置文件、顶层键和重新加载的方式不同。
  • Claude Desktop 和 Cursor 用 mcpServers。VS Code 自己的格式用 servers,而且每个条目都要写 type。
  • 远程服务器的做法不同。Claude Desktop 把它们当作自定义连接器来添加。
全部课程
本页目录
  1. 一条启动命令,三个配置文件
  2. Claude Desktop:claude_desktop_config.json
  3. Cursor:mcp.json
  4. VS Code:.vscode/mcp.json
  5. 本地服务器和远程服务器的设置方式不同
  6. 连接不是你写的服务器之前
  7. VS Code 的 Agent Plugins,和 Kenton Varda 谈 MCP 认证
  8. 常见错误
  9. 动手试试
  10. 下一课:Claude API 课程
  11. 自测一下
  12. 常见问题
  13. 资料来源

一条启动命令,三个配置文件

宿主只需要你给它一样东西:一条能当子进程启动、并通过 stdin 和 stdout 对话的命令。第 1 课和第 2 课的服务器都已经有了。TypeScript 服务器在项目文件夹里用 npx tsx src/index.ts 启动,Python 的用 uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py。每个应用都要求把这条命令拆成 command 和 args 两部分,写进各自的文件。

Claude Code 用 claude mcp add 接入同一条命令,这篇文章已经讲过,所以这一课不再重复。

  1. 先在终端里运行这条启动命令。正常的 stdio 服务器什么都不输出,或者只往 stderr 写一行,然后停在那里等待。要是出现报错堆栈或者立刻退出,就先把问题修好,再去动任何应用。
  2. 按下面的表格打开应用的配置文件,文件不存在就新建一个。
  3. 在应用的顶层键下加上这个服务器,写 command 和 args。除了应用会替你解析变量的地方,其余路径都写绝对路径。
  4. 重新加载应用。Claude Desktop 要彻底退出再重启。VS Code 里,在 MCP: List Servers 中重启这个服务器。Cursor 里,服务器和它的开关在侧边栏的 Customize 下面。
  5. 问一个只有这个服务器才知道的问题,比如德克萨斯州目前有哪些天气预警,应用询问时批准这次工具调用。
每个应用把 MCP 服务器放在哪里
应用配置文件顶层键
Claude DesktopmacOS:~/Library/Application Support/Claude/claude_desktop_config.json,Windows:%APPDATA%\Claude\claude_desktop_config.json,Linux:~/.config/Claude/claude_desktop_config.jsonmcpServers
Cursor某个项目里的 .cursor/mcp.json,或者对所有项目生效的 ~/.cursor/mcp.jsonmcpServers
VS Code工作区里的 .vscode/mcp.json,或者用户配置文件夹里的 mcp.jsonservers

Claude Desktop:claude_desktop_config.json

从系统菜单栏里的 Claude 菜单打开 Settings,不是聊天窗口里面的设置。在 Developer 标签页里点 Edit Config。文件不存在时它会帮你创建,然后打开它。把服务器加到 mcpServers 下面,保存,再彻底退出 Claude Desktop 并重新打开。

下面这段是 MCP 文档里的第一个例子,文件系统服务器,写的是 macOS 的路径。Windows 的路径在 JSON 里要写双反斜杠。想接入天气服务器,就换成你自己服务器的启动命令。需要密钥的服务器,把密钥写在 args 旁边的 env 对象里。

如果你只想用现成的服务器,而不是自己写,Anthropic 的帮助中心介绍了桌面扩展,也就是能单击安装的本地服务器包。

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/Users/username/Downloads"
      ]
    }
  }
}

Cursor:mcp.json

Cursor 读取项目里的 .cursor/mcp.json 和主目录里的 ~/.cursor/mcp.json,两个文件里都是同样的 mcpServers 对象。下面这段是第 2 课的天气服务器,用的是 TypeScript SDK 指南给出的 Cursor 条目。

Cursor 会解析 command、args、env、url 和 headers 里的变量。${workspaceFolder} 是项目根目录,${env:NAME} 读取环境变量,所以项目里的文件可以不写绝对路径,也能让密钥不出现在文件里。文档里有一处小矛盾:字段表把 type 标为 stdio 服务器的必填项,可 JSON 示例里却没有它。照着示例抄,条目加载不上时先检查这个字段。

Cursor 在运行 MCP 工具之前会先询问,工具名旁边的箭头能展开它的参数。想知道服务器为什么失败,就打开 Output 面板,在下拉菜单里选 MCP Logs。

{
  "mcpServers": {
    "weather": {
      "command": "npx",
      "args": ["tsx", "src/index.ts"]
    }
  }
}

VS Code:.vscode/mcp.json

VS Code 自己的格式用 servers,不是 mcpServers,而且每个 stdio 条目都要写明 type。VS Code 的参考页说,它的属性表描述的是 VS Code 自己的格式,不是所有 MCP 客户端共用的结构,所以把 Cursor 的片段原样粘进来是对不上的。下面这段是 TypeScript SDK 指南里的天气服务器条目。

命令面板里的 MCP: Add Server 是较新的引导方式,它的用户级目标是 ~/.copilot/mcp-config.json(设置了 COPILOT_HOME 就改用那里),用的是另一种可移植格式,顶层键是 mcpServers。VS Code 的页面说,.vscode/mcp.json 这个目标仍然可用,只是为了兼容,在引导流程里被标为已弃用。参考页仍然写着它的用法,而且它是支持 inputs 的格式,inputs 会弹出提示让你输入密钥。

在受信任的工作区里,VS Code 的文档说,工作区里的服务器可以不经单独的 MCP 信任提示就启动。运行 MCP: List Servers 能看到服务器的状态,选 Show Output 能看它的日志。

{
  "servers": {
    "weather": {
      "type": "stdio",
      "command": "npx",
      "args": ["tsx", "src/index.ts"]
    }
  }
}

本地服务器和远程服务器的设置方式不同

远程服务器是指放在某个网址上的服务器,而不是你电脑上的程序。Cursor 把它写成 url 加一个 headers 对象,VS Code 写成 type 为 http 并带 url。

Claude Desktop 把远程服务器当作自定义连接器来添加。Anthropic 的帮助文章把通过 claude_desktop_config.json 配置的本地服务器称为另一套机制,连接器的流程是 Connectors,再点 Add custom connector,在里面填名称和服务器的网址。MCP 指南把 Connectors 放在 Settings 下面,Anthropic 的帮助文章则放在 Customize 下面。

每个应用能从配置里读到什么
Claude DesktopCursorVS Code
JSON 文件里的本地服务器是是是
JSON 文件里以 url 条目写的远程服务器在连接器里添加是是
每个项目一个配置文件一个用户级文件是是
密钥写在哪里env 对象${env:NAME}${env:NAME} 或弹出提示

来源:MCP 文档:连接远程 MCP 服务器 (2026年11月4日 查阅);Cursor 文档:Model Context Protocol (2026年11月4日 查阅);VS Code 文档:MCP 配置参考 (2026年11月4日 查阅)

连接不是你写的服务器之前

本地服务器以你的用户账户的权限运行,所以凡是你能手动做的事,它都能做。Claude 帮助中心说,自定义连接器可以连到 Anthropic 没有验证过的服务;Cursor 的文档说,只从可信来源安装服务器,并使用权限受限的 API 密钥;VS Code 的文档说,信任一个仓库之前要先检查它的 MCP 配置,因为 stdio 服务器能运行代码。

要检查哪些地方,MCP 服务器安全吗?这篇文章从头讲了一遍,连接别人写的服务器之前先读它。

VS Code 的 Agent Plugins,和 Kenton Varda 谈 MCP 认证

Visual Studio Code 团队在 2026 年 8 月在 X 上宣布,VS Code 支持 Agent Plugins 1.0:技能、MCP 服务器和 AI 扩展可以打包成一个能直接安装的插件。

GitHub 的更新日志列出了插件的组成:一个 plugin.json、一个 skills/ 文件夹和一个 mcp.json,从插件市场安装。服务器能靠配置文件跑起来之后,做成插件交给同事,他们就不用各自改 JSON 了。

Kenton Varda 是 Cloudflare Workers 的技术负责人。他在 2025 年底在 X 上说,MCP 比 OpenAPI 强的地方在于它把认证讲得很清楚:OpenAPI 支持的认证方式太多,接口描述里的信息也未必够机器人走完认证流程。

同一个服务如果既有用 OAuth 的远程服务器,又有要密钥的本地服务器,选远程的那个,长期有效的密钥就不会留在你的 JSON 文件里。

OpenAPI 支持的认证方式太多,而且接口描述里的信息未必足够让机器人走完认证流程。

Kenton Varda, Cloudflare Workers 技术负责人,引文为译文 · X (2026年11月5日 查阅)
Visual Studio Code(@code)2026 年 8 月 12 日在 X 上发帖:VS Code 现已支持 Agent Plugins 1.0。把你的技能、MCP 服务器和 AI 扩展打包成一个可以安装的插件
Visual Studio Code 在 X 上,2026 年 8 月 12 日
Kenton Varda(@KentonVarda)2025 年 11 月 8 日在 X 上发帖,引用了 Steve Krouse 一条谈 Anthropic 和 Cloudflare 发布 code mode 的帖子:MCP 比 OpenAPI 强的一大优势,是它把认证讲得非常清楚。OpenAPI 支持的认证方式太多,接口描述里的信息也未必够机器人走完认证流程
Kenton Varda 在 X 上,2025 年 11 月 8 日

X 官方嵌入卡片的截图,拍摄于 2026 年 11 月 5 日,时间为 UTC。VS Code 那条帖子被 X 用“Show more”截断了。点击截图可到 X 上打开原帖。

常见错误

  • 写相对路径。宿主从自己的工作目录启动服务器,这个目录可能没有定义,所以光写 ./data 或 weather.py 会失败。请用绝对路径。
  • JSON 有语法错误。MCP 的排错清单第一条就是检查文件的语法。
  • 把一个应用的片段原样粘进另一个应用。顶层键不同,VS Code 自己的格式还要求写 type。
  • 只关掉 Claude Desktop 的窗口,没有退出应用。调试指南说,要彻底退出再重新打开,只关窗口是不够的。
  • 应用找不到命令。指南说,command 字段里可能要写 uv 的完整路径,用 which uv 或 where uv 就能查到。
  • Windows 上,服务器日志里出现提到 ${APPDATA} 的 ENOENT 错误。MCP 文档的办法是,把展开后的 APPDATA 路径加进条目的 env 键,并且全局安装 npm。
去哪里看服务器的日志
应用日志在哪里
Claude Desktopmcp.log 以及每个服务器一个 mcp-server-NAME.log,位置:macOS 在 ~/Library/Logs/Claude,Windows 在 %APPDATA%\Claude\logs,Linux 在 ~/.config/Claude/logs
CursorOutput 面板,下拉菜单里选 MCP Logs
VS CodeMCP: List Servers,选中服务器,再选 Show Output

动手试试

  • 把第 1 课或第 2 课的天气服务器注册到一个应用里,然后问问德克萨斯州以外某个州的预警。
  • 打开那个应用的日志,找到服务器启动的那一行。
  • 把同一个条目搬到第二个应用里,记下你改动的每一处。

下一课:Claude API 课程

MCP 课程到这里就结束了。你用两种语言写了服务器,用 Inspector 测试了它,还把它接入了三个应用。想拿自己的服务器和现成的比一比,可以逛逛 Mindket 上的 MCP 服务器。

自然的下一步是 Claude API 课程。它从第一次 API 调用讲起,再讲工具调用、提示词缓存和智能体循环,你会亲手写出让模型请求工具、再由代码去执行的那一半。

自测一下

  1. VS Code 的 .vscode/mcp.json 用哪个顶层键来放 MCP 服务器?

    查看答案

    B. servers VS Code 自己的格式用 servers,每个 stdio 条目还要写明 type,而 Claude Desktop 和 Cursor 用 mcpServers。

  2. 你改了 claude_desktop_config.json,服务器却没有出现,该怎么办?

    查看答案

    D. 彻底退出 Claude Desktop,再重新打开 只关窗口是不够的,应用必须彻底退出再重新打开,才会读到这个文件。

  3. 一个服务器条目里只写了 weather.py,前面没有文件夹,会出什么问题?

    查看答案

    A. 宿主从自己的工作目录启动服务器,相对路径可能解析不到 宿主启动服务器时的工作目录可能没有定义,所以路径要写绝对路径。

  4. 在 Claude Desktop 里,远程 MCP 服务器该怎么添加?

    查看答案

    C. 添加成自定义连接器,路径是 Connectors,再点 Add custom connector Claude Desktop 把远程服务器当作自定义连接器,这是和本地配置文件不同的另一套机制。

常见问题

怎样把远程 MCP 服务器加到 Claude Desktop?

把它加成自定义连接器,而不是去改 JSON 文件。打开 Connectors,点 Add,再点 Add custom connector,填入服务器的名称和网址。免费计划最多只能添加一个自定义连接器。

VS Code 能用我在 Claude Desktop 或 Cursor 里设置好的服务器吗?

它能发现这些服务器。chat.mcp.discovery.enabled 这个设置控制是否从其他应用发现,VS Code 的参考页说,对 Claude Desktop 和 Cursor,它默认是关闭的。

一个 MCP 配置文件能在所有应用里通用吗?

做不成一个通用文件,因为每个应用包在条目外面的那一层不一样。把启动命令和参数记在项目的 README 里,接入哪个应用,就按那个应用的格式粘进去。

改完配置一定要重启应用吗?

Claude Desktop 要,它只在启动时读取这个文件。VS Code 在 MCP: List Servers 菜单里有 Restart Server,它的文档把它列为配置改动之后要用的操作。Cursor 的文档讲的是 Customize 下每个服务器的开关。

怎样给本地服务器一个 API 密钥?

在 Claude Desktop 里,给服务器的条目加一个 env 对象,把密钥放进去。Cursor 支持 ${env:API_KEY} 这样的引用,能让密钥不出现在文件里。VS Code 可以通过 inputs 条目来询问,把 password 设为 true,再用 ${input:id} 引用。

Claude Code 用的是同一个配置文件吗?

不是。Claude Code 用 claude mcp add 命令添加服务器,Mindket 上讲给 Claude Code 添加 MCP 服务器的那篇文章有完整的讲解。

资料来源

  1. MCP docs: Connect to local MCP servers (2026年11月4日 查阅)https://modelcontextprotocol.io/docs/2026-07-28/develop/connect-local-servers
  2. MCP docs: Connect to remote MCP servers (2026年11月4日 查阅)https://modelcontextprotocol.io/docs/2026-07-28/develop/connect-remote-servers
  3. MCP docs: Debugging (2026年11月4日 查阅)https://modelcontextprotocol.io/docs/2026-07-28/tools/debugging
  4. Claude Help Center: Get started with custom connectors using remote MCP (2026年11月4日 查阅)https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
  5. Claude Help Center: Getting started with local MCP servers on Claude Desktop (2026年11月4日 查阅)https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop
  6. Cursor docs: Model Context Protocol (2026年11月4日 查阅)https://cursor.com/docs/mcp
  7. VS Code docs: MCP configuration reference (2026年11月4日 查阅)https://code.visualstudio.com/docs/agents/reference/mcp-configuration
  8. VS Code docs: Manage and troubleshoot MCP servers (2026年11月4日 查阅)https://code.visualstudio.com/docs/agents/run/manage-mcp-servers
  9. VS Code docs: Add and manage MCP servers (2026年11月4日 查阅)https://code.visualstudio.com/docs/agent-customization/mcp-servers
  10. MCP TypeScript SDK docs: Plug into a real host (2026年11月4日 查阅)https://github.com/modelcontextprotocol/typescript-sdk/blob/main/docs/get-started/real-host.md
  11. MCP Python SDK docs: Connect to a real host (2026年11月4日 查阅)https://py.sdk.modelcontextprotocol.io/get-started/real-host/
  12. GitHub changelog: Agent Plugins 1.0 in VS Code, Copilot CLI and the Copilot app (2026年11月5日 查阅)https://github.blog/changelog/2026-08-12-agent-plugins-1-0-in-vs-code-copilot-cli-and-the-copilot-app/
  13. Visual Studio Code on X: Agent Plugins 1.0 (2026年11月5日 查阅)https://x.com/code/status/2087640853783232562
  14. Kenton Varda on X: MCP is very clear about auth (2026年11月5日 查阅)https://x.com/KentonVarda/status/1987208904724652273

分享本节课

挑一个服务器来接入

到 Mindket 上浏览 MCP 服务器,用你刚写好的配置接入一个。

浏览 MCP 服务器

本节课的 Markdown 版本 · MCP 实战课:写、测试并接入 MCP 服务器 · 全部课程