Closed9

TypeScriptで乱数生成MCPサーバーを作るぞ

jjuunnonjjuunnon

clientはvscodeのgithub copilotを使う
そのための設定をする

.vscode/settings.json
{
  "chat.agent.enabled": true,
}
.vscode/mcp.json
{
  "servers": {
      "rand": {
        "command": "node",
        "args": [
          "PATH/TO/WORKSPACE/build/index.js",
        ]
      }
    },
}

chat.agent.enabled: trueが反映されなくて焦ったが再起動したら使えた

jjuunnonjjuunnon

とりあえずquick start
https://github.com/modelcontextprotocol/typescript-sdk?tab=readme-ov-file#quick-start

addというツールが定義されているので使ってみる

100+300は?


GitHub Copilot
こんにちは!あなたの質問は「100+300は?」ですね。

このワークスペースには Model Context Protocol (MCP) サーバーが実装されており、足し算を行う「add」ツールが含まれています。このツールを使って計算してみましょう。

(ここで許可する)

計算結果は「400」です。

100 + 300 = 400 となります。

この結果は、ワークスペースに実装されているMCPサーバーの「add」ツールを使用して計算しました。このツールは2つの数値を受け取り、その合計を返す機能を持っています。

新入社員の電話対応みたい

jjuunnonjjuunnon

ツールを追加して乱数生成部分を作っていく

index.ts
server.tool(
  "rand",
  "generate a random integer between min and max",
  {
    min: z.number().describe("minimum value"),
    max: z.number().describe("maximum value"),
  },
  async ({ min, max }) => {
    const randomValue = Math.floor(Math.random() * (max - min + 1)) + min;
    return {
      content: [{ type: "text", text: String(randomValue) }]
    };
  }
)

実行してみる

100~200でランダムな数字を生成して

GitHub Copilot
ランダムな数字を生成するリクエストを頂きました。ワークスペースに「rand」というMCPサーバーが設定されているようですので、これを使って100から200の間のランダムな数字を生成します。

(ここで許可する)

「rand」サーバーを使用して、100から200の間のランダムな数字を生成しました。

結果は「111」です。

このランダム数字は、ワークスペースに設定されているModel Context Protocol(MCP)サーバーの「rand」機能を使用して生成されました。min値として100、max値として200を指定して、その範囲内でランダムな整数を取得しています。

ツールをどう使ったのか教えてくれるの丁寧

jjuunnonjjuunnon

agentじゃなくてchatでも使えることに気づいた明示的にコンテキストとして与えることもできるっぽい

このスクラップは5ヶ月前にクローズされました