@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.
- package/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/adapter/tool-adapter.d.ts +85 -0
- package/dist/adapter/tool-adapter.d.ts.map +1 -0
- package/dist/adapter/tool-adapter.js +239 -0
- package/dist/adapter/tool-adapter.js.map +1 -0
- package/dist/client/mcp-client.d.ts +117 -0
- package/dist/client/mcp-client.d.ts.map +1 -0
- package/dist/client/mcp-client.js +276 -0
- package/dist/client/mcp-client.js.map +1 -0
- package/dist/client/transports.d.ts +46 -0
- package/dist/client/transports.d.ts.map +1 -0
- package/dist/client/transports.js +49 -0
- package/dist/client/transports.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/server/mcp-server.d.ts +94 -0
- package/dist/server/mcp-server.d.ts.map +1 -0
- package/dist/server/mcp-server.js +250 -0
- package/dist/server/mcp-server.js.map +1 -0
- package/dist/types.d.ts +111 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -0
|
@@ -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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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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
|
+
}
|