はじめに
今回はMCPサーバーを実装して、Cursorエディタのチャットからアクセスするまでの手順を紹介します。
事前準備
プロジェクトを作成します。
mkdir mcp-test
code mcp-test
npm init
今回使用するライブラリをインストールします
npm i npm install @modelcontextprotocol/sdk
実装
クイックスタートのコードをそのまま持ってきます。
server.resource
につづく部分は、現在Cursorエディタからresourceが参照できないため削除します。(残していても問題はないです)
index.js
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
// Create an MCP server
const server = new McpServer({
name: "Demo",
version: "1.0.0"
});
// Add an addition tool
server.tool("add",
{ a: z.number(), b: z.number() },
async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }]
})
);
// Start receiving messages on stdin and sending messages on stdout
const transport = new StdioServerTransport();
await server.connect(transport);
package.jsonに追記します。
{
"name": "mcp-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module", // <--追記
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.9.0"
}
}
MCPサーバーをCursorに設定
基本設定 → Cursor Setting → MCP → Add new Global MCP serverを選択、
mcp.json
に以下を追記します。(argsは前述したindex.jsのフルパスを記載してください)
{
"mcpServers": {
"Demo": {
"command": "node",
"args": ["index.jsのパスを記載"]
}
}
}
基本設定 → Cursor Setting → MCPにもどって、以下のスクショのように緑色のランプが付いていたら問題ないです。
Chatから叩く
テキストで質問して見ます。
add
というtoolを参照して、きちんと返答が行われました!
toolを追加してみる
toolは複数定義できます。
試しに、uuidを生成するtoolを定義して見ましょう。
index.js
// uuidを生成するtool
server.tool("generate_uuid", {}, async () => ({
content: [{ type: "text", text: crypto.randomUUID() }],
}));
refreshボタンを押すと、toolの部分にgenerate_uuid
が追加されているのが確認できます。
uuidを生成してもらいましょう。
正常に生成できたようです!
参考