Model Context Protocol

通过 Model Context Protocol(MCP)插件系统,将外部工具和数据源连接到 Cursor。

什么是 MCP?

Model Context Protocol(MCP)是一种开放协议,用于标准化应用如何为大语言模型(LLM)提供上下文和工具。你可以把 MCP 理解为 Cursor 的插件系统——它允许你通过标准化接口,将各种数据源和工具接入 Agent,扩展其能力。

用途

MCP 允许你将 Cursor 连接到外部系统和数据源。这意味着你可以将 Cursor 集成到现有工具和基础设施中,而无需单独告知 Cursor 代码之外的项目结构。

MCP 服务器可以用任何能够输出到标准输出(stdout)或提供 HTTP 接口的语言编写。这种灵活性让你可以用自己喜欢的编程语言和技术栈快速实现 MCP 服务器。

示例

数据库(Databases)
请访问官方 MCP 文档,深入了解该协议的详细信息。
Notion
从 Notion 读取数据,引导 Cursor 实现某个功能。
GitHub
让 Cursor 创建 PR、分支、查找代码等。
Memory
让 Cursor 在你工作时记住并回忆信息。
Stripe
允许 Cursor 创建客户、管理订阅等操作。

架构

MCP 服务器是通过标准协议暴露特定能力的轻量级程序。它们作为 Cursor 与外部工具或数据源之间的中间层。

Cursor 支持两种 MCP 服务器的传输方式:

💻 stdio 传输方式
- 在本地机器上运行 - 由 Cursor 自动管理 - 通过 stdout 直接通信 - 仅你本地可访问 - 输入:Cursor 自动运行的有效 shell 命令
🌐 SSE 传输方式
- 可在本地或远程运行 - 由你自行管理和运行 - 通过网络通信 - 可在多台机器间共享 - 输入:指向 Cursor 外部 MCP 服务器 /sse 端点的 URL

对于 stdio 服务器,命令应为 Cursor 可运行的有效 shell 命令。

对于 SSE 服务器,URL 应为 SSE 端点的地址,例如:http://example.com:8000/sse。

每种传输方式适用于不同场景:

  • stdio 更适合本地开发,简单易用
  • SSE 更适合分布式团队,灵活性更高

配置 MCP 服务器

MCP 配置文件采用 JSON 格式,结构如下:

// CLI Server -Node.js

// This example demonstrated an MCP server using the stdio format
// Cursor automatically runs this process for you
// This uses a Node.js server, ran with `npx`
{
  "mcpServers": {
    "server-name": {
      "command": "npx",
      "args": ["-y", "mcp-server"],
      "env": {
        "API_KEY": "value"
      }
    }
  }
}
// CLI Server -Python

// This example demonstrated an MCP server using the stdio format
// Cursor automatically runs this process for you
// This uses a Python server, ran with `python`
{
  "mcpServers": {
    "server-name": {
      "command": "python",
      "args": ["mcp-server.py"],
      "env": {
        "API_KEY": "value"
      }
    }
  }
}
// SSE Server

// This example demonstrated an MCP server using the SSE format
// The user should manually setup and run the server
// This could be networked, to allow others to access it too
{
  "mcpServers": {
    "server-name": {
      "url": "http://localhost:3000/sse",
      "env": {
        "API_KEY": "value"
      }
    }
  }
}

env 字段允许你为 MCP 服务器进程指定可用的环境变量。这对于管理 API 密钥和其他敏感配置特别有用。

配置文件位置

你可以根据需求将 MCP 配置文件放在以下两个位置:

项目级配置
如果某些工具只针对特定项目使用,在项目目录下创建 `.cursor/mcp.json` 文件。这样定义的 MCP 服务器仅在该项目中可用。
全局配置
如果希望在所有项目中都能使用某些工具,在你的主目录下创建 `~/.cursor/mcp.json` 文件。这样配置的 MCP 服务器会在所有 Cursor 工作区中可用。

认证(Authentication)

你可以通过为 MCP 服务器进程提供环境变量来实现认证。这允许你为 MCP 服务器提供 API 密钥和其他认证令牌,而无需将它们暴露在代码中或存储在 MCP 服务器本身。

这种用法的语法已在上方的 MCP 服务器配置文件示例中展示。

虽然目前还不支持其他认证方式,但像 mcp-remote 这样的社区项目可以为网络上的 MCP 服务器提供安全的认证方式。

在 Chat 中使用 MCP

Composer Agent 会自动使用 MCP 设置页面“可用工具”下列出的所有 MCP 工具(如果判断为相关)。如果你想主动让 Agent 使用某个工具,只需在对话中直接说明工具名称或描述即可。你也可以在设置页面启用或禁用单个 MCP 工具,控制 Agent 可用的工具范围。

工具审批

默认情况下,当 Agent 想要使用 MCP 工具时,会弹出消息请求你的批准。你可以点击工具名称旁的箭头展开消息,查看 Agent 调用该工具时传递的参数。

MCP 配置位置

自动运行(Auto-run)

你可以启用自动运行,让 Agent 在无需审批的情况下自动运行 MCP 工具,类似于终端命令的自动执行。详细了解 Yolo 模式及其启用方法请见相关文档

工具响应

当工具被调用时,Cursor 会在聊天中显示响应内容。你可以展开查看工具调用的参数和响应详情。

MCP 配置位置

图片注入(Image Injection)

当使用某些 MCP 服务器时,Cursor 可能会运行返回图片(如网站截图或图表)的工具。为了让 Chat 能正确显示和使用这些图片,你需要确保服务器以正确的格式返回图片。

做法如下:在工具响应中返回图片的 base64 编码字符串。

const RED_CIRCLE_BASE64 = "/9j/4AAQSkZJRgABAgEASABIAAD/2w..." 
// ^ 省略的 base64 字符串

server.tool("generate_image", async (params) => {
  return {
    content: [
      {
        type: "image",
        data: RED_CIRCLE_BASE64,
        mimeType: "image/jpeg",
      },
    ],
  };
});

完整的返回图片的 MCP 服务器示例可参考官方文档

以这种格式返回图片后,Cursor 会将图片插入到聊天中。如果当前模型支持图片输入,模型还可以查看和分析图片,辅助后续操作。

限制说明

MCP 是一个非常新的协议,目前仍在积极开发中。需要注意以下已知注意事项: