模型上下文协议

使用 Model Context Protocol (MCP) 插件系统将外部工具和数据源连接到 Cursor

什么是 MCP?

模型上下文协议 (MCP) 是一种开放协议,它标准化了应用程序向 LLM 提供上下文和工具的方式。将 MCP 视为 Cursor 的插件系统 - 它允许您通过标准化接口将代理连接到各种数据源和工具,从而扩展代理的功能。

使用

MCP 允许您将 Cursor 连接到外部系统和数据源。这意味着您可以将 Cursor 与现有工具和基础设施集成,而不必告诉 Cursor 您的项目结构在代码本身之外是什么。

MCP 服务器可以用任何可以打印到 HTTP 端点或为 HTTP 端点提供服务的语言编写。这种灵活性使您能够使用首选编程语言和技术堆栈非常快速地实施 MCP 服务器。stdout

例子

数据库

允许 Cursor 直接查询您的数据库,而不是手动输入架构或自己作数据。

概念

从 概念中读取数据以引导光标实现功能

GitHub的

让 Cursor 创建 PR、创建分支、查找代码等

记忆

允许 Cursor 在您工作时记住和调用信息

条纹

允许 Cursor 创建客户、管理订阅等

建筑

MCP 服务器是通过标准化协议公开特定功能的轻量级程序。它们充当 Cursor 与外部工具或数据源之间的中介。

Cursor 支持 MCP 服务器的两种传输类型:

💻 stdio 运输

- 在本地计算机上运行

- 由 Cursor 自动管理

- 直接通信stdout

- 仅由您在本地访问

输入:Cursor 自动运行的有效 shell 命令

🌐 SSE 运输

- 可以在本地或远程运行

- 由您管理和运营

-通过网络进行通信

- 可以在计算机之间共享

输入:指向游标外部的 MCP 服务器端点的 URL/sse

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

对于 SSE 服务器,URL 应该是 SSE 端点的 URL,例如 .http://example.com:8000/sse

每种传输类型都有不同的用例,stdio 更适合本地开发,而 SSE 为分布式团队提供了更大的灵活性。

配置 MCP 服务器

MCP 配置文件使用具有以下结构的 JSON 格式:

CLI 服务器 - Node.jsCLI 服务器 - PythonSSE 服务器复制

  1. // This example demonstrated an MCP server using the stdio format
  2. // Cursor automatically runs this process for you
  3. // This uses a Node.js server, ran with `npx`
  4. {
  5. "mcpServers": {
  6. "server-name": {
  7. "command": "npx",
  8. "args": ["-y", "mcp-server"],
  9. "env": {
  10. "API_KEY": "value"
  11. }
  12. }
  13. }
  14. }

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

配置位置

您可以将此配置放置在两个位置,具体取决于您的使用案例:

项目配置

对于特定于项目的工具,请在项目目录中创建一个文件。这允许您定义仅在该特定项目中可用的 MCP 服务器。.cursor/mcp.json

全局配置

对于要在所有项目中使用的工具,请在主目录中创建一个文件。这使得 MCP 服务器在所有 Cursor 工作区中都可用。\~/.cursor/mcp.json

在 Chat 中使用 MCP

如果 Composer 代理确定 MCP 设置页面上列出的任何 MCP 工具是相关的,则它将自动使用它们。 要有意提示使用工具,只需告诉代理使用该工具,通过名称或描述引用它。Available Tools

工具批准

默认情况下,当 Agent 想要使用 MCP 工具时,它将显示一条消息,请求您的批准。您可以使用工具名称旁边的箭头展开消息,并查看 Agent 使用哪些参数调用工具。

模型上下文协议 - 图1

自动运行

您可以启用自动运行以允许 Agent 自动运行 MCP 工具而无需批准,类似于执行终端命令的方式。在此处阅读有关 Yolo 模式以及如何启用它的更多信息。

工具响应

使用工具时,Cursor 将在聊天中显示响应。 此图显示了示例工具的响应,以及工具调用参数和工具调用响应的扩展视图

模型上下文协议 - 图2

Image Injection

当使用某些 MCP 服务器时,Cursor 可能会运行返回图像的工具,例如网站的屏幕截图或图表。要允许 Chat 正确查看和使用其回复中的图像,您可以确保将服务器配置为以正确的格式返回图像。

为此,您只需在工具响应中返回图像的 base64 编码字符串即可。

  1. const RED_CIRCLE_BASE64 = "/9j/4AAQSkZJRgABAgEASABIAAD/2w..."
  2. // ^ full base64 clipped for readability
  3. server.tool("generate_image", async (params) => {
  4. return {
  5. content: [
  6. {
  7. type: "image",
  8. data: RED_CIRCLE_BASE64,
  9. mimeType: "image/jpeg",
  10. },
  11. ],
  12. };
  13. });

可在此处找到返回图像的 MCP 服务器的完整示例。

通过以这种格式返回图像,Cursor 会将图像附加到聊天中,如果当前模型支持,模型将查看和分析图像,以帮助进行下一步。

局限性

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

工具数量

某些 MCP 服务器或具有许多 MCP 服务器处于活动状态的用户可能有许多工具可供 Cursor 使用。目前,Cursor 只会将前 40 个工具发送给 Agent。

远程开发

Cursor 从本地计算机直接与 MCP 服务器通信,无论是直接通过还是通过使用 的网络。因此,MCP 服务器在通过 SSH 或其他开发环境访问 Cursor 时可能无法正常工作。我们希望在未来的版本中改进这一点。stdio``sse

MCP 资源 MCP 服务器提供两个主要功能:工具和资源。Cursor 中目前提供了工具,并允许 Cursor 执行 MCP 服务器提供的工具,并在后续步骤中使用输出。但是,Cursor 中尚不支持 resources。我们希望在未来的发行版中添加资源支持。