NestJS module for creating Model Context Protocol (MCP) servers
npm install @rekog/mcp-nest
[![CI][ci-image]][ci-url]
[![Code Coverage][code-coverage-image]][code-coverage-url]
[![NPM Version][npm-version-image]][npm-url]
[![NPM Downloads][npm-downloads-image]][npm-url]
[![NPM License][npm-license-image]][npm-url]
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.
- 🚀 Multi-Transport Support: HTTP+SSE, Streamable HTTP, and STDIO
- 🔧 Tools: Expose NestJS methods as MCP tools with automatic discovery and Zod validation
- 🛠️ Elicitation: Interactive tool calls with user input elicitation
- 🌐 HTTP Request Access: Full access to request context within MCP handlers
- 🔐 Per-Tool Authorization: Implement fine-grained authorization for tools
- 📁 Resources: Serve content and data through MCP resource system
- 📚 Resource Templates: Dynamic resources with parameterized URIs
- 💬 Prompts: Define reusable prompt templates for AI interactions
- 🔐 Guard-based Authentication: Guard-based security with OAuth support
- 🏠 Built-in Authorization Server — Using the built-in Authorization Server for easy setups. (Beta)
- 🌐 External Authorization Server — Securing your MCP server with an external authorization server (Keycloak, Auth0, etc).
- 💉 Dependency Injection: Leverage NestJS DI system throughout MCP components
Are you interested to build ChatGPT widgets (with the OpenAI SDK)?
Find out how to do that with @rekog/MCP-Nest in this repository MCP-Nest-Samples/pizzaz-openai-apps-sdk
``bash`
npm install @rekog/mcp-nest @modelcontextprotocol/sdk zod@^4
If you use the built-in authorization server with the TypeORM store, install the following optional peer dependencies:
`bash`
npm install @nestjs/typeorm typeorm
`typescript
// app.module.ts
import { Module } from '@nestjs/common';
import { McpModule } from '@rekog/mcp-nest';
import { GreetingTool } from './greeting.tool';
@Module({
imports: [
McpModule.forRoot({
name: 'my-mcp-server',
version: '1.0.0',
}),
],
providers: [GreetingTool],
})
export class AppModule {}
`
`typescript
// greeting.tool.ts
import { Injectable } from '@nestjs/common';
import { Tool, Context } from '@rekog/mcp-nest';
import { z } from 'zod';
@Injectable()
export class GreetingTool {
@Tool({
name: 'greeting-tool',
description: 'Returns a greeting with progress updates',
parameters: z.object({
name: z.string().default('World'),
}),
})
async sayHello({ name }, context: Context) {
await context.reportProgress({ progress: 50, total: 100 });
return Hello, ${name}!;`
}
}
- Tools Guide - Define and expose NestJS methods as MCP tools
- Discovery and Registration of Tools - Automatic discovery and manual registration of tools
- Dynamic Tools Guide - Register tools programmatically at runtime
- Resources Guide - Serve static and dynamic content
- Resource Templates Guide - Create parameterized resources
- Prompts Guide - Build reusable prompt templates
- Built-in Authorization Server - Secure your MCP server with built-in OAuth
- External Authorization Server - Securing your MCP server with an external authorization server (Keycloak, Auth0, etc)
- Server examples - MCP servers examples (Streamable HTTP, HTTP, and STDIO) and with Fastify support
The playground directory contains working examples for all features.playground/README.md` for details.
Refer to
[ci-url]: https://github.com/rekog-labs/MCP-Nest/actions/workflows/pipeline.yml
[ci-image]: https://github.com/rekog-labs/MCP-Nest/actions/workflows/pipeline.yml/badge.svg
[npm-url]: https://www.npmjs.com/package/@rekog/mcp-nest
[npm-version-image]: https://img.shields.io/npm/v/@rekog/mcp-nest
[npm-downloads-image]: https://img.shields.io/npm/dm/@rekog/mcp-nest
[npm-license-image]: https://img.shields.io/npm/l/@rekog/mcp-nest
[code-coverage-url]: https://codecov.io/gh/rekog-labs/mcp-nest
[code-coverage-image]: https://codecov.io/gh/rekog-labs/mcp-nest/branch/main/graph/badge.svg