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() }, // Zodを使用した入力スキーマ async ({ param1, param2 }) => { // ツールの実装 return { content: [{ type: "text", text: "Result" }] }; });
リソースの追加
Section titled “リソースの追加”リソースはAIアシスタントにコンテキストを提供します。ファイルからの静的リソースや動的リソースを追加できます:
const exampleContext = '返されるコンテキスト例';
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トランスポートからStreamable HTTPトランスポートに切り替える場合など、<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
を使用して、ファイル変更時にサーバーを自動再起動します。