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

きっかけ

参考資料

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が反映されなくて焦ったが再起動したら使えた

とりあえずquick start
addというツールが定義されているので使ってみる
100+300は?
GitHub Copilot
こんにちは!あなたの質問は「100+300は?」ですね。
このワークスペースには Model Context Protocol (MCP) サーバーが実装されており、足し算を行う「add」ツールが含まれています。このツールを使って計算してみましょう。
(ここで許可する)
計算結果は「400」です。
100 + 300 = 400 となります。
この結果は、ワークスペースに実装されているMCPサーバーの「add」ツールを使用して計算しました。このツールは2つの数値を受け取り、その合計を返す機能を持っています。
新入社員の電話対応みたい

ツールを追加して乱数生成部分を作っていく
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を指定して、その範囲内でランダムな整数を取得しています。
ツールをどう使ったのか教えてくれるの丁寧

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

quick startのコードにはgreeting resourcesが定義されているが何者なのかわからない
これを見るにClaude Desktopではcopilot chatのコンテキストのような役割をしそうだが見つからない

vscodeのリリースインフォを見てみる
ツールのみの対応みたいな文言はなさそう?

書いてあった
まだツールだけらしい
このスクラップは5ヶ月前にクローズされました