@novorb/mcp-core 2.1.2 → 3.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.
Files changed (240) hide show
  1. package/README.md +77 -163
  2. package/bin/mcp-core-jest.mjs +112 -0
  3. package/dist/auth.d.ts +57 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +74 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/bootstrap.d.ts +129 -0
  8. package/dist/bootstrap.d.ts.map +1 -0
  9. package/dist/bootstrap.js +206 -0
  10. package/dist/bootstrap.js.map +1 -0
  11. package/dist/client-input.d.ts +72 -0
  12. package/dist/client-input.d.ts.map +1 -0
  13. package/dist/client-input.js +109 -0
  14. package/dist/client-input.js.map +1 -0
  15. package/dist/credential-checks.d.ts +80 -0
  16. package/dist/credential-checks.d.ts.map +1 -0
  17. package/dist/credential-checks.js +189 -0
  18. package/dist/credential-checks.js.map +1 -0
  19. package/dist/credential-health.d.ts +12 -0
  20. package/dist/credential-health.d.ts.map +1 -0
  21. package/dist/credential-health.js +12 -0
  22. package/dist/credential-health.js.map +1 -0
  23. package/dist/credential-report.d.ts +46 -0
  24. package/dist/credential-report.d.ts.map +1 -0
  25. package/dist/credential-report.js +135 -0
  26. package/dist/credential-report.js.map +1 -0
  27. package/dist/credential-status-tool.d.ts +20 -0
  28. package/dist/credential-status-tool.d.ts.map +1 -0
  29. package/dist/credential-status-tool.js +33 -0
  30. package/dist/credential-status-tool.js.map +1 -0
  31. package/dist/credentials.d.ts +288 -0
  32. package/dist/credentials.d.ts.map +1 -0
  33. package/dist/credentials.js +652 -0
  34. package/dist/credentials.js.map +1 -0
  35. package/dist/express-peers.d.ts +29 -0
  36. package/dist/express-peers.d.ts.map +1 -0
  37. package/dist/express-peers.js +36 -0
  38. package/dist/express-peers.js.map +1 -0
  39. package/dist/express.d.ts +74 -0
  40. package/dist/express.d.ts.map +1 -0
  41. package/dist/express.js +164 -0
  42. package/dist/express.js.map +1 -0
  43. package/dist/http-client.d.ts +277 -42
  44. package/dist/http-client.d.ts.map +1 -1
  45. package/dist/http-client.js +620 -180
  46. package/dist/http-client.js.map +1 -1
  47. package/dist/index.d.ts +27 -6
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +47 -8
  50. package/dist/index.js.map +1 -1
  51. package/dist/limits.d.ts +28 -0
  52. package/dist/limits.d.ts.map +1 -0
  53. package/dist/limits.js +37 -0
  54. package/dist/limits.js.map +1 -0
  55. package/dist/list-pagination.d.ts +41 -0
  56. package/dist/list-pagination.d.ts.map +1 -0
  57. package/dist/list-pagination.js +104 -0
  58. package/dist/list-pagination.js.map +1 -0
  59. package/dist/net.d.ts +112 -0
  60. package/dist/net.d.ts.map +1 -0
  61. package/dist/net.js +490 -0
  62. package/dist/net.js.map +1 -0
  63. package/dist/notifications.d.ts +78 -0
  64. package/dist/notifications.d.ts.map +1 -0
  65. package/dist/notifications.js +173 -0
  66. package/dist/notifications.js.map +1 -0
  67. package/dist/pagination.d.ts +236 -5
  68. package/dist/pagination.d.ts.map +1 -1
  69. package/dist/pagination.js +393 -6
  70. package/dist/pagination.js.map +1 -1
  71. package/dist/prompts.d.ts +70 -0
  72. package/dist/prompts.d.ts.map +1 -0
  73. package/dist/prompts.js +109 -0
  74. package/dist/prompts.js.map +1 -0
  75. package/dist/protocol-errors.d.ts +15 -0
  76. package/dist/protocol-errors.d.ts.map +1 -0
  77. package/dist/protocol-errors.js +28 -0
  78. package/dist/protocol-errors.js.map +1 -0
  79. package/dist/protocol-logging.d.ts +37 -0
  80. package/dist/protocol-logging.d.ts.map +1 -0
  81. package/dist/protocol-logging.js +77 -0
  82. package/dist/protocol-logging.js.map +1 -0
  83. package/dist/rate-limiter.d.ts +36 -0
  84. package/dist/rate-limiter.d.ts.map +1 -0
  85. package/dist/rate-limiter.js +79 -0
  86. package/dist/rate-limiter.js.map +1 -0
  87. package/dist/request-state.d.ts +74 -0
  88. package/dist/request-state.d.ts.map +1 -0
  89. package/dist/request-state.js +190 -0
  90. package/dist/request-state.js.map +1 -0
  91. package/dist/resources.d.ts +181 -0
  92. package/dist/resources.d.ts.map +1 -0
  93. package/dist/resources.js +302 -0
  94. package/dist/resources.js.map +1 -0
  95. package/dist/result-limits.d.ts +80 -0
  96. package/dist/result-limits.d.ts.map +1 -0
  97. package/dist/result-limits.js +248 -0
  98. package/dist/result-limits.js.map +1 -0
  99. package/dist/retry.d.ts +79 -23
  100. package/dist/retry.d.ts.map +1 -1
  101. package/dist/retry.js +170 -57
  102. package/dist/retry.js.map +1 -1
  103. package/dist/sdk/client-stdio.d.ts +6 -0
  104. package/dist/sdk/client-stdio.d.ts.map +1 -0
  105. package/dist/sdk/client-stdio.js +6 -0
  106. package/dist/sdk/client-stdio.js.map +1 -0
  107. package/dist/sdk/client.d.ts +6 -0
  108. package/dist/sdk/client.d.ts.map +1 -0
  109. package/dist/sdk/client.js +6 -0
  110. package/dist/sdk/client.js.map +1 -0
  111. package/dist/sdk/express.d.ts +3 -0
  112. package/dist/sdk/express.d.ts.map +1 -0
  113. package/dist/sdk/express.js +11 -0
  114. package/dist/sdk/express.js.map +1 -0
  115. package/dist/sdk/node.d.ts +6 -0
  116. package/dist/sdk/node.d.ts.map +1 -0
  117. package/dist/sdk/node.js +6 -0
  118. package/dist/sdk/node.js.map +1 -0
  119. package/dist/sdk/server-stdio.d.ts +6 -0
  120. package/dist/sdk/server-stdio.d.ts.map +1 -0
  121. package/dist/sdk/server-stdio.js +6 -0
  122. package/dist/sdk/server-stdio.js.map +1 -0
  123. package/dist/sdk/server.d.ts +6 -0
  124. package/dist/sdk/server.d.ts.map +1 -0
  125. package/dist/sdk/server.js +6 -0
  126. package/dist/sdk/server.js.map +1 -0
  127. package/dist/server.d.ts +88 -35
  128. package/dist/server.d.ts.map +1 -1
  129. package/dist/server.js +98 -44
  130. package/dist/server.js.map +1 -1
  131. package/dist/task-request.d.ts +20 -0
  132. package/dist/task-request.d.ts.map +1 -0
  133. package/dist/task-request.js +43 -0
  134. package/dist/task-request.js.map +1 -0
  135. package/dist/task-store.d.ts +230 -0
  136. package/dist/task-store.d.ts.map +1 -0
  137. package/dist/task-store.js +459 -0
  138. package/dist/task-store.js.map +1 -0
  139. package/dist/task-tools.d.ts +115 -0
  140. package/dist/task-tools.d.ts.map +1 -0
  141. package/dist/task-tools.js +397 -0
  142. package/dist/task-tools.js.map +1 -0
  143. package/dist/testing/client.d.ts +25 -0
  144. package/dist/testing/client.d.ts.map +1 -0
  145. package/dist/testing/client.js +11 -0
  146. package/dist/testing/client.js.map +1 -0
  147. package/dist/testing/in-memory.d.ts +26 -0
  148. package/dist/testing/in-memory.d.ts.map +1 -0
  149. package/dist/testing/in-memory.js +41 -0
  150. package/dist/testing/in-memory.js.map +1 -0
  151. package/dist/testing/index.d.ts +20 -0
  152. package/dist/testing/index.d.ts.map +1 -0
  153. package/dist/testing/index.js +20 -0
  154. package/dist/testing/index.js.map +1 -0
  155. package/dist/testing/isolated-dirs.d.ts +27 -0
  156. package/dist/testing/isolated-dirs.d.ts.map +1 -0
  157. package/dist/testing/isolated-dirs.js +67 -0
  158. package/dist/testing/isolated-dirs.js.map +1 -0
  159. package/dist/testing/logs.d.ts +61 -0
  160. package/dist/testing/logs.d.ts.map +1 -0
  161. package/dist/testing/logs.js +113 -0
  162. package/dist/testing/logs.js.map +1 -0
  163. package/dist/testing/raw-http.d.ts +25 -0
  164. package/dist/testing/raw-http.d.ts.map +1 -0
  165. package/dist/testing/raw-http.js +41 -0
  166. package/dist/testing/raw-http.js.map +1 -0
  167. package/dist/testing/raw-peer.d.ts +43 -0
  168. package/dist/testing/raw-peer.d.ts.map +1 -0
  169. package/dist/testing/raw-peer.js +101 -0
  170. package/dist/testing/raw-peer.js.map +1 -0
  171. package/dist/testing/recording-server.d.ts +38 -0
  172. package/dist/testing/recording-server.d.ts.map +1 -0
  173. package/dist/testing/recording-server.js +38 -0
  174. package/dist/testing/recording-server.js.map +1 -0
  175. package/dist/testing/server-process.d.ts +76 -0
  176. package/dist/testing/server-process.d.ts.map +1 -0
  177. package/dist/testing/server-process.js +241 -0
  178. package/dist/testing/server-process.js.map +1 -0
  179. package/dist/testing/tools.d.ts +53 -0
  180. package/dist/testing/tools.d.ts.map +1 -0
  181. package/dist/testing/tools.js +98 -0
  182. package/dist/testing/tools.js.map +1 -0
  183. package/dist/testing/unit.d.ts +52 -0
  184. package/dist/testing/unit.d.ts.map +1 -0
  185. package/dist/testing/unit.js +95 -0
  186. package/dist/testing/unit.js.map +1 -0
  187. package/dist/tools.d.ts +205 -0
  188. package/dist/tools.d.ts.map +1 -0
  189. package/dist/tools.js +370 -0
  190. package/dist/tools.js.map +1 -0
  191. package/dist/transport.d.ts +143 -52
  192. package/dist/transport.d.ts.map +1 -1
  193. package/dist/transport.js +292 -123
  194. package/dist/transport.js.map +1 -1
  195. package/dist/url-path.d.ts +49 -0
  196. package/dist/url-path.d.ts.map +1 -0
  197. package/dist/url-path.js +165 -0
  198. package/dist/url-path.js.map +1 -0
  199. package/dist/utils/dataStore.d.ts +143 -0
  200. package/dist/utils/dataStore.d.ts.map +1 -0
  201. package/dist/utils/dataStore.js +429 -0
  202. package/dist/utils/dataStore.js.map +1 -0
  203. package/dist/utils/envLoader.d.ts +129 -0
  204. package/dist/utils/envLoader.d.ts.map +1 -0
  205. package/dist/utils/envLoader.js +399 -0
  206. package/dist/utils/envLoader.js.map +1 -0
  207. package/dist/utils/logger.d.ts +181 -0
  208. package/dist/utils/logger.d.ts.map +1 -0
  209. package/dist/utils/logger.js +664 -0
  210. package/dist/utils/logger.js.map +1 -0
  211. package/dist/utils/redact.d.ts +50 -0
  212. package/dist/utils/redact.d.ts.map +1 -0
  213. package/dist/utils/redact.js +318 -0
  214. package/dist/utils/redact.js.map +1 -0
  215. package/docs/api-reference.md +29 -0
  216. package/docs/building-a-server.md +63 -0
  217. package/docs/credentials.md +131 -0
  218. package/docs/data-store.md +37 -0
  219. package/docs/env.md +38 -0
  220. package/docs/features.md +28 -0
  221. package/docs/http-client.md +116 -0
  222. package/docs/logger.md +100 -0
  223. package/docs/migrating-to-v3.md +45 -0
  224. package/docs/outbound-urls.md +104 -0
  225. package/docs/pagination.md +45 -0
  226. package/docs/protocol-features.md +62 -0
  227. package/docs/resources-prompts-tasks.md +95 -0
  228. package/docs/sdk.md +33 -0
  229. package/docs/server.md +68 -0
  230. package/docs/testing-harness.md +139 -0
  231. package/docs/testing.md +151 -0
  232. package/docs/tools.md +88 -0
  233. package/docs/transport.md +85 -0
  234. package/examples/testing/tools.integration.test.example.ts +312 -0
  235. package/examples/testing/tools.unit.test.example.ts +149 -0
  236. package/package.json +130 -17
  237. package/dist/logger.d.ts +0 -80
  238. package/dist/logger.d.ts.map +0 -1
  239. package/dist/logger.js +0 -237
  240. package/dist/logger.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @novorb/mcp-core - Express adapter peer loading (internal)
3
+ *
4
+ * `express` and `@modelcontextprotocol/express` are OPTIONAL peer dependencies: a stdio-only or
5
+ * standalone `node:http` server never installs them (pnpm and npm would otherwise auto-install express,
6
+ * which `@modelcontextprotocol/express` declares as a required peer, into every consumer). Only the
7
+ * `./express` and `./sdk/express` subpaths load them, lazily, through this module; when they are absent
8
+ * those subpaths fail at import with `ExpressAdapterUnavailableError` and a clear install hint.
9
+ */
10
+ import type * as ExpressAdapter from '@modelcontextprotocol/express';
11
+ import type * as ExpressModule from 'express';
12
+ /** The two optional peers, as loaded. */
13
+ export interface ExpressPeers {
14
+ express: typeof ExpressModule.default;
15
+ adapter: typeof ExpressAdapter;
16
+ }
17
+ export declare const EXPRESS_PEERS_MISSING: string;
18
+ /** Thrown by the Express subpaths when the optional peers are not installed. */
19
+ export declare class ExpressAdapterUnavailableError extends Error {
20
+ constructor(cause?: unknown);
21
+ }
22
+ /** The default importer: the two packages as installed next to mcp-core. */
23
+ export declare function importExpressPeers(): Promise<ExpressPeers>;
24
+ /**
25
+ * Load the optional peers (`importer` is a test seam). Any import failure becomes an
26
+ * `ExpressAdapterUnavailableError` naming both packages.
27
+ */
28
+ export declare function loadExpressPeers(importer?: () => Promise<ExpressPeers>): Promise<ExpressPeers>;
29
+ //# sourceMappingURL=express-peers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-peers.d.ts","sourceRoot":"","sources":["../src/express-peers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,cAAc,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,KAAK,aAAa,MAAM,SAAS,CAAC;AAE9C,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,aAAa,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,OAAO,cAAc,CAAC;CAChC;AAED,eAAO,MAAM,qBAAqB,QAEyF,CAAC;AAE5H,gFAAgF;AAChF,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,KAAK,CAAC,EAAE,OAAO;CAI5B;AAED,4EAA4E;AAC5E,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAGhE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,GAAE,MAAM,OAAO,CAAC,YAAY,CAAsB,GACzD,OAAO,CAAC,YAAY,CAAC,CAMvB"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @novorb/mcp-core - Express adapter peer loading (internal)
3
+ *
4
+ * `express` and `@modelcontextprotocol/express` are OPTIONAL peer dependencies: a stdio-only or
5
+ * standalone `node:http` server never installs them (pnpm and npm would otherwise auto-install express,
6
+ * which `@modelcontextprotocol/express` declares as a required peer, into every consumer). Only the
7
+ * `./express` and `./sdk/express` subpaths load them, lazily, through this module; when they are absent
8
+ * those subpaths fail at import with `ExpressAdapterUnavailableError` and a clear install hint.
9
+ */
10
+ export const EXPRESS_PEERS_MISSING = 'install express and @modelcontextprotocol/express to use the Express adapter ' +
11
+ '(for example `pnpm add express @modelcontextprotocol/express`); they are optional peer dependencies of @novorb/mcp-core';
12
+ /** Thrown by the Express subpaths when the optional peers are not installed. */
13
+ export class ExpressAdapterUnavailableError extends Error {
14
+ constructor(cause) {
15
+ super(`[mcp-core] ${EXPRESS_PEERS_MISSING}`, cause === undefined ? undefined : { cause });
16
+ this.name = 'ExpressAdapterUnavailableError';
17
+ }
18
+ }
19
+ /** The default importer: the two packages as installed next to mcp-core. */
20
+ export async function importExpressPeers() {
21
+ const [expressModule, adapter] = await Promise.all([import('express'), import('@modelcontextprotocol/express')]);
22
+ return { express: expressModule.default, adapter };
23
+ }
24
+ /**
25
+ * Load the optional peers (`importer` is a test seam). Any import failure becomes an
26
+ * `ExpressAdapterUnavailableError` naming both packages.
27
+ */
28
+ export async function loadExpressPeers(importer = importExpressPeers) {
29
+ try {
30
+ return await importer();
31
+ }
32
+ catch (err) {
33
+ throw new ExpressAdapterUnavailableError(err);
34
+ }
35
+ }
36
+ //# sourceMappingURL=express-peers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-peers.js","sourceRoot":"","sources":["../src/express-peers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,MAAM,CAAC,MAAM,qBAAqB,GAChC,+EAA+E;IAC/E,yHAAyH,CAAC;AAE5H,gFAAgF;AAChF,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,YAAY,KAAe;QACzB,KAAK,CAAC,cAAc,qBAAqB,EAAE,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;IACjH,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAwC,kBAAkB;IAE1D,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,8BAA8B,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @novorb/mcp-core/express - mount the stateless MCP handler on an existing Express app
3
+ *
4
+ * For hosts that already run Express. Same handler, factory and context semantics as
5
+ * `startMcpServer`'s HTTP mode (`createMcpHandler(factory, { legacy: 'stateless' })` through
6
+ * `toNodeHandler`), with the same guards in the same order, built on `@modelcontextprotocol/express`:
7
+ *
8
+ * /health (optional, no auth) > Bearer gate (`requireBearerAuth` over the static key or a pluggable
9
+ * verifier, or the host's `authenticateRequest`; sets `req.auth`) > Host / Origin allow-lists
10
+ * (`hostHeaderValidation` / `originValidation`) > 415 (media-type essence) > 413 (body cap) >
11
+ * 400 -32700 (parse) > dispatch.
12
+ *
13
+ * `express` (`^4.18 || ^5`) and `@modelcontextprotocol/express` are OPTIONAL peer dependencies: an
14
+ * Express host installs both (the one sanctioned exception to "consumers import only from mcp-core"
15
+ * is that the host adds these two packages). This subpath loads them lazily at import; when either is
16
+ * missing the import fails with `ExpressAdapterUnavailableError` ("install express and
17
+ * @modelcontextprotocol/express ..."). Nothing else in mcp-core loads them.
18
+ *
19
+ * import express from 'express';
20
+ * import { mountMcpServer } from '@novorb/mcp-core/express';
21
+ * const app = express();
22
+ * const mcp = mountMcpServer(app, (req) => buildServer(req), { auth: { verifier: jwtVerifier } });
23
+ * app.listen(8080);
24
+ * // on shutdown: await mcp.close();
25
+ */
26
+ import { type AuthInfo, type ServerEventBus } from '@modelcontextprotocol/server';
27
+ import type { Request, Router } from 'express';
28
+ import { type HttpAuthOptions } from './auth.js';
29
+ import { type ServerFactory } from './transport.js';
30
+ export interface McpExpressOptions {
31
+ /** Route the MCP endpoint is served on (default `/mcp`). */
32
+ path?: string;
33
+ /** Serve `GET <health>` -> `{"status":"healthy"}` without auth: true = `/health` (default), false = off. */
34
+ health?: boolean | string;
35
+ /** Static Bearer key (default MCP_API_KEY); null runs open (like MCP_AUTH_DISABLED=true). */
36
+ apiKey?: string | null;
37
+ /** Bearer gate options; a `verifier` replaces the static key. */
38
+ auth?: HttpAuthOptions;
39
+ /** POST body cap in bytes (default MCP_MAX_BODY_BYTES, else 4 MiB). */
40
+ maxBodyBytes?: number;
41
+ /** Host allow-list (default MCP_ALLOWED_HOSTS). */
42
+ allowedHosts?: string[];
43
+ /** Origin allow-list (default MCP_ALLOWED_ORIGINS). */
44
+ allowedOrigins?: string[];
45
+ /** The environment the defaults are read from (default `process.env`). */
46
+ env?: NodeJS.ProcessEnv;
47
+ /**
48
+ * The change-event bus `subscriptions/listen` streams subscribe to (default: the process bus,
49
+ * `processBus()`, shared with `startMcpServer`). Pass a shared implementation on multi-instance hosts.
50
+ */
51
+ bus?: ServerEventBus;
52
+ /**
53
+ * For a host whose own middleware already authenticated the request (a token verifier sees only the
54
+ * token, never `req`): answers the `AuthInfo` set as `req.auth`, in place of the Bearer gate and
55
+ * `apiKey` / `auth.verifier` (combining it with either throws at construction; `MCP_API_KEY` is not
56
+ * read). It MUST throw for an unauthenticated request: whatever it returns is let through. A throw
57
+ * answers the SDK's challenge response (an `OAuthError` its own 401 / 403, anything else 500), as a
58
+ * failed Bearer check does.
59
+ */
60
+ authenticateRequest?: (req: Request) => AuthInfo | Promise<AuthInfo>;
61
+ /** Receives every SDK and adapter request error, so a host logs them its own way (default: the mcp-core logger). */
62
+ onError?: (error: unknown) => void;
63
+ }
64
+ /** A router carrying the MCP endpoint, plus `close()` for the SDK handler. */
65
+ export type McpExpressRouter = Router & {
66
+ close(): Promise<void>;
67
+ };
68
+ /** Build a router serving the MCP endpoint (and `/health`) with mcp-core's guards. Fail-closed auth. */
69
+ export declare function createMcpRouter(factory: ServerFactory, options?: McpExpressOptions): McpExpressRouter;
70
+ /** Mount `createMcpRouter(factory, options)` on `app`; returns the router (call `close()` on shutdown). */
71
+ export declare function mountMcpServer(app: {
72
+ use(router: Router): unknown;
73
+ }, factory: ServerFactory, options?: McpExpressOptions): McpExpressRouter;
74
+ //# sourceMappingURL=express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACL,KAAK,QAAQ,EAGb,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAgB,OAAO,EAA4B,MAAM,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAGhE,OAAO,EAKL,KAAK,aAAa,EAGnB,MAAM,gBAAgB,CAAC;AAMxB,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4GAA4G;IAC5G,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iEAAiE;IACjE,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrE,oHAAoH;IACpH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG;IAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAyFnE,wGAAwG;AACxG,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAyCzG;AAED,2GAA2G;AAC3G,wBAAgB,cAAc,CAC5B,GAAG,EAAE;IAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACrC,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAIlB"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * @novorb/mcp-core/express - mount the stateless MCP handler on an existing Express app
3
+ *
4
+ * For hosts that already run Express. Same handler, factory and context semantics as
5
+ * `startMcpServer`'s HTTP mode (`createMcpHandler(factory, { legacy: 'stateless' })` through
6
+ * `toNodeHandler`), with the same guards in the same order, built on `@modelcontextprotocol/express`:
7
+ *
8
+ * /health (optional, no auth) > Bearer gate (`requireBearerAuth` over the static key or a pluggable
9
+ * verifier, or the host's `authenticateRequest`; sets `req.auth`) > Host / Origin allow-lists
10
+ * (`hostHeaderValidation` / `originValidation`) > 415 (media-type essence) > 413 (body cap) >
11
+ * 400 -32700 (parse) > dispatch.
12
+ *
13
+ * `express` (`^4.18 || ^5`) and `@modelcontextprotocol/express` are OPTIONAL peer dependencies: an
14
+ * Express host installs both (the one sanctioned exception to "consumers import only from mcp-core"
15
+ * is that the host adds these two packages). This subpath loads them lazily at import; when either is
16
+ * missing the import fails with `ExpressAdapterUnavailableError` ("install express and
17
+ * @modelcontextprotocol/express ..."). Nothing else in mcp-core loads them.
18
+ *
19
+ * import express from 'express';
20
+ * import { mountMcpServer } from '@novorb/mcp-core/express';
21
+ * const app = express();
22
+ * const mcp = mountMcpServer(app, (req) => buildServer(req), { auth: { verifier: jwtVerifier } });
23
+ * app.listen(8080);
24
+ * // on shutdown: await mcp.close();
25
+ */
26
+ import { toNodeHandler } from '@modelcontextprotocol/node';
27
+ import { bearerAuthChallengeResponse, createMcpHandler, } from '@modelcontextprotocol/server';
28
+ import { bearerOptions } from './auth.js';
29
+ import { loadExpressPeers } from './express-peers.js';
30
+ import { processBus } from './notifications.js';
31
+ import { DEFAULT_MAX_BODY_BYTES, isJsonRequest, parseList, resolveHttpAuth, toHostname, toOriginHostname, } from './transport.js';
32
+ import { getLogger } from './utils/logger.js';
33
+ const { express, adapter } = await loadExpressPeers();
34
+ const { hostHeaderValidation, originValidation, requireBearerAuth } = adapter;
35
+ function reportError(error) {
36
+ const message = error instanceof Error ? error.message : String(error);
37
+ getLogger().error(`request error: ${message}`, 'mcp-core');
38
+ }
39
+ function contentTypeGuard() {
40
+ return (req, res, next) => {
41
+ if (req.method !== 'POST' || isJsonRequest(req)) {
42
+ next();
43
+ return;
44
+ }
45
+ res.status(415).json({ error: 'Unsupported Media Type: Content-Type must be application/json' });
46
+ };
47
+ }
48
+ function bodyReader(maxBodyBytes) {
49
+ const raw = express.raw({ type: () => true, limit: maxBodyBytes });
50
+ return [
51
+ (req, res, next) => {
52
+ // A body the host already parsed (an app-level express.json()) is used as is.
53
+ if (req.method !== 'POST' || (req.body !== undefined && !Buffer.isBuffer(req.body))) {
54
+ next();
55
+ return;
56
+ }
57
+ raw(req, res, next);
58
+ },
59
+ (req, res, next) => {
60
+ if (req.method !== 'POST' || !Buffer.isBuffer(req.body)) {
61
+ next();
62
+ return;
63
+ }
64
+ try {
65
+ req.body = JSON.parse(req.body.toString('utf8'));
66
+ next();
67
+ }
68
+ catch {
69
+ res
70
+ .status(400)
71
+ .json({ jsonrpc: '2.0', error: { code: -32700, message: 'Parse error: Invalid JSON' }, id: null });
72
+ }
73
+ },
74
+ ];
75
+ }
76
+ /** The host's request authenticator as the auth guard: `req.auth` on success, the SDK challenge otherwise. */
77
+ function requestAuthGate(authenticateRequest, resourceMetadataUrl, report) {
78
+ return async (req, res, next) => {
79
+ let auth;
80
+ try {
81
+ auth = await authenticateRequest(req);
82
+ }
83
+ catch (error) {
84
+ const response = bearerAuthChallengeResponse(error, resourceMetadataUrl ? { resourceMetadataUrl } : undefined);
85
+ // A refusal is the expected answer; anything else is a host fault the 500 body hides.
86
+ if (response.status >= 500)
87
+ report(error);
88
+ const challenge = response.headers.get('WWW-Authenticate');
89
+ if (challenge !== null)
90
+ res.set('WWW-Authenticate', challenge);
91
+ res
92
+ .status(response.status)
93
+ .type('application/json')
94
+ .send(await response.text());
95
+ return;
96
+ }
97
+ req.auth = auth;
98
+ next();
99
+ };
100
+ }
101
+ /** Express error middleware: 413 for the body cap, 500 (no detail) otherwise. */
102
+ function errorHandler(report) {
103
+ return (err, _req, res, next) => {
104
+ if (res.headersSent) {
105
+ next(err);
106
+ return;
107
+ }
108
+ const type = err?.type;
109
+ if (type === 'entity.too.large') {
110
+ res.status(413).set('Connection', 'close').json({ error: 'Payload Too Large' });
111
+ return;
112
+ }
113
+ report(err);
114
+ res.status(500).json({ error: 'Internal server error' });
115
+ };
116
+ }
117
+ /** Build a router serving the MCP endpoint (and `/health`) with mcp-core's guards. Fail-closed auth. */
118
+ export function createMcpRouter(factory, options = {}) {
119
+ const env = options.env ?? process.env;
120
+ const hostAuth = options.authenticateRequest;
121
+ if (hostAuth && (typeof options.apiKey === 'string' || options.auth?.verifier)) {
122
+ throw new Error('[mcp-core] authenticateRequest replaces the Bearer gate: do not combine it with apiKey or auth.verifier');
123
+ }
124
+ const { authEnabled, apiKey } = hostAuth ? { authEnabled: false, apiKey: '' } : resolveHttpAuth(options, env);
125
+ const gate = authEnabled ? bearerOptions(options.auth, apiKey || undefined) : undefined;
126
+ const allowedHosts = options.allowedHosts ?? parseList(env.MCP_ALLOWED_HOSTS);
127
+ const allowedOrigins = options.allowedOrigins ?? parseList(env.MCP_ALLOWED_ORIGINS);
128
+ const maxBodyBytes = options.maxBodyBytes ?? (Number(env.MCP_MAX_BODY_BYTES) || DEFAULT_MAX_BODY_BYTES);
129
+ const mcpPath = options.path ?? '/mcp';
130
+ const healthPath = options.health === false ? undefined : typeof options.health === 'string' ? options.health : '/health';
131
+ const report = options.onError ?? reportError;
132
+ const mcpHandler = createMcpHandler(factory, {
133
+ legacy: 'stateless',
134
+ onerror: report,
135
+ bus: options.bus ?? processBus(),
136
+ });
137
+ const nodeHandler = toNodeHandler(mcpHandler, { onerror: report });
138
+ const router = express.Router();
139
+ if (healthPath)
140
+ router.get(healthPath, (_req, res) => void res.json({ status: 'healthy' }));
141
+ const chain = [];
142
+ if (hostAuth)
143
+ chain.push(requestAuthGate(hostAuth, options.auth?.resourceMetadataUrl, report));
144
+ else if (gate)
145
+ chain.push(requireBearerAuth(gate));
146
+ if (allowedHosts.length > 0)
147
+ chain.push(hostHeaderValidation(allowedHosts.map(toHostname)));
148
+ if (allowedOrigins.length > 0)
149
+ chain.push(originValidation(allowedOrigins.map(toOriginHostname)));
150
+ chain.push(contentTypeGuard(), ...bodyReader(maxBodyBytes));
151
+ chain.push((req, res, next) => {
152
+ nodeHandler(req, res, req.method === 'POST' ? req.body : undefined).catch(next);
153
+ });
154
+ router.all(mcpPath, ...chain);
155
+ router.use(mcpPath, errorHandler(report));
156
+ return Object.assign(router, { close: () => mcpHandler.close() });
157
+ }
158
+ /** Mount `createMcpRouter(factory, options)` on `app`; returns the router (call `close()` on shutdown). */
159
+ export function mountMcpServer(app, factory, options = {}) {
160
+ const router = createMcpRouter(factory, options);
161
+ app.use(router);
162
+ return router;
163
+ }
164
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}