mcpField
N
NestJS MCP Server - Model Context Protocol Example

NestJS MCP Server - Model Context Protocol Example

リモート
github.com/LiusDev開発ツール1181 週間前に更新
リポジトリ

NestJS MCP Server - Model Context Protocol Example について

マイクロサービス構成で MCP を実装する NestJS のサンプルで、NestJS と MCP の連携を調べる開発者向けです。サーバーが現在時刻の情報を提供し、LangChain.js を使うバックエンドが MCP ツールで問い合わせを処理します。

主な機能

  1. 01NestJS マイクロサービス構成の例
  2. 02現在時刻を取得するツール
  3. 03LangChain.js バックエンド連携
  4. 04複数の MCP サーバーへの接続

活用シーン

  1. 01MCP ツールを使って時刻の問い合わせに答えるバックエンドの構築
  2. 02NestJS プロジェクトでの MCP クライアントとサーバーの連携確認

MCP 対応

現在時刻ツールを公開する MCP サーバーと、MCP クライアント SDK で接続するバックエンドを含みます。バックエンドは複数の MCP サーバーに接続し、そのツールを LLM で利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttp://localhost:3000/sse
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

NestJS MCP サーバー - Model Context Protocol の例

作成者:[@LiusDev](https://github.com/liusdev)

このリポジトリでは、マイクロサービスアーキテクチャを採用した Model Context Protocol(MCP)の NestJS 実装を紹介します。主に次の 2 つのサービスで構成されています。

  1. mcp-server:LLM に現在時刻のコンテキストを提供する機能を備えています
  2. mcp-backend:LangChain.js を使用し、MCP クライアント SDK と連携して MCP サーバーに接続するクライアントです

はじめに

前提条件
  • Node.js(v20 以降)
  • npm
インストール
  1. リポジトリをクローンします
  2. 依存関係をインストールします:
npm install
  1. .env.example を .env に名前変更し、OpenAI API キーを追加します:
cp .env.example .env

次に、.env ファイルを編集して OpenAI API キーを追加します:

OPENAI_API_KEY=your_openai_api_key_here
OPENAI_API_URL=https://api.openai.com/v1
PORT=3001

サービスの実行

すべての機能を利用するには、両方のサービスを実行する必要があります:

MCP サーバーの起動
npm run start:dev mcp-server

これにより、MCP サーバーがポート 3000(デフォルト)で起動します。

MCP バックエンドの起動
npm run start:dev mcp-backend

これにより、MCP バックエンドがポート 3001(デフォルト)で起動します。

使用例

両方のサービスが起動したら、MCP バックエンドに POST リクエストを送信して動作をテストできます:

リクエストの例

次の JSON ボディを指定して、http://localhost:3001 に POST リクエストを送信します:

{
  "message": "What time is it in Viet Nam?"
}
cURL を使用する場合
curl -X POST http://localhost:3001 -H "Content-Type: application/json" -d "{\"message\": \"What time is it in Viet Nam?\"}"
Postman を使用する場合
  1. http://localhost:3001 への新しい POST リクエストを作成します
  2. Content-Type ヘッダーを application/json に設定します
  3. リクエストボディで「raw」と「JSON」を選択し、次の内容を入力します:
    {
      "message": "What time is it in Viet Nam?"
    }
    
  4. リクエストを送信します

レスポンスには、MCP サーバーの時刻コンテキスト機能を通じて取得した、ベトナムの現在時刻が含まれます。

複数の MCP サーバーへの接続

バックエンドは複数の MCP サーバーに同時に接続できます。サーバーを追加するには、apps/mcp-backend/src/mcp-backend.module.ts の McpClientModule.register 設定を変更します:

McpClientModule.register({
  throwOnLoadError: true,
  prefixToolNameWithServerName: false,  // Set to true to prefix tool names with server names
  additionalToolNamePrefix: '',
  mcpServers: {
    myServer: {
      transport: 'sse',
      url: 'http://localhost:3000/sse',
      useNodeEventSource: true,
      reconnect: {
        enabled: true,
        maxAttempts: 5,
        delayMs: 2000,
      },
    },
    // Add additional servers here
    anotherServer: {
      transport: 'sse',
      url: 'http://localhost:4000/sse',  // Different port for another server
      useNodeEventSource: true,
      reconnect: {
        enabled: true,
        maxAttempts: 5,
        delayMs: 2000,
      },
    },
  },
}),

複数のサーバーに接続する場合:

  • ツール名の競合を避けるために、prefixToolNameWithServerName: true の設定を検討してください
  • mcpServers オブジェクト内の各サーバーに、一意のキーを設定してください
  • 各サーバーが異なるポートで実行されていることを確認してください

MCP クライアントは、設定されているすべてのサーバーからツールを自動的に取得し、LLM が利用できるようにします。

アーキテクチャ

  • mcp-server:Model Context Protocol を通じてツールを公開します。これには、現在時刻を取得する機能が含まれます
  • mcp-backend:MCP サーバーに接続して利用可能なツールを取得し、LangChain.js とともに使用してユーザーのクエリを処理します

使用技術

  • NestJS
  • LangChain.js
  • Model Context Protocol(MCP)
  • @langchain/mcp-adapters:LangChain.js 用の MCP クライアントアダプター
  • @rekog/mcp-nest:NestJS 用の MCP サーバー実装

プロジェクト構成

mcp-server/
├── apps/
│   ├── mcp-server/       # MCP server implementation
│   └── mcp-backend/      # MCP client implementation
├── dist/                 # Compiled output
├── node_modules/
├── .env                  # Environment variables
└── package.json

ライセンス

このプロジェクトは UNLICENSED License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。