mcpField
N
NestJS MCP Server Module

NestJS MCP Server Module

ローカル
github.com/rekog-labs開発ツール7251 日前に更新

NestJS MCP Server Module について

NestJS MCP Server Module(@rekog/mcp-nest)は、NestJS アプリケーションのメソッドを MCP ツール、リソース、プロンプトとして公開するモジュールです。NestJS のマイクロサービス トランスポート戦略として動作するため、ガードやパイプなどをそのまま利用できます。NestJS で本番向けの MCP サーバーを構築するチームに適しています。

主な機能

  1. 01CustomTransportStrategy として MCP を実行
  2. 02Streamable HTTP と STDIO のトランスポート
  3. 03Zod によるツール引数の検証
  4. 04ガードによる認証とツール単位の認可
  5. 05リソーステンプレートとプロンプト

活用シーン

  1. 01既存の NestJS サービスを MCP ツールとして公開する
  2. 02OAuth や外部認可サーバーで MCP サーバーを保護する
  3. 03依存性注入を使って MCP コンポーネントを構成する

MCP 対応

MCP サーバーを構築するためのモジュールで、@Tool メソッド、リソース、プロンプトを Streamable HTTP または STDIO 経由で MCP クライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

NestJS MCP サーバーモジュール

README の画像

CI Code Coverage [NPM Version][npm-version-url] NPM Downloads NPM License

NestJS アプリケーションから、AI 向けのツール、リソース、プロンプトを簡単に公開できる NestJS モジュールです。**Model Context Protocol(MCP)**を使用します。

@rekog/mcp-nest を使うと、NestJS でおなじみの方法でツール、リソース、プロンプトを定義でき、依存性注入の力を最大限に活用して、既存のコードベースを使いながら複雑なエンタープライズ向け MCP サーバーを構築できます。

特長

  • 🧩 NestJS マイクロサービス戦略:MCP は CustomTransportStrategy として動作するため、ツール/リソース/プロンプトは実際の @MessagePattern ハンドラーです。ガード、パイプ、インターセプター、例外フィルターがネイティブに適用されます
  • 🚀 マルチトランスポート対応:ストリーミング可能な HTTP と STDIO に対応し、transports 配列で選択できます
  • 🕰️ 2つの世代のプロトコルに対応:1つのエンドポイントで、2025年世代のプロトコル(initialize + セッション)とステートレスな 2026-07-28 リビジョンを同時に提供できます。ツールのコードを変更する必要はありません
  • 🔧 ツール:自動検出と Zod 検証により、NestJS メソッドを MCP ツールとして公開できます
  • 📁 リソース:MCP リソースシステムを通じてコンテンツやデータを提供できます
  • 📚 リソーステンプレート:パラメーター化された URI を持つ動的なリソースを作成できます
  • 💬 プロンプト:AI とのやり取りに再利用できるプロンプトテンプレートを定義できます
  • 🔐 ガードベースの認証:OAuth に対応したガードベースのセキュリティを実現できます
  • 🏠 組み込みの認可サーバー — セットアップを簡単にするため、組み込みの認可サーバーを使用できます。(ベータ版)
  • 🌐 外部認可サーバー — 外部認可サーバー(Keycloak、Auth0 など)で MCP サーバーを保護できます。
  • 💉 依存性注入:MCP コンポーネント全体で NestJS の DI システムを活用できます
  • 🔍 サーバーの変更と計測 — カスタムロジックや計測のために、内部の MCP サーバーを変更できます。

OpenAI SDK を使った ChatGPT ウィジェットや MCP アプリの構築に興味がありますか? このリポジトリの MCP-Nest-Samples で、@rekog/MCP-Nest を使った方法をご確認ください。

ヒント

Context7 の chat タブを使うと、このパッケージについて簡単に学べます。さらに、Context7 MCP サーバーを接続すると、AI エージェントがドキュメントにアクセスし、MCP-Nest を実装できるようになります。

インストール

npm install @rekog/mcp-nest \
  @modelcontextprotocol/server \
  @modelcontextprotocol/core \
  @modelcontextprotocol/node \
  zod@^4
オプションの依存関係

組み込みの認可サーバーは、現在別のパッケージになっています。使用する場合は、@rekog/mcp-nest とあわせてインストールしてください。

npm install @rekog/mcp-nest-auth

認可サーバーに TypeORM ストアも使用する場合は、次のオプションのピア依存関係もインストールしてください。

npm install @nestjs/typeorm typeorm

クイックスタート

MCP-Nest は NestJS マイクロサービスのトランスポート戦略として動作します。ツール、リソース、プロンプトは @McpController() クラスに定義されるため(NestJS のガード、パイプ、インターセプター、例外フィルターが適用されます)、この戦略によって 1 つ以上のトランスポート(Streamable HTTP、STDIO)経由で提供されます。

// greeting.controller.ts
import { McpController, Tool, McpContext } from '@rekog/mcp-nest';
import { Ctx, Payload } from '@nestjs/microservices';
import { z } from 'zod';

@McpController()
export class GreetingController {
  @Tool({
    name: 'greeting-tool',
    description: 'Returns a greeting with progress updates',
    parameters: z.object({ name: z.string().default('World') }),
  })
  async sayHello(
    @Payload() { name }: { name: string },
    @Ctx() ctx: McpContext,
  ) {
    await ctx.reportProgress({ progress: 50, total: 100 });
    return { content: [{ type: 'text', text: `Hello, ${name}!` }] };
  }
}
// app.module.ts
import { Module } from '@nestjs/common';
import {
  McpStrategy,
  MCP_STRATEGY,
  StreamableHttpTransport,
} from '@rekog/mcp-nest';
import { GreetingController } from './greeting.controller';

// The strategy is the whole configuration — there is no McpModule.
export const mcp = new McpStrategy({
  name: 'my-mcp-server',
  version: '1.0.0',
  transports: [
    new StreamableHttpTransport(),
  ],
});

@Module({
  controllers: [GreetingController],
  // Optional: only needed if a provider injects the strategy (e.g. for
  // runtime/dynamic tool registration).
  providers: [{ provide: MCP_STRATEGY, useValue: mcp }],
})
export class AppModule {}
// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule, mcp } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  mcp.setHttpAdapter(app.getHttpAdapter()); // needed for HTTP transports
  app.connectMicroservice({ strategy: mcp });
  await app.startAllMicroservices(); // mounts the MCP transports
  await app.listen(3000); // also serves your normal HTTP routes
}
void bootstrap();

順序が重要です: サーバーが接続の受け付けを開始する前に MCP の HTTP ルートをマウントできるよう、listen() の前に startAllMicroservices() を呼び出してください。

この /mcp エンドポイントは 2 つの世代に対応しています。同じ @Tool メソッドから、2025 年世代のプロトコル(initialize ハンドシェイク+セッション)と、ステートレスな 2026-07-28 リビジョンの両方に同時に応答します。上記の ctx.reportProgress(...) はそのまま 2026-07-28 クライアントに届きます。セッションレスであっても、最新のすべてのリクエストで進捗をストリーミングして返せます。2025 年世代のクライアントで使用するには、セッション対応のトランスポート(new StreamableHttpTransport({ statefulMode: true }) または StdioTransport)が必要です。従来のステートレスなデフォルト設定では何も行いません。詳しくはプロトコルのリビジョンを参照してください。

STDIO 専用のサーバーでは、HTTP アダプターを省略し、transports: [new StdioTransport()] を指定して NestFactory.createMicroservice(AppModule, { strategy: mcp }) を使用し、ログを無効にしてください(stdout はプロトコル専用です)。

ドキュメント

例

examples ディレクトリには、すべての機能の動作する例が含まれています。 詳細は examples/README.md を参照してください。

コメント

MCP は初めてですか?

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

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