@monoes/mcp

Standalone MCP server — stdio, HTTP, and WebSocket transports with tool registry, resources, prompts, sessions, and connection pooling. Zero @monomind/* dependencies.
Part of the Monomind ecosystem.
Install
npm install @monoes/mcp
Quick start
import { quickStart, defineTool } from '@monoes/mcp';
const server = await quickStart({
transport: 'stdio',
name: 'My MCP Server',
});
server.registerTool(defineTool(
'greet',
'Greet a user',
{ type: 'object', properties: { name: { type: 'string' } }, required: ['name'] },
async ({ name }) => ({ message: `Hello, ${name}!` })
));
await server.start();
Transports
import { createMCPServer } from '@monoes/mcp';
const server = createMCPServer({ transport: 'stdio', name: 'My Server' }, logger);
const server = createMCPServer({
transport: 'http',
host: 'localhost',
port: 3000,
corsEnabled: true,
auth: { enabled: true, method: 'token', tokens: ['secret'] },
}, logger);
const server = createMCPServer({
transport: 'websocket',
host: 'localhost',
port: 3001,
maxConnections: 100,
}, logger);
Tool registry
import { createToolRegistry, defineTool } from '@monoes/mcp';
const registry = createToolRegistry(logger);
registry.register({
name: 'calculate',
description: 'Perform calculations',
inputSchema: { type: 'object', properties: { expression: { type: 'string' } } },
handler: async ({ expression }) => ({ result: eval(expression) }),
});
const result = await registry.execute('calculate', { expression: '2 + 2' });
Resources & prompts
import { createTextResource, definePrompt, textMessage } from '@monoes/mcp';
const { resource, handler } = createTextResource('file://readme.txt', 'README', 'Hello!');
server.getResourceRegistry().registerResource(resource, handler);
const prompt = definePrompt('summarize', 'Summarize text', [
{ name: 'text', description: 'Text to summarize', required: true }
], (args) => ({ messages: [textMessage(`Summarize: ${args.text}`)] }));
server.getPromptRegistry().registerPrompt(prompt);
Server API
interface IMCPServer {
start(): Promise<void>;
stop(): Promise<void>;
registerTool(tool: MCPTool): boolean;
registerTools(tools: MCPTool[]): { registered: number; failed: string[] };
getHealthStatus(): Promise<{ healthy: boolean; error?: string }>;
getMetrics(): MCPServerMetrics;
getSessions(): MCPSession[];
}
Built-in tools
system/info | Server information |
system/health | Health status |
system/metrics | Server metrics |
tools/list-detailed | List all tools with details |
Links
License
MIT