@cogitator-ai/mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,250 @@
1
+ /**
2
+ * MCP Server
3
+ *
4
+ * Exposes Cogitator tools as an MCP server that can be used by
5
+ * other MCP clients (e.g., Claude Desktop, other AI assistants).
6
+ */
7
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
+ import { resultToMCPContent, zodToJsonSchema } from '../adapter/tool-adapter';
10
+ /**
11
+ * MCP Server for exposing Cogitator tools
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Create server with tools
16
+ * const server = new MCPServer({
17
+ * name: 'my-cogitator-server',
18
+ * version: '1.0.0',
19
+ * transport: 'stdio',
20
+ * });
21
+ *
22
+ * // Register tools
23
+ * server.registerTool(calculatorTool);
24
+ * server.registerTool(fileReadTool);
25
+ * server.registerTools([searchTool, weatherTool]);
26
+ *
27
+ * // Start serving
28
+ * await server.start();
29
+ * ```
30
+ */
31
+ export class MCPServer {
32
+ server;
33
+ config;
34
+ tools = new Map();
35
+ started = false;
36
+ constructor(config) {
37
+ this.config = config;
38
+ this.server = new McpServer({
39
+ name: config.name,
40
+ version: config.version,
41
+ });
42
+ }
43
+ /**
44
+ * Register a single Cogitator tool
45
+ */
46
+ registerTool(tool) {
47
+ if (this.started) {
48
+ throw new Error('Cannot register tools after server has started');
49
+ }
50
+ this.tools.set(tool.name, tool);
51
+ this.registerMCPTool(tool);
52
+ }
53
+ /**
54
+ * Register multiple Cogitator tools
55
+ */
56
+ registerTools(tools) {
57
+ for (const tool of tools) {
58
+ this.registerTool(tool);
59
+ }
60
+ }
61
+ /**
62
+ * Unregister a tool by name
63
+ */
64
+ unregisterTool(name) {
65
+ return this.tools.delete(name);
66
+ }
67
+ /**
68
+ * Get list of registered tool names
69
+ */
70
+ getRegisteredTools() {
71
+ return Array.from(this.tools.keys());
72
+ }
73
+ /**
74
+ * Register a tool with the MCP server
75
+ */
76
+ registerMCPTool(tool) {
77
+ const inputSchema = this.buildInputSchema(tool);
78
+ this.server.tool(tool.name, tool.description, inputSchema, async (args) => {
79
+ return this.executeTool(tool, args);
80
+ });
81
+ }
82
+ /**
83
+ * Build the input schema for MCP tool registration
84
+ */
85
+ buildInputSchema(tool) {
86
+ if (tool.parameters) {
87
+ const jsonSchema = zodToJsonSchema(tool.parameters);
88
+ return jsonSchema.properties ?? {};
89
+ }
90
+ const schema = tool.toJSON();
91
+ return schema.parameters.properties;
92
+ }
93
+ /**
94
+ * Execute a tool and return MCP-formatted result
95
+ */
96
+ async executeTool(tool, args) {
97
+ const context = {
98
+ agentId: 'mcp-server',
99
+ runId: `mcp_${Date.now()}`,
100
+ signal: new AbortController().signal,
101
+ };
102
+ try {
103
+ let validatedArgs = args;
104
+ if (tool.parameters) {
105
+ const parseResult = tool.parameters.safeParse(args);
106
+ if (!parseResult.success) {
107
+ return {
108
+ content: [
109
+ {
110
+ type: 'text',
111
+ text: `Validation error: ${parseResult.error.message}`,
112
+ },
113
+ ],
114
+ isError: true,
115
+ };
116
+ }
117
+ validatedArgs = parseResult.data;
118
+ }
119
+ const result = await tool.execute(validatedArgs, context);
120
+ const rawContent = resultToMCPContent(result);
121
+ const content = rawContent.map((item) => {
122
+ if (item.type === 'text') {
123
+ return { type: 'text', text: item.text };
124
+ }
125
+ return { type: 'text', text: JSON.stringify(item) };
126
+ });
127
+ return { content };
128
+ }
129
+ catch (error) {
130
+ const errorMessage = error instanceof Error ? error.message : String(error);
131
+ if (this.config.logging) {
132
+ console.error(`[MCPServer] Tool ${tool.name} error:`, errorMessage);
133
+ }
134
+ return {
135
+ content: [{ type: 'text', text: `Error: ${errorMessage}` }],
136
+ isError: true,
137
+ };
138
+ }
139
+ }
140
+ /**
141
+ * Start the MCP server
142
+ */
143
+ async start() {
144
+ if (this.started) {
145
+ throw new Error('Server already started');
146
+ }
147
+ if (this.config.logging) {
148
+ console.log(`[MCPServer] Starting ${this.config.name} v${this.config.version}`);
149
+ console.log(`[MCPServer] Registered tools: ${this.getRegisteredTools().join(', ')}`);
150
+ }
151
+ switch (this.config.transport) {
152
+ case 'stdio': {
153
+ const transport = new StdioServerTransport();
154
+ await this.server.connect(transport);
155
+ break;
156
+ }
157
+ case 'http':
158
+ case 'sse': {
159
+ await this.startHttpServer();
160
+ break;
161
+ }
162
+ default:
163
+ throw new Error(`Unknown transport: ${this.config.transport}`);
164
+ }
165
+ this.started = true;
166
+ if (this.config.logging) {
167
+ console.log(`[MCPServer] Server started on ${this.config.transport} transport`);
168
+ }
169
+ }
170
+ /**
171
+ * Start HTTP server for MCP
172
+ */
173
+ async startHttpServer() {
174
+ const { createServer } = await import('node:http');
175
+ const { StreamableHTTPServerTransport } = await import('@modelcontextprotocol/sdk/server/streamableHttp.js');
176
+ const port = this.config.port ?? 3000;
177
+ const host = this.config.host ?? 'localhost';
178
+ const httpServer = createServer(async (req, res) => {
179
+ res.setHeader('Access-Control-Allow-Origin', '*');
180
+ res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS');
181
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
182
+ if (req.method === 'OPTIONS') {
183
+ res.writeHead(204);
184
+ res.end();
185
+ return;
186
+ }
187
+ if (req.method !== 'POST' || req.url !== '/mcp') {
188
+ res.writeHead(404);
189
+ res.end('Not Found');
190
+ return;
191
+ }
192
+ const chunks = [];
193
+ for await (const chunk of req) {
194
+ chunks.push(chunk);
195
+ }
196
+ const body = JSON.parse(Buffer.concat(chunks).toString());
197
+ const transport = new StreamableHTTPServerTransport({
198
+ sessionIdGenerator: undefined,
199
+ });
200
+ await this.server.connect(transport);
201
+ await transport.handleRequest(req, res, body);
202
+ });
203
+ await new Promise((resolve) => {
204
+ httpServer.listen(port, host, () => {
205
+ if (this.config.logging) {
206
+ console.log(`[MCPServer] HTTP server listening on http://${host}:${port}/mcp`);
207
+ }
208
+ resolve();
209
+ });
210
+ });
211
+ }
212
+ /**
213
+ * Stop the server
214
+ */
215
+ async stop() {
216
+ if (!this.started) {
217
+ return;
218
+ }
219
+ await this.server.close();
220
+ this.started = false;
221
+ if (this.config.logging) {
222
+ console.log('[MCPServer] Server stopped');
223
+ }
224
+ }
225
+ /**
226
+ * Check if server is running
227
+ */
228
+ isRunning() {
229
+ return this.started;
230
+ }
231
+ }
232
+ /**
233
+ * Create and start an MCP server with the given tools
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * await serveMCPTools([calculator, datetime], {
238
+ * name: 'my-tools',
239
+ * version: '1.0.0',
240
+ * transport: 'stdio',
241
+ * });
242
+ * ```
243
+ */
244
+ export async function serveMCPTools(tools, config) {
245
+ const server = new MCPServer(config);
246
+ server.registerTools(tools);
247
+ await server.start();
248
+ return server;
249
+ }
250
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * MCP Integration Types
3
+ */
4
+ import type { Tool } from '@cogitator-ai/types';
5
+ export type MCPTransportType = 'stdio' | 'http' | 'sse';
6
+ export interface MCPClientConfig {
7
+ /** Transport type */
8
+ transport: MCPTransportType;
9
+ /** For stdio transport: command to spawn */
10
+ command?: string;
11
+ /** For stdio transport: command arguments */
12
+ args?: string[];
13
+ /** For stdio transport: environment variables */
14
+ env?: Record<string, string>;
15
+ /** For HTTP transport: server URL */
16
+ url?: string;
17
+ /** Connection timeout in ms */
18
+ timeout?: number;
19
+ /** Client name for identification */
20
+ clientName?: string;
21
+ /** Client version */
22
+ clientVersion?: string;
23
+ }
24
+ export interface MCPResource {
25
+ uri: string;
26
+ name: string;
27
+ description?: string;
28
+ mimeType?: string;
29
+ }
30
+ export interface MCPResourceContent {
31
+ uri: string;
32
+ mimeType?: string;
33
+ text?: string;
34
+ blob?: string;
35
+ }
36
+ export interface MCPPrompt {
37
+ name: string;
38
+ description?: string;
39
+ arguments?: MCPPromptArgument[];
40
+ }
41
+ export interface MCPPromptArgument {
42
+ name: string;
43
+ description?: string;
44
+ required?: boolean;
45
+ }
46
+ export interface MCPPromptMessage {
47
+ role: 'user' | 'assistant';
48
+ content: {
49
+ type: 'text' | 'image' | 'resource';
50
+ text?: string;
51
+ data?: string;
52
+ mimeType?: string;
53
+ resource?: {
54
+ uri: string;
55
+ text?: string;
56
+ blob?: string;
57
+ };
58
+ };
59
+ }
60
+ export interface MCPServerConfig {
61
+ /** Server name */
62
+ name: string;
63
+ /** Server version */
64
+ version: string;
65
+ /** Transport type */
66
+ transport: MCPTransportType;
67
+ /** For HTTP transport: port to listen on */
68
+ port?: number;
69
+ /** For HTTP transport: host to bind to */
70
+ host?: string;
71
+ /** Enable logging */
72
+ logging?: boolean;
73
+ }
74
+ export interface MCPToolDefinition {
75
+ name: string;
76
+ description: string;
77
+ inputSchema: {
78
+ type: 'object';
79
+ properties: Record<string, unknown>;
80
+ required?: string[];
81
+ };
82
+ }
83
+ export interface MCPToolCallResult {
84
+ content: MCPToolContent[];
85
+ isError?: boolean;
86
+ }
87
+ export type MCPToolContent = {
88
+ type: 'text';
89
+ text: string;
90
+ } | {
91
+ type: 'image';
92
+ data: string;
93
+ mimeType: string;
94
+ } | {
95
+ type: 'resource';
96
+ resource: MCPResourceContent;
97
+ };
98
+ export interface ToolAdapterOptions {
99
+ /** Prefix to add to converted tool names */
100
+ namePrefix?: string;
101
+ /** Transform tool description */
102
+ descriptionTransform?: (description: string) => string;
103
+ }
104
+ /**
105
+ * Result of converting MCP tools to Cogitator tools
106
+ */
107
+ export interface ConvertedTools {
108
+ tools: Tool[];
109
+ cleanup: () => Promise<void>;
110
+ }
111
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP Integration Types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@cogitator-ai/mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP (Model Context Protocol) integration for Cogitator",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "dependencies": {
18
+ "@modelcontextprotocol/sdk": "^1.12.0",
19
+ "zod": "^3.22.4",
20
+ "zod-to-json-schema": "^3.24.5",
21
+ "@cogitator-ai/types": "0.1.0"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^20.10.0",
25
+ "typescript": "^5.3.0",
26
+ "vitest": "^1.6.0"
27
+ },
28
+ "peerDependencies": {
29
+ "@cogitator-ai/types": "0.1.0"
30
+ },
31
+ "engines": {
32
+ "node": ">=20.0.0"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/eL1fe/cogitator.git",
37
+ "directory": "packages/mcp"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "license": "MIT",
43
+ "scripts": {
44
+ "build": "tsc",
45
+ "dev": "tsc --watch",
46
+ "test": "vitest run",
47
+ "test:watch": "vitest",
48
+ "lint": "eslint src",
49
+ "clean": "rm -rf dist"
50
+ }
51
+ }