agent-task-manager-mcp 1.0.0 → 1.0.1
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/README.md +187 -22
- package/dist/certs.d.ts +11 -0
- package/dist/certs.d.ts.map +1 -0
- package/dist/certs.js +56 -0
- package/dist/certs.js.map +1 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +35 -0
- package/dist/cli.js.map +1 -0
- package/dist/hostValidation.d.ts +3 -0
- package/dist/hostValidation.d.ts.map +1 -0
- package/dist/hostValidation.js +58 -0
- package/dist/hostValidation.js.map +1 -0
- package/dist/http.server.d.ts +13 -0
- package/dist/http.server.d.ts.map +1 -0
- package/dist/http.server.js +188 -0
- package/dist/http.server.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -62
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +36 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +64 -0
- package/dist/server.js.map +1 -0
- package/dist/storage/adapters/json.adapter.d.ts +3 -0
- package/dist/storage/adapters/json.adapter.d.ts.map +1 -0
- package/dist/storage/adapters/json.adapter.js +314 -0
- package/dist/storage/adapters/json.adapter.js.map +1 -0
- package/dist/storage/adapters/mongodb.adapter.d.ts +3 -0
- package/dist/storage/adapters/mongodb.adapter.d.ts.map +1 -0
- package/dist/storage/adapters/mongodb.adapter.js +232 -0
- package/dist/storage/adapters/mongodb.adapter.js.map +1 -0
- package/dist/storage/adapters/postgres.adapter.d.ts +3 -0
- package/dist/storage/adapters/postgres.adapter.d.ts.map +1 -0
- package/dist/storage/adapters/postgres.adapter.js +440 -0
- package/dist/storage/adapters/postgres.adapter.js.map +1 -0
- package/dist/storage/adapters/sqlite.adapter.d.ts +3 -0
- package/dist/storage/adapters/sqlite.adapter.d.ts.map +1 -0
- package/dist/storage/adapters/sqlite.adapter.js +437 -0
- package/dist/storage/adapters/sqlite.adapter.js.map +1 -0
- package/dist/storage/index.d.ts +17 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +22 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/interface.d.ts +72 -0
- package/dist/storage/interface.d.ts.map +1 -0
- package/dist/storage/interface.js +3 -0
- package/dist/storage/interface.js.map +1 -0
- package/dist/storage/json.adapter.d.ts +3 -0
- package/dist/storage/json.adapter.d.ts.map +1 -0
- package/dist/storage/json.adapter.js +314 -0
- package/dist/storage/json.adapter.js.map +1 -0
- package/dist/storage/mongodb.adapter.d.ts +3 -0
- package/dist/storage/mongodb.adapter.d.ts.map +1 -0
- package/dist/storage/mongodb.adapter.js +232 -0
- package/dist/storage/mongodb.adapter.js.map +1 -0
- package/dist/storage/router.d.ts +30 -0
- package/dist/storage/router.d.ts.map +1 -0
- package/dist/storage/router.js +100 -0
- package/dist/storage/router.js.map +1 -0
- package/dist/storage/sqlite.adapter.d.ts +3 -0
- package/dist/storage/sqlite.adapter.d.ts.map +1 -0
- package/dist/storage/sqlite.adapter.js +437 -0
- package/dist/storage/sqlite.adapter.js.map +1 -0
- package/dist/storage/types.d.ts +80 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +7 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/tools/checkpoint.tools.d.ts.map +1 -1
- package/dist/tools/checkpoint.tools.js +8 -21
- package/dist/tools/checkpoint.tools.js.map +1 -1
- package/dist/tools/session.tools.d.ts.map +1 -1
- package/dist/tools/session.tools.js +21 -30
- package/dist/tools/session.tools.js.map +1 -1
- package/dist/tools/subtask.tools.d.ts.map +1 -1
- package/dist/tools/subtask.tools.js +9 -32
- package/dist/tools/subtask.tools.js.map +1 -1
- package/dist/tools/task.tools.d.ts.map +1 -1
- package/dist/tools/task.tools.js +23 -50
- package/dist/tools/task.tools.js.map +1 -1
- package/package.json +18 -4
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_HTTPS_PORT = exports.DEFAULT_HTTP_PORT = exports.runHttpServer = exports.findAvailablePort = void 0;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const node_net_1 = require("node:net");
|
|
9
|
+
const node_https_1 = __importDefault(require("node:https"));
|
|
10
|
+
const express_1 = __importDefault(require("express"));
|
|
11
|
+
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
|
|
12
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
13
|
+
const certs_js_1 = require("./certs.js");
|
|
14
|
+
const hostValidation_js_1 = require("./hostValidation.js");
|
|
15
|
+
const server_js_1 = require("./server.js");
|
|
16
|
+
const DEFAULT_HTTP_PORT = 8000;
|
|
17
|
+
exports.DEFAULT_HTTP_PORT = DEFAULT_HTTP_PORT;
|
|
18
|
+
const DEFAULT_HTTPS_PORT = 8443;
|
|
19
|
+
exports.DEFAULT_HTTPS_PORT = DEFAULT_HTTPS_PORT;
|
|
20
|
+
const MAX_PORT_ATTEMPTS = 100;
|
|
21
|
+
const RETRYABLE_CODES = new Set(['EADDRINUSE', 'EACCES']);
|
|
22
|
+
const findAvailablePort = (startPort) => new Promise((resolve, reject) => {
|
|
23
|
+
const tryPort = (port) => {
|
|
24
|
+
if (port - startPort >= MAX_PORT_ATTEMPTS) {
|
|
25
|
+
reject(new Error(`No available port found after ${MAX_PORT_ATTEMPTS} attempts`));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const server = (0, node_net_1.createServer)();
|
|
29
|
+
server.once('error', (err) => {
|
|
30
|
+
if (RETRYABLE_CODES.has(err.code ?? '')) {
|
|
31
|
+
tryPort(port + 1);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
reject(err);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
server.once('listening', () => {
|
|
38
|
+
server.close(() => resolve(port));
|
|
39
|
+
});
|
|
40
|
+
server.listen(port, '127.0.0.1');
|
|
41
|
+
};
|
|
42
|
+
tryPort(startPort);
|
|
43
|
+
});
|
|
44
|
+
exports.findAvailablePort = findAvailablePort;
|
|
45
|
+
const createApp = () => {
|
|
46
|
+
const app = (0, express_1.default)();
|
|
47
|
+
app.use(express_1.default.json());
|
|
48
|
+
app.use(hostValidation_js_1.hostValidationMiddleware);
|
|
49
|
+
return app;
|
|
50
|
+
};
|
|
51
|
+
const runHttpServer = async (opts = {}) => {
|
|
52
|
+
const { port: requestedPort, https: useHttps, cert, key, certKey, } = opts;
|
|
53
|
+
const defaultPort = useHttps ? DEFAULT_HTTPS_PORT : DEFAULT_HTTP_PORT;
|
|
54
|
+
const startPort = requestedPort ?? defaultPort;
|
|
55
|
+
const port = await findAvailablePort(startPort);
|
|
56
|
+
if (port !== startPort) {
|
|
57
|
+
console.error(`[MCP] Port ${startPort} busy (EADDRINUSE/EACCES), using ${port}`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.error(`[MCP] Port ${port} available`);
|
|
61
|
+
}
|
|
62
|
+
let tlsOptions = null;
|
|
63
|
+
if (useHttps) {
|
|
64
|
+
if (cert || certKey) {
|
|
65
|
+
tlsOptions = (0, certs_js_1.loadCertKey)({ cert, key, certKey });
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
tlsOptions = await (0, certs_js_1.generateSelfSigned)();
|
|
69
|
+
console.error('[MCP] No cert provided, using auto-generated self-signed');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const app = createApp();
|
|
73
|
+
const transports = {};
|
|
74
|
+
const mcpPostHandler = async (req, res) => {
|
|
75
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
76
|
+
const body = req.body;
|
|
77
|
+
try {
|
|
78
|
+
let transport;
|
|
79
|
+
if (sessionId && transports[sessionId]) {
|
|
80
|
+
transport = transports[sessionId];
|
|
81
|
+
}
|
|
82
|
+
else if (!sessionId && body && (0, types_js_1.isInitializeRequest)(body)) {
|
|
83
|
+
transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
84
|
+
sessionIdGenerator: () => (0, node_crypto_1.randomUUID)(),
|
|
85
|
+
onsessioninitialized: (sid) => {
|
|
86
|
+
if (sid)
|
|
87
|
+
transports[sid] = transport;
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
transport.onclose = () => {
|
|
91
|
+
const sid = transport.sessionId;
|
|
92
|
+
if (sid && transports[sid])
|
|
93
|
+
delete transports[sid];
|
|
94
|
+
};
|
|
95
|
+
const server = (0, server_js_1.createMcpServer)();
|
|
96
|
+
await server.connect(transport);
|
|
97
|
+
await transport.handleRequest(req, res, body);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
res.status(400).json({
|
|
102
|
+
jsonrpc: '2.0',
|
|
103
|
+
error: {
|
|
104
|
+
code: -32000,
|
|
105
|
+
message: 'Bad Request: No valid session ID provided',
|
|
106
|
+
},
|
|
107
|
+
id: null,
|
|
108
|
+
});
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
await transport.handleRequest(req, res, body);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
console.error('[MCP] HTTP handler error:', err);
|
|
115
|
+
if (!res.headersSent) {
|
|
116
|
+
res.status(500).json({
|
|
117
|
+
jsonrpc: '2.0',
|
|
118
|
+
error: { code: -32603, message: 'Internal server error' },
|
|
119
|
+
id: null,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
const mcpGetHandler = async (req, res) => {
|
|
125
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
126
|
+
if (!sessionId || !transports[sessionId]) {
|
|
127
|
+
res.status(400).send('Invalid or missing session ID');
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
await transports[sessionId].handleRequest(req, res);
|
|
131
|
+
};
|
|
132
|
+
const mcpDeleteHandler = async (req, res) => {
|
|
133
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
134
|
+
if (!sessionId || !transports[sessionId]) {
|
|
135
|
+
res.status(400).send('Invalid or missing session ID');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
await transports[sessionId].handleRequest(req, res);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
console.error('[MCP] Session delete error:', err);
|
|
143
|
+
if (!res.headersSent)
|
|
144
|
+
res.status(500).send('Error processing session termination');
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
app.post('/mcp', mcpPostHandler);
|
|
148
|
+
app.get('/mcp', mcpGetHandler);
|
|
149
|
+
app.delete('/mcp', mcpDeleteHandler);
|
|
150
|
+
const protocol = useHttps ? 'https' : 'http';
|
|
151
|
+
const shutdown = async () => {
|
|
152
|
+
for (const sid of Object.keys(transports)) {
|
|
153
|
+
try {
|
|
154
|
+
await transports[sid].close();
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
/* ignore */
|
|
158
|
+
}
|
|
159
|
+
delete transports[sid];
|
|
160
|
+
}
|
|
161
|
+
server.close();
|
|
162
|
+
};
|
|
163
|
+
const fullUrl = `${protocol}://127.0.0.1:${port}/mcp`;
|
|
164
|
+
let server;
|
|
165
|
+
if (useHttps && tlsOptions) {
|
|
166
|
+
server = node_https_1.default.createServer(tlsOptions, app);
|
|
167
|
+
server.listen(port, '127.0.0.1', () => {
|
|
168
|
+
console.error('[MCP] Server started successfully');
|
|
169
|
+
console.error(`[MCP] Full URL: ${fullUrl}`);
|
|
170
|
+
console.error(`[MCP] Use this URL in ChatGPT Desktop or other MCP clients`);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
server = app.listen(port, '127.0.0.1', () => {
|
|
175
|
+
console.error('[MCP] Server started successfully');
|
|
176
|
+
console.error(`[MCP] Full URL: ${fullUrl}`);
|
|
177
|
+
console.error(`[MCP] Use this URL in ChatGPT Desktop or other MCP clients`);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
process.on('SIGINT', () => {
|
|
181
|
+
shutdown().then(() => process.exit(0));
|
|
182
|
+
});
|
|
183
|
+
process.on('SIGTERM', () => {
|
|
184
|
+
shutdown().then(() => process.exit(0));
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
exports.runHttpServer = runHttpServer;
|
|
188
|
+
//# sourceMappingURL=http.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.server.js","sourceRoot":"","sources":["../src/http.server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,70 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
7
3
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
8
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
9
4
|
require("dotenv/config");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const session_tools_js_1 = require("./tools/session.tools.js");
|
|
14
|
-
const checkpoint_tools_js_1 = require("./tools/checkpoint.tools.js");
|
|
15
|
-
const allTools = [
|
|
16
|
-
...task_tools_js_1.taskToolDefinitions,
|
|
17
|
-
...subtask_tools_js_1.subtaskToolDefinitions,
|
|
18
|
-
...session_tools_js_1.sessionToolDefinitions,
|
|
19
|
-
...checkpoint_tools_js_1.checkpointToolDefinitions,
|
|
20
|
-
];
|
|
21
|
-
const server = new index_js_1.Server({ name: 'agent-task-manager-mcp', version: '1.0.0' }, { capabilities: { tools: {} } });
|
|
22
|
-
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
23
|
-
tools: allTools,
|
|
24
|
-
}));
|
|
25
|
-
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
26
|
-
const { name, arguments: args } = request.params;
|
|
27
|
-
try {
|
|
28
|
-
await (0, db_js_1.default)();
|
|
29
|
-
let result;
|
|
30
|
-
if (name.startsWith('task_')) {
|
|
31
|
-
result = await (0, task_tools_js_1.handleTaskTool)(name, args);
|
|
32
|
-
}
|
|
33
|
-
else if (name.startsWith('subtask_')) {
|
|
34
|
-
result = await (0, subtask_tools_js_1.handleSubtaskTool)(name, args);
|
|
35
|
-
}
|
|
36
|
-
else if (name.startsWith('session_')) {
|
|
37
|
-
result = await (0, session_tools_js_1.handleSessionTool)(name, args);
|
|
38
|
-
}
|
|
39
|
-
else if (name.startsWith('checkpoint_')) {
|
|
40
|
-
result = await (0, checkpoint_tools_js_1.handleCheckpointTool)(name, args);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
result = JSON.stringify({
|
|
44
|
-
success: false,
|
|
45
|
-
error: `Unknown tool: ${name}`,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
return { content: [{ type: 'text', text: result }] };
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
52
|
-
console.error(`[MCP] Tool "${name}" error:`, message);
|
|
53
|
-
return {
|
|
54
|
-
content: [
|
|
55
|
-
{
|
|
56
|
-
type: 'text',
|
|
57
|
-
text: JSON.stringify({ success: false, error: message }),
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
isError: true,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
});
|
|
5
|
+
const cli_js_1 = require("./cli.js");
|
|
6
|
+
const server_js_1 = require("./server.js");
|
|
7
|
+
const http_server_js_1 = require("./http.server.js");
|
|
64
8
|
const main = async () => {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
9
|
+
const opts = (0, cli_js_1.parseCli)();
|
|
10
|
+
if (opts.stdio) {
|
|
11
|
+
const server = (0, server_js_1.createMcpServer)();
|
|
12
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
13
|
+
await server.connect(transport);
|
|
14
|
+
console.error('[MCP] agent-task-manager-mcp server running on stdio');
|
|
15
|
+
console.error('[MCP] For HTTP/HTTPS with full URL run: npm run start:http or node dist/index.js --http');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
await (0, http_server_js_1.runHttpServer)({
|
|
19
|
+
port: opts.port,
|
|
20
|
+
https: opts.https,
|
|
21
|
+
cert: opts.cert,
|
|
22
|
+
key: opts.key,
|
|
23
|
+
certKey: opts.certKey,
|
|
24
|
+
});
|
|
68
25
|
};
|
|
69
26
|
main().catch((err) => {
|
|
70
27
|
console.error('[MCP] Fatal error:', err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,wEAAgF;AAChF,yBAAsB;AAEtB,qCAAmC;AACnC,2CAA6C;AAC7C,qDAAgD;AAEhD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,IAAI,GAAG,IAAA,iBAAQ,GAAE,CAAA;IAEvB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,IAAA,2BAAe,GAAE,CAAA;QAChC,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAA;QAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACrE,OAAO,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAA;QAC1G,OAAM;IACR,CAAC;IAED,MAAM,IAAA,8BAAa,EAAC;QAClB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
export declare const createMcpServer: () => Server<{
|
|
3
|
+
method: string;
|
|
4
|
+
params?: {
|
|
5
|
+
[x: string]: unknown;
|
|
6
|
+
_meta?: {
|
|
7
|
+
[x: string]: unknown;
|
|
8
|
+
progressToken?: string | number | undefined;
|
|
9
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
10
|
+
taskId: string;
|
|
11
|
+
} | undefined;
|
|
12
|
+
} | undefined;
|
|
13
|
+
} | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
method: string;
|
|
16
|
+
params?: {
|
|
17
|
+
[x: string]: unknown;
|
|
18
|
+
_meta?: {
|
|
19
|
+
[x: string]: unknown;
|
|
20
|
+
progressToken?: string | number | undefined;
|
|
21
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
22
|
+
taskId: string;
|
|
23
|
+
} | undefined;
|
|
24
|
+
} | undefined;
|
|
25
|
+
} | undefined;
|
|
26
|
+
}, {
|
|
27
|
+
[x: string]: unknown;
|
|
28
|
+
_meta?: {
|
|
29
|
+
[x: string]: unknown;
|
|
30
|
+
progressToken?: string | number | undefined;
|
|
31
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
32
|
+
taskId: string;
|
|
33
|
+
} | undefined;
|
|
34
|
+
} | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AA4BlE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkD3B,CAAA"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMcpServer = void 0;
|
|
4
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
5
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
6
|
+
const index_js_2 = require("./storage/index.js");
|
|
7
|
+
const task_tools_js_1 = require("./tools/task.tools.js");
|
|
8
|
+
const subtask_tools_js_1 = require("./tools/subtask.tools.js");
|
|
9
|
+
const session_tools_js_1 = require("./tools/session.tools.js");
|
|
10
|
+
const checkpoint_tools_js_1 = require("./tools/checkpoint.tools.js");
|
|
11
|
+
const allTools = [
|
|
12
|
+
...task_tools_js_1.taskToolDefinitions,
|
|
13
|
+
...subtask_tools_js_1.subtaskToolDefinitions,
|
|
14
|
+
...session_tools_js_1.sessionToolDefinitions,
|
|
15
|
+
...checkpoint_tools_js_1.checkpointToolDefinitions,
|
|
16
|
+
];
|
|
17
|
+
const createMcpServer = () => {
|
|
18
|
+
const server = new index_js_1.Server({ name: 'agent-task-manager-mcp', version: '1.0.0' }, { capabilities: { tools: {} } });
|
|
19
|
+
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
20
|
+
tools: allTools,
|
|
21
|
+
}));
|
|
22
|
+
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
23
|
+
const { name, arguments: args } = request.params;
|
|
24
|
+
try {
|
|
25
|
+
await (0, index_js_2.getRouter)().connect();
|
|
26
|
+
let result;
|
|
27
|
+
if (name.startsWith('task_')) {
|
|
28
|
+
result = await (0, task_tools_js_1.handleTaskTool)(name, args);
|
|
29
|
+
}
|
|
30
|
+
else if (name.startsWith('subtask_')) {
|
|
31
|
+
result = await (0, subtask_tools_js_1.handleSubtaskTool)(name, args);
|
|
32
|
+
}
|
|
33
|
+
else if (name.startsWith('session_')) {
|
|
34
|
+
result = await (0, session_tools_js_1.handleSessionTool)(name, args);
|
|
35
|
+
}
|
|
36
|
+
else if (name.startsWith('checkpoint_')) {
|
|
37
|
+
result = await (0, checkpoint_tools_js_1.handleCheckpointTool)(name, args);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
result = JSON.stringify({
|
|
41
|
+
success: false,
|
|
42
|
+
error: `Unknown tool: ${name}`,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return { content: [{ type: 'text', text: result }] };
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
49
|
+
console.error(`[MCP] Tool "${name}" error:`, message);
|
|
50
|
+
return {
|
|
51
|
+
content: [
|
|
52
|
+
{
|
|
53
|
+
type: 'text',
|
|
54
|
+
text: JSON.stringify({ success: false, error: message }),
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
isError: true,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return server;
|
|
62
|
+
};
|
|
63
|
+
exports.createMcpServer = createMcpServer;
|
|
64
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;AAAA,wEAAkE;AAClE,iEAG2C;AAE3C,iDAA8C;AAC9C,yDAA2E;AAC3E,+DAGiC;AACjC,+DAGiC;AACjC,qEAGoC;AAEpC,MAAM,QAAQ,GAAG;IACf,GAAG,mCAAmB;IACtB,GAAG,yCAAsB;IACzB,GAAG,yCAAsB;IACzB,GAAG,+CAAyB;CAC7B,CAAA;AAEM,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,OAAO,EAAE,EACpD,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAA;IAED,MAAM,CAAC,iBAAiB,CAAC,iCAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC,CAAA;IAEH,MAAM,CAAC,iBAAiB,CAAC,gCAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;QAEhD,IAAI,CAAC;YACH,MAAM,IAAA,oBAAS,GAAE,CAAC,OAAO,EAAE,CAAA;YAE3B,IAAI,MAAc,CAAA;YAElB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,MAAM,GAAG,MAAM,IAAA,8BAAc,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC3C,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAG,MAAM,IAAA,oCAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC9C,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAG,MAAM,IAAA,oCAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC9C,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC1C,MAAM,GAAG,MAAM,IAAA,0CAAoB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACjD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;oBACtB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,iBAAiB,IAAI,EAAE;iBAC/B,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,UAAU,EAAE,OAAO,CAAC,CAAA;YACrD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;qBACzD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAlDY,QAAA,eAAe,mBAkD3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.adapter.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/json.adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAmBrD,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,cAuRpD,CAAA"}
|