ts#mcp-サーバー
TypeScript MCP サーバー ジェネレーター
大規模言語モデル(LLM)にコンテキストを提供するためのTypeScript Model Context Protocol (MCP) サーバーを生成します。
MCPとは
Model Context Protocol (MCP) はAIアシスタントが外部ツールやリソースと連携するためのオープンスタンダードです。LLMが以下を実行するための統一的な方法を提供します:
- アクション実行や情報取得を行うツール(関数)の実行
- コンテキストやデータを提供するリソースへのアクセス
使用方法
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
オプション
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
name 必須 | string | - | MCP server project name. |
directory | string | packages | Parent directory where the MCP server is placed. |
subDirectory | string | - | The sub directory the MCP server is placed in. By default this is the MCP server project name. |
ジェネレーターの出力
ジェネレーターは以下のプロジェクトファイルを作成します:
Directorypackages/<name>/
- README.md MCPサーバーのドキュメント(使用方法を含む)
- project.json Nxプロジェクト設定(build、bundle、devターゲット)
Directorysrc/
- index.ts MCPサーバーのエントリーポイント
- server.ts メインサーバー定義(ツールとリソースの定義)
- global.d.ts マークダウンファイルインポート用TypeScript型宣言
Directoryresources/
- example-context.md MCPサーバー用リソースとして使用するマークダウンファイルの例
MCPサーバーの操作
ツールの追加
ツールはAIアシスタントが呼び出せるアクション実行関数です。server.ts
ファイルに新しいツールを追加できます:
server.tool("toolName", { param1: z.string(), param2: z.number() }, // Zodを使用した入力スキーマ async ({ param1, param2 }) => { // ツールの実装 return { content: [{ type: "text", text: "Result" }] }; });
リソースの追加
リソースはAIアシスタントにコンテキストを提供します。ファイルからの静的リソースまたは動的リソースを追加できます:
// ファイルからの静的リソースimport exampleContext from './resources/example-context.md';
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アシスタントとの連携設定
MCPサーバーをAIアシスタントで使用するには、まずバンドルする必要があります:
pnpm nx run your-mcp-server:bundle
yarn nx run your-mcp-server:bundle
npx nx run your-mcp-server:bundle
bunx nx run your-mcp-server:bundle
これによりdist/packages/your-mcp-server/bundle/index.js
にバンドル版が作成されます(ディレクトリ設定によりパスは異なる場合があります)。
設定ファイル
MCPをサポートするAIアシスタントの多くは同様の設定方法を使用します。MCPサーバーの詳細を記載した設定ファイルを作成/更新する必要があります:
{ "mcpServers": { "your-mcp-server": { "command": "node", "args": [ "/path/to/workspace/dist/packages/your-mcp-server/bundle/index.js" ], "transportType": "stdio" } }}
/path/to/workspace/dist/packages/your-mcp-server/bundle/index.js
は実際のバンドル済みMCPサーバーのパスに置き換えてください。
アシスタント固有の設定
各AIアシスタントのMCP設定方法については以下を参照してください:
開発ワークフロー
ビルドターゲット
このジェネレーターはTypeScriptプロジェクトジェネレーターを基盤としており、そのターゲットを継承するとともに以下の追加ターゲットを提供します:
バンドル
bundle
タスクはesbuildを使用して、AIアシスタントで使用可能な単一のJavaScriptバンドルファイルを作成します:
pnpm nx run your-mcp-server:bundle
yarn nx run your-mcp-server:bundle
npx nx run your-mcp-server:bundle
bunx nx run your-mcp-server:bundle
これによりdist/packages/your-mcp-server/bundle/index.js
にバンドル版が作成されます(ディレクトリ設定によりパスは異なる場合があります)。
開発
dev
タスクはプロジェクトの変更を監視し、自動的にバンドルを再構築します:
pnpm nx run your-mcp-server:dev
yarn nx run your-mcp-server:dev
npx nx run your-mcp-server:dev
bunx nx run your-mcp-server:dev
開発時には特に有用で、AIアシスタントが常に最新版のMCPサーバーを使用できるようにします。