TypeScriptのMCPサーバー
大規模言語モデル (LLM) にコンテキストを提供するためのTypeScript Model Context Protocol (MCP) サーバーを生成します。
MCPとは?
Section titled “MCPとは?”Model Context Protocol (MCP) はAIアシスタントが外部ツールやリソースと相互作用するためのオープンスタンダードです。LLMが以下を一貫した方法で行えるようにします:
- アクション実行や情報取得を行うツール(関数)の実行
- コンテキストやデータを提供するリソースへのアクセス
MCPサーバーの生成
Section titled “MCPサーバーの生成”TypeScript MCPサーバーは2つの方法で生成できます:
- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)
"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - ts#mcp-server
- 必須パラメータを入力
- クリック
Generate
pnpm nx g @aws/nx-plugin:ts#mcp-server
yarn nx g @aws/nx-plugin:ts#mcp-server
npx nx g @aws/nx-plugin:ts#mcp-server
bunx nx g @aws/nx-plugin:ts#mcp-server
変更されるファイルを確認するためにドライランを実行することもできます
pnpm nx g @aws/nx-plugin:ts#mcp-server --dry-run
yarn nx g @aws/nx-plugin:ts#mcp-server --dry-run
npx nx g @aws/nx-plugin:ts#mcp-server --dry-run
bunx nx g @aws/nx-plugin:ts#mcp-server --dry-run
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
project 必須 | string | - | The project to add an MCP server to |
name | string | - | The name of your MCP server (default: mcp-server) |
ジェネレータの出力
Section titled “ジェネレータの出力”ジェネレータは既存のTypeScriptプロジェクトに以下のファイルを追加します:
Directoryyour-project/
Directorysrc/
Directorymcp-server/ (カスタム名指定時はその名前)
- index.ts MCPサーバーのエントリポイント
- server.ts メインサーバー定義
Directorytools/
- add.ts サンプルツール
Directoryresources/
- sample-guidance.ts サンプルリソース
- package.json binエントリとMCP依存関係が追加
- project.json MCPサーバーserveターゲットが追加
MCPサーバーの操作
Section titled “MCPサーバーの操作”ツールの追加
Section titled “ツールの追加”ツールはAIアシスタントが呼び出せる関数です。server.ts
ファイルに新しいツールを追加できます:
server.tool("toolName", "tool description", { param1: z.string(), param2: z.number() }, // Input schema using Zod async ({ param1, param2 }) => { // Tool implementation return { content: [{ type: "text", text: "Result" }] }; });
リソースの追加
Section titled “リソースの追加”リソースはAIアシスタントにコンテキストを提供します。ファイルからの静的リソースや動的リソースを追加できます:
const exampleContext = 'some context to return';
server.resource('resource-name', 'example://resource', async (uri) => ({ contents: [{ uri: uri.href, text: exampleContext }],}));
// 動的リソースserver.resource('dynamic-resource', 'dynamic://resource', async (uri) => { const data = await fetchSomeData(); return { contents: [{ uri: uri.href, text: data }], };});
AIアシスタントとの連携設定
Section titled “AIアシスタントとの連携設定”設定ファイル
Section titled “設定ファイル”MCPをサポートするほとんどのAIアシスタントは類似した設定アプローチを採用しています。MCPサーバーの詳細を記載した設定ファイルを作成または更新する必要があります:
{ "mcpServers": { "your-mcp-server": { "command": "npx", "args": ["tsx", "/path/to/your-mcp-server/index.ts"] } }}
ホットリロード
Section titled “ホットリロード”MCPサーバーを開発中に--watch
フラグを設定すると、AIアシスタントが常に最新のツール/リソースを認識するようになります:
{ "mcpServers": { "your-mcp-server": { "command": "npx", "args": ["tsx", "--watch", "/path/to/your-mcp-server/index.ts"] } }}
アシスタント固有の設定
Section titled “アシスタント固有の設定”特定のAIアシスタントでMCPを設定するには、各アシスタントのドキュメントを参照してください:
MCPサーバーの実行
Section titled “MCPサーバーの実行”MCPサーバーをテスト・使用する最も簡単な方法はAIアシスタントとの連携設定です(上記参照)。ただしSTDIO transportからStreamable HTTP transportに切り替える場合など、<your-server-name>-serve
ターゲットを使用してサーバーを実行できます:
pnpm nx run your-project:your-server-name-serve
yarn nx run your-project:your-server-name-serve
npx nx run your-project:your-server-name-serve
bunx nx run your-project:your-server-name-serve
このコマンドはtsx --watch
を使用してファイル変更時にサーバーを自動再起動します。