Skip to content

ts#mcp-サーバー

TypeScript MCP サーバー ジェネレーター

大規模言語モデル(LLM)にコンテキストを提供するためのTypeScript Model Context Protocol (MCP) サーバーを生成します。

MCPとは

Model Context Protocol (MCP) はAIアシスタントが外部ツールやリソースと連携するためのオープンスタンダードです。LLMが以下を実行するための統一的な方法を提供します:

  • アクション実行や情報取得を行うツール(関数)の実行
  • コンテキストやデータを提供するリソースへのアクセス

使用方法

MCPサーバーの生成

TypeScript MCPサーバーは2つの方法で生成できます:

  1. インストール Nx Console VSCode Plugin まだインストールしていない場合
  2. VSCodeでNxコンソールを開く
  3. クリック Generate (UI) "Common Nx Commands"セクションで
  4. 検索 @aws/nx-plugin - ts#mcp-server
  5. 必須パラメータを入力
    • クリック Generate

    オプション

    パラメータ デフォルト 説明
    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アシスタントで使用するには、まずバンドルする必要があります:

    Terminal window
    pnpm 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バンドルファイルを作成します:

    Terminal window
    pnpm nx run your-mcp-server:bundle

    これによりdist/packages/your-mcp-server/bundle/index.jsにバンドル版が作成されます(ディレクトリ設定によりパスは異なる場合があります)。

    開発

    devタスクはプロジェクトの変更を監視し、自動的にバンドルを再構築します:

    Terminal window
    pnpm nx run your-mcp-server:dev

    開発時には特に有用で、AIアシスタントが常に最新版のMCPサーバーを使用できるようにします。