apprecio-mcp-base 1.0.3 → 1.0.5

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 CHANGED
@@ -6,5 +6,6 @@ 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
8
  export { createServer } from './server/createExpressServer.js';
9
+ export type { ServerSetup } from './server/createExpressServer.js';
9
10
  export { isPortAvailable, findAvailablePort, getRandomAvailablePort, } from './utils/portFinder.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -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,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,uBAAuB,CAAC"}
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;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,uBAAuB,CAAC"}
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,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,gBAAgB;AAChB,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,uBAAuB,CAAC"}
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;AAG/D,gBAAgB;AAChB,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,uBAAuB,CAAC"}
@@ -1,4 +1,12 @@
1
1
  import http from 'http';
2
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- export declare function createServer(mcpServer: McpServer, port: number): Promise<http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>>;
2
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
+ export interface ServerSetup {
4
+ httpServer: http.Server;
5
+ transport: StreamableHTTPServerTransport;
6
+ }
7
+ /**
8
+ * Crea el servidor Express y el transport, pero NO inicia el servidor ni conecta
9
+ * La conexión y el listen() se hacen en McpBaseServer.start()
10
+ */
11
+ export declare function createServer(port: number): Promise<ServerSetup>;
4
12
  //# sourceMappingURL=createExpressServer.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"createExpressServer.d.ts","sourceRoot":"","sources":["../../src/server/createExpressServer.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAGnG,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IACxB,SAAS,EAAE,6BAA6B,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0ErE"}
@@ -2,12 +2,23 @@ import express from 'express';
2
2
  import http from 'http';
3
3
  import cors from 'cors';
4
4
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
5
- import { logger } from '../core/logger';
6
- export async function createServer(mcpServer, port) {
5
+ import { logger } from '../core/logger.js';
6
+ /**
7
+ * Crea el servidor Express y el transport, pero NO inicia el servidor ni conecta
8
+ * La conexión y el listen() se hacen en McpBaseServer.start()
9
+ */
10
+ export async function createServer(port) {
7
11
  const app = express();
8
12
  app.use(cors({
9
13
  origin: "*",
10
- allowedHeaders: ["Content-Type", "Authorization", "Mcp-Session-Id", "Mcp-Protocol-Version", "Accept", "User-Agent", "Authorization", "authorization"],
14
+ allowedHeaders: [
15
+ "Content-Type",
16
+ "Authorization",
17
+ "Mcp-Session-Id",
18
+ "Mcp-Protocol-Version",
19
+ "Accept",
20
+ "User-Agent"
21
+ ],
11
22
  exposedHeaders: ["Mcp-Session-Id", "Mcp-Protocol-Version"],
12
23
  }));
13
24
  app.use((req, res, next) => {
@@ -17,17 +28,21 @@ export async function createServer(mcpServer, port) {
17
28
  }
18
29
  next();
19
30
  });
31
+ // Crear transport pero NO conectar todavía
20
32
  const transport = new StreamableHTTPServerTransport({
21
33
  sessionIdGenerator: undefined,
22
34
  enableJsonResponse: true,
23
35
  });
24
- await mcpServer.connect(transport);
36
+ // Configurar endpoints
25
37
  app.all("/sse", async (req, res) => {
26
38
  try {
27
39
  await transport.handleRequest(req, res, req.body);
28
40
  }
29
41
  catch (error) {
30
42
  logger.error("Error handling /sse:", error);
43
+ if (!res.headersSent) {
44
+ res.status(500).json({ error: 'Internal server error' });
45
+ }
31
46
  }
32
47
  });
33
48
  app.all("/messages", async (req, res) => {
@@ -36,15 +51,25 @@ export async function createServer(mcpServer, port) {
36
51
  }
37
52
  catch (error) {
38
53
  logger.error("Error handling /messages:", error);
54
+ if (!res.headersSent) {
55
+ res.status(500).json({ error: 'Internal server error' });
56
+ }
39
57
  }
40
58
  });
41
- const httpServer = http.createServer(app);
42
- httpServer.listen(port, () => {
43
- logger.info(`MCP Server (Express with SSE & Streamable HTTP) listening on port ${port}`);
44
- });
45
- httpServer.on('error', (error) => {
46
- logger.error('HTTP Server error:', error);
59
+ // Health check
60
+ app.get("/health", (req, res) => {
61
+ res.json({
62
+ status: "healthy",
63
+ timestamp: new Date().toISOString(),
64
+ port: port
65
+ });
47
66
  });
48
- return httpServer;
67
+ // Crear servidor HTTP pero NO hacer listen() todavía
68
+ const httpServer = http.createServer(app);
69
+ // IMPORTANTE: NO hacer httpServer.listen() aquí
70
+ // Eso lo hace McpBaseServer.start()
71
+ logger.info(`Express app configured for port ${port}`);
72
+ // Retornar servidor y transport para que McpBaseServer los maneje
73
+ return { httpServer, transport };
49
74
  }
50
75
  //# sourceMappingURL=createExpressServer.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"createExpressServer.js","sourceRoot":"","sources":["../../src/server/createExpressServer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apprecio-mcp-base",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Base package for creating Apprecio MCP servers with consistency",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",