Skip to main content
Glama
rekog-labs

NestJS MCP Server Module

by rekog-labs

NestJS MCP Server Module

CI Code Coverage NPM Version NPM Downloads NPM License

A NestJS module to effortlessly expose tools, resources, and prompts for AI, from your NestJS applications using the Model Context Protocol (MCP).

With @rekog/mcp-nest you define tools, resources, and prompts in a way that's familiar in NestJS and leverage the full power of dependency injection to utilize your existing codebase in building complex enterprise ready MCP servers.

Features

Are you interested to build ChatGPT widgets (with the OpenAI SDK) or MCP apps? Find out how to do that with @rekog/MCP-Nest in this repository MCP-Nest-Samples

TIP

You can easily learn about this package using thechat tab in Context7. Better yet, connect the Context7 MCP server to allow your AI agents to access the documentation and implement MCP-Nest for you.

Related MCP server: mcp-nestjs

Installation

npm install @rekog/mcp-nest @modelcontextprotocol/sdk zod@^4

Optional dependencies

The built-in authorization server now lives in a separate package. If you use it, install it alongside @rekog/mcp-nest:

npm install @rekog/mcp-nest-auth

If you additionally use the TypeORM store for the authorization server, install the following optional peer dependencies as well:

npm install @nestjs/typeorm typeorm

Quick Start

MCP-Nest runs as a NestJS microservice transport strategy. Tools, resources, and prompts live on @McpController() classes (so NestJS guards, pipes, interceptors, and exception filters apply to them), and the strategy serves them over one or more transports (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();

Order matters: call startAllMicroservices() before listen() so the MCP HTTP routes are mounted before the server starts accepting connections.

For an STDIO-only server, skip the HTTP adapter and use NestFactory.createMicroservice(AppModule, { strategy: mcp }) with transports: [new StdioTransport()] and disable logging (stdout is reserved for the protocol).

Documentation

Examples

The examples directory contains working examples for all features. Refer to examples/README.md for details.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
3dResponse time
4wRelease cycle
23Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rekog-labs/MCP-Nest'

If you have feedback or need assistance with the MCP directory API, please join our Discord server