apprecio-mcp-base 1.0.1 → 1.0.2
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/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server/createExpressServer.d.ts +2 -11
- package/dist/server/createExpressServer.d.ts.map +1 -1
- package/dist/server/createExpressServer.js +32 -80
- package/dist/server/createExpressServer.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export type * from './core/types.js';
|
|
|
5
5
|
export { AuthMiddleware, createAuthMiddleware } from './middleware/auth.js';
|
|
6
6
|
export { MongoDBConnector, createMongoDBConnector } from './database/mongodb.js';
|
|
7
7
|
export type { MongoDBOptions } from './database/mongodb.js';
|
|
8
|
-
export {
|
|
9
|
-
export type { CreateServerOptions } from './server/createExpressServer.js';
|
|
8
|
+
export { createServer } from './server/createExpressServer.js';
|
|
10
9
|
export { isPortAvailable, findAvailablePort, getRandomAvailablePort, } from './utils/portFinder.js';
|
|
11
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1E,mBAAmB,iBAAiB,CAAC;AAGrC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1E,mBAAmB,iBAAiB,CAAC;AAGrC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ export { AuthMiddleware, createAuthMiddleware } from './middleware/auth.js';
|
|
|
7
7
|
// Database exports
|
|
8
8
|
export { MongoDBConnector, createMongoDBConnector } from './database/mongodb.js';
|
|
9
9
|
// Server exports
|
|
10
|
-
export {
|
|
10
|
+
export { createServer } from './server/createExpressServer.js';
|
|
11
11
|
// Utils exports
|
|
12
12
|
export { isPortAvailable, findAvailablePort, getRandomAvailablePort, } from './utils/portFinder.js';
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG1E,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,mBAAmB;AACnB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,iBAAiB;AACjB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG1E,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,mBAAmB;AACnB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,gBAAgB;AAChB,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import http from 'http';
|
|
2
2
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
-
|
|
4
|
-
export interface CreateServerOptions {
|
|
5
|
-
mcpServer: McpServer;
|
|
6
|
-
config: BaseConfig;
|
|
7
|
-
port: number;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Crea y configura el servidor Express con todos los middlewares
|
|
11
|
-
*/
|
|
12
|
-
export declare function createExpressServer(options: CreateServerOptions): Promise<HttpServer>;
|
|
3
|
+
export declare function createServer(mcpServer: McpServer, port: number): Promise<http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>>;
|
|
13
4
|
//# sourceMappingURL=createExpressServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createExpressServer.d.ts","sourceRoot":"","sources":["../../src/server/createExpressServer.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"createExpressServer.d.ts","sourceRoot":"","sources":["../../src/server/createExpressServer.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,iFA2CpE"}
|
|
@@ -1,98 +1,50 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
|
+
import http from 'http';
|
|
2
3
|
import cors from 'cors';
|
|
3
|
-
import
|
|
4
|
-
import rateLimit from 'express-rate-limit';
|
|
5
|
-
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
6
|
-
import rawBody from 'raw-body';
|
|
4
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
7
5
|
import { logger } from '../core/logger';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Crea y configura el servidor Express con todos los middlewares
|
|
11
|
-
*/
|
|
12
|
-
export async function createExpressServer(options) {
|
|
13
|
-
const { mcpServer, config, port } = options;
|
|
6
|
+
export async function createServer(mcpServer, port) {
|
|
14
7
|
const app = express();
|
|
15
|
-
// Security middlewares
|
|
16
|
-
app.use(helmet());
|
|
17
8
|
app.use(cors({
|
|
18
|
-
origin:
|
|
19
|
-
|
|
9
|
+
origin: "*",
|
|
10
|
+
allowedHeaders: ["Content-Type", "Authorization", "Mcp-Session-Id", "Mcp-Protocol-Version", "Accept", "User-Agent", "Authorization", "authorization"],
|
|
11
|
+
exposedHeaders: ["Mcp-Session-Id", "Mcp-Protocol-Version"],
|
|
20
12
|
}));
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
app.use((req, res, next) => {
|
|
14
|
+
// Fix Accept header for MCP SDK strict check
|
|
15
|
+
if (req.headers.accept === "*/*" || !req.headers.accept) {
|
|
16
|
+
req.headers.accept = "application/json, text/event-stream";
|
|
17
|
+
}
|
|
18
|
+
next();
|
|
26
19
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
// Health check endpoint (sin autenticación)
|
|
31
|
-
app.get('/health', (req, res) => {
|
|
32
|
-
res.json({
|
|
33
|
-
status: 'healthy',
|
|
34
|
-
timestamp: new Date().toISOString(),
|
|
35
|
-
});
|
|
20
|
+
const transport = new StreamableHTTPServerTransport({
|
|
21
|
+
sessionIdGenerator: undefined,
|
|
22
|
+
enableJsonResponse: true,
|
|
36
23
|
});
|
|
37
|
-
|
|
38
|
-
app.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
});
|
|
24
|
+
await mcpServer.connect(transport);
|
|
25
|
+
app.all("/sse", async (req, res) => {
|
|
26
|
+
try {
|
|
27
|
+
await transport.handleRequest(req, res, req.body);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
logger.error("Error handling /sse:", error);
|
|
31
|
+
}
|
|
46
32
|
});
|
|
47
|
-
|
|
48
|
-
app.post('/message', authMiddleware.authenticate, async (req, res) => {
|
|
33
|
+
app.all("/messages", async (req, res) => {
|
|
49
34
|
try {
|
|
50
|
-
|
|
51
|
-
length: req.headers['content-length'],
|
|
52
|
-
limit: '10mb',
|
|
53
|
-
});
|
|
54
|
-
const message = JSON.parse(body.toString('utf-8'));
|
|
55
|
-
logger.debug('Received MCP message', {
|
|
56
|
-
method: message.method,
|
|
57
|
-
id: message.id,
|
|
58
|
-
});
|
|
59
|
-
// Aquí se procesaría el mensaje MCP
|
|
60
|
-
// Por ahora solo respondemos OK
|
|
61
|
-
res.json({
|
|
62
|
-
jsonrpc: '2.0',
|
|
63
|
-
id: message.id,
|
|
64
|
-
result: {},
|
|
65
|
-
});
|
|
35
|
+
await transport.handleRequest(req, res, req.body);
|
|
66
36
|
}
|
|
67
37
|
catch (error) {
|
|
68
|
-
logger.error(
|
|
69
|
-
res.status(500).json({
|
|
70
|
-
jsonrpc: '2.0',
|
|
71
|
-
error: {
|
|
72
|
-
code: -32603,
|
|
73
|
-
message: 'Internal server error',
|
|
74
|
-
},
|
|
75
|
-
});
|
|
38
|
+
logger.error("Error handling /messages:", error);
|
|
76
39
|
}
|
|
77
40
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
logger.
|
|
81
|
-
res.status(500).json({
|
|
82
|
-
error: 'Internal Server Error',
|
|
83
|
-
message: process.env.NODE_ENV === 'development' ? err.message : undefined,
|
|
84
|
-
});
|
|
41
|
+
const httpServer = http.createServer(app);
|
|
42
|
+
httpServer.listen(port, () => {
|
|
43
|
+
logger.info(`MCP Server (Express with SSE & Streamable HTTP) listening on port ${port}`);
|
|
85
44
|
});
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const server = app.listen(port, () => {
|
|
89
|
-
logger.info(`Express server listening on port ${port}`);
|
|
90
|
-
resolve(server);
|
|
91
|
-
});
|
|
92
|
-
server.on('error', (error) => {
|
|
93
|
-
logger.error('Server error:', error);
|
|
94
|
-
reject(error);
|
|
95
|
-
});
|
|
45
|
+
httpServer.on('error', (error) => {
|
|
46
|
+
logger.error('HTTP Server error:', error);
|
|
96
47
|
});
|
|
48
|
+
return httpServer;
|
|
97
49
|
}
|
|
98
50
|
//# sourceMappingURL=createExpressServer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createExpressServer.js","sourceRoot":"","sources":["../../src/server/createExpressServer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createExpressServer.js","sourceRoot":"","sources":["../../src/server/createExpressServer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAoB,EAAE,IAAY;IACjE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QACT,MAAM,EAAE,GAAG;QACX,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC;QACrJ,cAAc,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;KAC7D,CAAC,CAAC,CAAC;IACJ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACvB,6CAA6C;QAC7C,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACtD,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,qCAAqC,CAAC;QAC/D,CAAC;QACD,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;QAChD,kBAAkB,EAAE,SAAS;QAC7B,kBAAkB,EAAE,IAAI;KAC3B,CAAC,CAAC;IACH,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC/B,IAAI,CAAC;YACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,IAAI,CAAC;YACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC1C,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC,IAAI,CAAC,qEAAqE,IAAI,EAAE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7B,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACtB,CAAC"}
|