Skip to content

TypeScriptのMCPサーバー

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

Model Context Protocol (MCP) はAIアシスタントが外部ツールやリソースと相互作用するためのオープンスタンダードです。LLMが以下を一貫した方法で行えるようにします:

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

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
    パラメータ デフォルト 説明
    project 必須 string - The project to add an MCP server to
    name string - The name of your MCP server (default: mcp-server)

    ジェネレータは既存の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ターゲットが追加

    ツールは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" }]
    };
    }
    );

    リソースは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 }],
    };
    });

    MCPをサポートするほとんどのAIアシスタントは類似した設定アプローチを採用しています。MCPサーバーの詳細を記載した設定ファイルを作成または更新する必要があります:

    {
    "mcpServers": {
    "your-mcp-server": {
    "command": "npx",
    "args": ["tsx", "/path/to/your-mcp-server/index.ts"]
    }
    }
    }

    MCPサーバーを開発中に--watchフラグを設定すると、AIアシスタントが常に最新のツール/リソースを認識するようになります:

    {
    "mcpServers": {
    "your-mcp-server": {
    "command": "npx",
    "args": ["tsx", "--watch", "/path/to/your-mcp-server/index.ts"]
    }
    }
    }

    特定のAIアシスタントでMCPを設定するには、各アシスタントのドキュメントを参照してください:

    MCPサーバーをテスト・使用する最も簡単な方法はAIアシスタントとの連携設定です(上記参照)。ただしSTDIO transportからStreamable HTTP transportに切り替える場合など、<your-server-name>-serveターゲットを使用してサーバーを実行できます:

    Terminal window
    pnpm nx run your-project:your-server-name-serve

    このコマンドはtsx --watchを使用してファイル変更時にサーバーを自動再起動します。