@nestjs-mcp/server
Version:
Modular library for building scalable MCP servers with NestJS, providing decorators and integration patterns as a wrapper for the official MCP TypeScript SDK.
59 lines (58 loc) • 2.15 kB
TypeScript
import { StreamableHTTPServerTransportOptions } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
import { ZodRawShapeCompat as SdkZodRawShapeCompat } from '@modelcontextprotocol/sdk/server/zod-compat.js';
import { ProtocolOptions, RequestHandlerExtra as SdkRequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
import { Implementation, ServerCapabilities, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
import { Provider, Type } from '@nestjs/common';
export type ZodRawShapeCompat = SdkZodRawShapeCompat;
export type PromptArgsRawShape = ZodRawShapeCompat;
export type RequestHandlerExtra = SdkRequestHandlerExtra<ServerRequest, ServerNotification> & {
headers: Record<string, string>;
};
export type ServerOptions = {
instructions?: string;
capabilities?: ServerCapabilities;
protocolOptions?: ProtocolOptions;
};
export type McpServerOptions = {
serverInfo: Implementation;
options?: ServerOptions;
logging?: McpLoggingOptions;
};
export type McpLoggingOptions = {
enabled?: boolean;
level?: 'debug' | 'verbose' | 'log' | 'warn' | 'error';
};
export type McpSessionOptions = {
sessionTimeoutMs?: number;
cleanupIntervalMs?: number;
maxConcurrentSessions?: number;
};
export type McpModuleOptions = {
imports?: Type<any>[];
providers?: Provider[];
name: string;
version: string;
instructions?: string;
capabilities?: ServerCapabilities;
protocolOptions?: ProtocolOptions;
logging?: McpLoggingOptions;
session?: McpSessionOptions;
transports?: McpModuleTransportOptions;
};
export type McpModuleTransportOptions = {
streamable?: {
enabled: boolean;
options?: Omit<StreamableHTTPServerTransportOptions, 'onsessioninitialized' | 'sessionIdGenerator'> & {
sessionIdGenerator?: () => string | undefined;
};
};
sse?: {
enabled: boolean;
};
};
export type McpFeatureOptions = {};
export type McpModuleAsyncOptions = {
imports?: any[];
useFactory: (...args: any[]) => Promise<McpModuleOptions> | McpModuleOptions;
inject?: any[];
};