背景
我们知道当在 cursor 提出一个问题,cursor 会综合 AI 大模型,并调用各种工具,最终输出结果给用户。那么如何让 Cursor 在解决用户提问的时候,合理调用自己实现的工具呢?
须知
cursor 中有一个很好的东西,就是 mcp.json。按照如下点击就可以添加自己的 mcp
图 1
图 2
图 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 也是告诉我们,结果就是来自上述程序
三,文档
- mcp sdk:github.com/modelcontex…
- mcp 各种语言的 sdk: github.com/modelcontex…
- mcp 官网文档:modelcontextprotocol.io/docs/learn/…
原理
- stdio
- stream http