Cursor中如何调用自己的 MCP

135 阅读1分钟

背景

我们知道当在 cursor 提出一个问题,cursor 会综合 AI 大模型,并调用各种工具,最终输出结果给用户。那么如何让 Cursor 在解决用户提问的时候,合理调用自己实现的工具呢?

须知

cursor 中有一个很好的东西,就是 mcp.json。按照如下点击就可以添加自己的 mcp

image.png

图 1

image.png 图 2

image.png 图 3

在 mcp.json 中,添加自己的 mcp 工具(资源,prompt,等等)

步骤

  • 第一步,创建 mcp 程序 添加 mcp 工具,如上须知操作,这里我们添加一个 add.js,给 cursor 提供加法计算工具
#!/usr/bin/env node
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({
  name: "add-server",
  version: "1.0.0",
});

/* -------------- 加法工具 -------------- */
server.tool(
  "add", // 方法的名称,在 Cursor,中 MCP 展开会显示此类签名
  "Add two numbers", // 工具的描述,ai 靠描述命中工具
  { a: z.number(), b: z.number() }, // zod,是 ts 类型的输入校验,使用 3.25.76,升级其它版本发现有坑,mcp 教研有问题
  async ({ a, b }) => ({
    content: [{ type: "text", text: String(a + b+ " wow, amazing") }],
  })
);

/* -------------- 启动 -------------- */
async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
}
main().catch(console.error);
  • 第二步,检查mcp 程序,如图2,如果 ok,mcp 工具会有绿色圆点

注意,如果修改了程序,每次都需要重启 cursor,因为 cursor,不会热更新 mcp 程序

  • 第三步,测试 mcp,主要看描述词,这里我们的描述是"Add two numbers",我们就提供 prompt:add two numbers 22,33。如图,wow, amazing 也是告诉我们,结果就是来自上述程序

image.png

三,文档

原理

  • stdio
  • stream http

modelcontextprotocol.io/specificati…