@mcp-i/core 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.
Files changed (226) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +390 -0
  3. package/dist/auth/handshake.d.ts +104 -0
  4. package/dist/auth/handshake.d.ts.map +1 -0
  5. package/dist/auth/handshake.js +230 -0
  6. package/dist/auth/handshake.js.map +1 -0
  7. package/dist/auth/index.d.ts +3 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +2 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/auth/types.d.ts +31 -0
  12. package/dist/auth/types.d.ts.map +1 -0
  13. package/dist/auth/types.js +7 -0
  14. package/dist/auth/types.js.map +1 -0
  15. package/dist/delegation/audience-validator.d.ts +9 -0
  16. package/dist/delegation/audience-validator.d.ts.map +1 -0
  17. package/dist/delegation/audience-validator.js +17 -0
  18. package/dist/delegation/audience-validator.js.map +1 -0
  19. package/dist/delegation/bitstring.d.ts +37 -0
  20. package/dist/delegation/bitstring.d.ts.map +1 -0
  21. package/dist/delegation/bitstring.js +117 -0
  22. package/dist/delegation/bitstring.js.map +1 -0
  23. package/dist/delegation/cascading-revocation.d.ts +45 -0
  24. package/dist/delegation/cascading-revocation.d.ts.map +1 -0
  25. package/dist/delegation/cascading-revocation.js +148 -0
  26. package/dist/delegation/cascading-revocation.js.map +1 -0
  27. package/dist/delegation/delegation-graph.d.ts +49 -0
  28. package/dist/delegation/delegation-graph.d.ts.map +1 -0
  29. package/dist/delegation/delegation-graph.js +99 -0
  30. package/dist/delegation/delegation-graph.js.map +1 -0
  31. package/dist/delegation/did-key-resolver.d.ts +64 -0
  32. package/dist/delegation/did-key-resolver.d.ts.map +1 -0
  33. package/dist/delegation/did-key-resolver.js +154 -0
  34. package/dist/delegation/did-key-resolver.js.map +1 -0
  35. package/dist/delegation/did-web-resolver.d.ts +83 -0
  36. package/dist/delegation/did-web-resolver.d.ts.map +1 -0
  37. package/dist/delegation/did-web-resolver.js +218 -0
  38. package/dist/delegation/did-web-resolver.js.map +1 -0
  39. package/dist/delegation/index.d.ts +21 -0
  40. package/dist/delegation/index.d.ts.map +1 -0
  41. package/dist/delegation/index.js +21 -0
  42. package/dist/delegation/index.js.map +1 -0
  43. package/dist/delegation/outbound-headers.d.ts +81 -0
  44. package/dist/delegation/outbound-headers.d.ts.map +1 -0
  45. package/dist/delegation/outbound-headers.js +139 -0
  46. package/dist/delegation/outbound-headers.js.map +1 -0
  47. package/dist/delegation/outbound-proof.d.ts +43 -0
  48. package/dist/delegation/outbound-proof.d.ts.map +1 -0
  49. package/dist/delegation/outbound-proof.js +52 -0
  50. package/dist/delegation/outbound-proof.js.map +1 -0
  51. package/dist/delegation/statuslist-manager.d.ts +44 -0
  52. package/dist/delegation/statuslist-manager.d.ts.map +1 -0
  53. package/dist/delegation/statuslist-manager.js +126 -0
  54. package/dist/delegation/statuslist-manager.js.map +1 -0
  55. package/dist/delegation/storage/memory-graph-storage.d.ts +70 -0
  56. package/dist/delegation/storage/memory-graph-storage.d.ts.map +1 -0
  57. package/dist/delegation/storage/memory-graph-storage.js +145 -0
  58. package/dist/delegation/storage/memory-graph-storage.js.map +1 -0
  59. package/dist/delegation/storage/memory-statuslist-storage.d.ts +19 -0
  60. package/dist/delegation/storage/memory-statuslist-storage.d.ts.map +1 -0
  61. package/dist/delegation/storage/memory-statuslist-storage.js +33 -0
  62. package/dist/delegation/storage/memory-statuslist-storage.js.map +1 -0
  63. package/dist/delegation/utils.d.ts +49 -0
  64. package/dist/delegation/utils.d.ts.map +1 -0
  65. package/dist/delegation/utils.js +131 -0
  66. package/dist/delegation/utils.js.map +1 -0
  67. package/dist/delegation/vc-issuer.d.ts +56 -0
  68. package/dist/delegation/vc-issuer.d.ts.map +1 -0
  69. package/dist/delegation/vc-issuer.js +80 -0
  70. package/dist/delegation/vc-issuer.js.map +1 -0
  71. package/dist/delegation/vc-verifier.d.ts +112 -0
  72. package/dist/delegation/vc-verifier.d.ts.map +1 -0
  73. package/dist/delegation/vc-verifier.js +280 -0
  74. package/dist/delegation/vc-verifier.js.map +1 -0
  75. package/dist/index.d.ts +45 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +53 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/logging/index.d.ts +2 -0
  80. package/dist/logging/index.d.ts.map +1 -0
  81. package/dist/logging/index.js +2 -0
  82. package/dist/logging/index.js.map +1 -0
  83. package/dist/logging/logger.d.ts +23 -0
  84. package/dist/logging/logger.d.ts.map +1 -0
  85. package/dist/logging/logger.js +82 -0
  86. package/dist/logging/logger.js.map +1 -0
  87. package/dist/middleware/index.d.ts +7 -0
  88. package/dist/middleware/index.d.ts.map +1 -0
  89. package/dist/middleware/index.js +7 -0
  90. package/dist/middleware/index.js.map +1 -0
  91. package/dist/middleware/with-mcpi.d.ts +152 -0
  92. package/dist/middleware/with-mcpi.d.ts.map +1 -0
  93. package/dist/middleware/with-mcpi.js +472 -0
  94. package/dist/middleware/with-mcpi.js.map +1 -0
  95. package/dist/proof/errors.d.ts +49 -0
  96. package/dist/proof/errors.d.ts.map +1 -0
  97. package/dist/proof/errors.js +61 -0
  98. package/dist/proof/errors.js.map +1 -0
  99. package/dist/proof/generator.d.ts +65 -0
  100. package/dist/proof/generator.d.ts.map +1 -0
  101. package/dist/proof/generator.js +163 -0
  102. package/dist/proof/generator.js.map +1 -0
  103. package/dist/proof/index.d.ts +4 -0
  104. package/dist/proof/index.d.ts.map +1 -0
  105. package/dist/proof/index.js +4 -0
  106. package/dist/proof/index.js.map +1 -0
  107. package/dist/proof/verifier.d.ts +108 -0
  108. package/dist/proof/verifier.d.ts.map +1 -0
  109. package/dist/proof/verifier.js +299 -0
  110. package/dist/proof/verifier.js.map +1 -0
  111. package/dist/providers/base.d.ts +64 -0
  112. package/dist/providers/base.d.ts.map +1 -0
  113. package/dist/providers/base.js +19 -0
  114. package/dist/providers/base.js.map +1 -0
  115. package/dist/providers/index.d.ts +3 -0
  116. package/dist/providers/index.d.ts.map +1 -0
  117. package/dist/providers/index.js +3 -0
  118. package/dist/providers/index.js.map +1 -0
  119. package/dist/providers/memory.d.ts +33 -0
  120. package/dist/providers/memory.d.ts.map +1 -0
  121. package/dist/providers/memory.js +102 -0
  122. package/dist/providers/memory.js.map +1 -0
  123. package/dist/session/index.d.ts +2 -0
  124. package/dist/session/index.d.ts.map +1 -0
  125. package/dist/session/index.js +2 -0
  126. package/dist/session/index.js.map +1 -0
  127. package/dist/session/manager.d.ts +77 -0
  128. package/dist/session/manager.d.ts.map +1 -0
  129. package/dist/session/manager.js +251 -0
  130. package/dist/session/manager.js.map +1 -0
  131. package/dist/types/protocol.d.ts +320 -0
  132. package/dist/types/protocol.d.ts.map +1 -0
  133. package/dist/types/protocol.js +229 -0
  134. package/dist/types/protocol.js.map +1 -0
  135. package/dist/utils/base58.d.ts +31 -0
  136. package/dist/utils/base58.d.ts.map +1 -0
  137. package/dist/utils/base58.js +104 -0
  138. package/dist/utils/base58.js.map +1 -0
  139. package/dist/utils/base64.d.ts +13 -0
  140. package/dist/utils/base64.d.ts.map +1 -0
  141. package/dist/utils/base64.js +99 -0
  142. package/dist/utils/base64.js.map +1 -0
  143. package/dist/utils/crypto-service.d.ts +37 -0
  144. package/dist/utils/crypto-service.d.ts.map +1 -0
  145. package/dist/utils/crypto-service.js +153 -0
  146. package/dist/utils/crypto-service.js.map +1 -0
  147. package/dist/utils/did-helpers.d.ts +156 -0
  148. package/dist/utils/did-helpers.d.ts.map +1 -0
  149. package/dist/utils/did-helpers.js +193 -0
  150. package/dist/utils/did-helpers.js.map +1 -0
  151. package/dist/utils/ed25519-constants.d.ts +18 -0
  152. package/dist/utils/ed25519-constants.d.ts.map +1 -0
  153. package/dist/utils/ed25519-constants.js +21 -0
  154. package/dist/utils/ed25519-constants.js.map +1 -0
  155. package/dist/utils/index.d.ts +5 -0
  156. package/dist/utils/index.d.ts.map +1 -0
  157. package/dist/utils/index.js +5 -0
  158. package/dist/utils/index.js.map +1 -0
  159. package/package.json +105 -0
  160. package/src/__tests__/integration/full-flow.test.ts +362 -0
  161. package/src/__tests__/providers/base.test.ts +173 -0
  162. package/src/__tests__/providers/memory.test.ts +332 -0
  163. package/src/__tests__/utils/mock-providers.ts +319 -0
  164. package/src/__tests__/utils/node-crypto-provider.ts +93 -0
  165. package/src/auth/handshake.ts +411 -0
  166. package/src/auth/index.ts +11 -0
  167. package/src/auth/types.ts +40 -0
  168. package/src/delegation/__tests__/audience-validator.test.ts +110 -0
  169. package/src/delegation/__tests__/bitstring.test.ts +346 -0
  170. package/src/delegation/__tests__/cascading-revocation.test.ts +624 -0
  171. package/src/delegation/__tests__/delegation-graph.test.ts +623 -0
  172. package/src/delegation/__tests__/did-key-resolver.test.ts +265 -0
  173. package/src/delegation/__tests__/did-web-resolver.test.ts +467 -0
  174. package/src/delegation/__tests__/outbound-headers.test.ts +230 -0
  175. package/src/delegation/__tests__/outbound-proof.test.ts +179 -0
  176. package/src/delegation/__tests__/statuslist-manager.test.ts +515 -0
  177. package/src/delegation/__tests__/utils.test.ts +185 -0
  178. package/src/delegation/__tests__/vc-issuer.test.ts +487 -0
  179. package/src/delegation/__tests__/vc-verifier.test.ts +1029 -0
  180. package/src/delegation/audience-validator.ts +24 -0
  181. package/src/delegation/bitstring.ts +160 -0
  182. package/src/delegation/cascading-revocation.ts +224 -0
  183. package/src/delegation/delegation-graph.ts +143 -0
  184. package/src/delegation/did-key-resolver.ts +181 -0
  185. package/src/delegation/did-web-resolver.ts +270 -0
  186. package/src/delegation/index.ts +33 -0
  187. package/src/delegation/outbound-headers.ts +193 -0
  188. package/src/delegation/outbound-proof.ts +90 -0
  189. package/src/delegation/statuslist-manager.ts +219 -0
  190. package/src/delegation/storage/__tests__/memory-graph-storage.test.ts +366 -0
  191. package/src/delegation/storage/__tests__/memory-statuslist-storage.test.ts +228 -0
  192. package/src/delegation/storage/memory-graph-storage.ts +178 -0
  193. package/src/delegation/storage/memory-statuslist-storage.ts +42 -0
  194. package/src/delegation/utils.ts +189 -0
  195. package/src/delegation/vc-issuer.ts +137 -0
  196. package/src/delegation/vc-verifier.ts +440 -0
  197. package/src/index.ts +264 -0
  198. package/src/logging/__tests__/logger.test.ts +366 -0
  199. package/src/logging/index.ts +6 -0
  200. package/src/logging/logger.ts +91 -0
  201. package/src/middleware/__tests__/with-mcpi.test.ts +504 -0
  202. package/src/middleware/index.ts +16 -0
  203. package/src/middleware/with-mcpi.ts +766 -0
  204. package/src/proof/__tests__/proof-generator.test.ts +483 -0
  205. package/src/proof/__tests__/verifier.test.ts +488 -0
  206. package/src/proof/errors.ts +75 -0
  207. package/src/proof/generator.ts +255 -0
  208. package/src/proof/index.ts +22 -0
  209. package/src/proof/verifier.ts +449 -0
  210. package/src/providers/base.ts +68 -0
  211. package/src/providers/index.ts +15 -0
  212. package/src/providers/memory.ts +130 -0
  213. package/src/session/__tests__/session-manager.test.ts +342 -0
  214. package/src/session/index.ts +7 -0
  215. package/src/session/manager.ts +332 -0
  216. package/src/types/protocol.ts +596 -0
  217. package/src/utils/__tests__/base58.test.ts +281 -0
  218. package/src/utils/__tests__/base64.test.ts +239 -0
  219. package/src/utils/__tests__/crypto-service.test.ts +530 -0
  220. package/src/utils/__tests__/did-helpers.test.ts +156 -0
  221. package/src/utils/base58.ts +115 -0
  222. package/src/utils/base64.ts +116 -0
  223. package/src/utils/crypto-service.ts +209 -0
  224. package/src/utils/did-helpers.ts +210 -0
  225. package/src/utils/ed25519-constants.ts +23 -0
  226. package/src/utils/index.ts +9 -0
@@ -0,0 +1,472 @@
1
+ /**
2
+ * MCP-I Middleware for @modelcontextprotocol/sdk Server
3
+ *
4
+ * Adds identity, session management, and proof generation to a standard
5
+ * MCP SDK Server.
6
+ *
7
+ * Usage:
8
+ * const { handshakeTool, registerToolWithProof } = createMCPIMiddleware(config, crypto);
9
+ * server.setRequestHandler(ListToolsRequestSchema, () => ({ tools: [handshakeTool, ...] }));
10
+ * registerToolWithProof(server, myToolDef, myHandler);
11
+ */
12
+ import { FetchProvider, } from "../providers/base.js";
13
+ import { SessionManager, } from "../session/manager.js";
14
+ import { ProofGenerator, } from "../proof/generator.js";
15
+ import { validateHandshakeFormat } from "../session/manager.js";
16
+ import { DelegationCredentialVerifier, } from "../delegation/vc-verifier.js";
17
+ import { createDidKeyResolver } from "../delegation/did-key-resolver.js";
18
+ import { createDidWebResolver } from "../delegation/did-web-resolver.js";
19
+ import { verifyDelegationAudience } from "../delegation/audience-validator.js";
20
+ import { createNeedsAuthorizationError, extractDelegationFromVC, } from "../types/protocol.js";
21
+ import { logger } from "../logging/index.js";
22
+ import { canonicalizeJSON } from "../delegation/utils.js";
23
+ import { base64urlDecodeToBytes, base64urlEncodeFromBytes, bytesToBase64 } from "../utils/base64.js";
24
+ class RuntimeFetchProvider extends FetchProvider {
25
+ async resolveDID() {
26
+ return null;
27
+ }
28
+ async fetchStatusList() {
29
+ return null;
30
+ }
31
+ async fetchDelegationChain() {
32
+ return [];
33
+ }
34
+ async fetch(url, options) {
35
+ if (typeof globalThis.fetch !== "function") {
36
+ throw new Error("Global fetch is not available in this runtime");
37
+ }
38
+ return globalThis.fetch(url, options);
39
+ }
40
+ }
41
+ function getDelegationScopes(credential) {
42
+ const scopes = new Set();
43
+ for (const scope of credential.credentialSubject.delegation.scopes ?? []) {
44
+ scopes.add(scope);
45
+ }
46
+ for (const scope of credential.credentialSubject.delegation.constraints.scopes ?? []) {
47
+ scopes.add(scope);
48
+ }
49
+ return Array.from(scopes);
50
+ }
51
+ function validateScopeAttenuation(parentCredential, childCredential) {
52
+ const parentScopes = getDelegationScopes(parentCredential);
53
+ const childScopes = getDelegationScopes(childCredential);
54
+ const childDelegation = childCredential.credentialSubject.delegation;
55
+ if (parentScopes.length === 0) {
56
+ return { valid: true };
57
+ }
58
+ if (childScopes.length === 0) {
59
+ return {
60
+ valid: false,
61
+ reason: `Delegation ${childDelegation.id} omits scopes required to prove attenuation from parent ${parentCredential.credentialSubject.delegation.id}`,
62
+ };
63
+ }
64
+ const parentScopeSet = new Set(parentScopes);
65
+ const widenedScopes = childScopes.filter((scope) => !parentScopeSet.has(scope));
66
+ if (widenedScopes.length > 0) {
67
+ return {
68
+ valid: false,
69
+ reason: `Delegation ${childDelegation.id} widens scopes beyond parent ${parentCredential.credentialSubject.delegation.id}: ${widenedScopes.join(", ")}`,
70
+ };
71
+ }
72
+ return { valid: true };
73
+ }
74
+ /**
75
+ * Create MCP-I middleware for a standard MCP SDK Server.
76
+ *
77
+ * @param config - Agent identity and session configuration
78
+ * @param cryptoProvider - Platform-specific crypto implementation
79
+ * @returns Middleware components for session management and proof generation
80
+ *
81
+ * @remarks
82
+ * **Single-process only**: This middleware stores session state in memory using closure
83
+ * variables (`activeSessionId`, `sessionNonces`). It is NOT suitable for multi-instance
84
+ * deployments behind a load balancer. For distributed deployments, implement a custom
85
+ * `SessionStore` backed by Redis, DynamoDB, or similar and pass it via `config.session`.
86
+ */
87
+ export function createMCPIMiddleware(config, cryptoProvider) {
88
+ const identity = {
89
+ did: config.identity.did,
90
+ kid: config.identity.kid,
91
+ privateKey: config.identity.privateKey,
92
+ publicKey: config.identity.publicKey,
93
+ };
94
+ const sessionManager = new SessionManager(cryptoProvider, {
95
+ ...config.session,
96
+ serverDid: identity.did,
97
+ });
98
+ const proofGenerator = new ProofGenerator(identity, cryptoProvider);
99
+ const delegationConfig = config.delegation;
100
+ // Session map: sessionId → last nonce (for proof generation)
101
+ const sessionNonces = new Map();
102
+ // Active session tracking — set after handshake (manual or auto)
103
+ let activeSessionId;
104
+ const handshakeTool = {
105
+ name: "_mcpi_handshake",
106
+ description: "MCP-I identity handshake — establishes a cryptographic session",
107
+ inputSchema: {
108
+ type: "object",
109
+ properties: {
110
+ nonce: { type: "string", description: "Client-generated unique nonce" },
111
+ audience: {
112
+ type: "string",
113
+ description: "Intended audience (server DID or URL)",
114
+ },
115
+ timestamp: { type: "number", description: "Unix epoch seconds" },
116
+ agentDid: {
117
+ type: "string",
118
+ description: "Client agent DID (optional)",
119
+ },
120
+ },
121
+ required: ["nonce", "audience", "timestamp"],
122
+ },
123
+ };
124
+ async function handleHandshake(args) {
125
+ if (!validateHandshakeFormat(args)) {
126
+ return {
127
+ content: [
128
+ {
129
+ type: "text",
130
+ text: JSON.stringify({
131
+ success: false,
132
+ error: {
133
+ code: "MCPI_INVALID_HANDSHAKE",
134
+ message: "Invalid handshake format: requires nonce (string), audience (string), and timestamp (positive integer)",
135
+ },
136
+ }),
137
+ },
138
+ ],
139
+ isError: true,
140
+ };
141
+ }
142
+ const result = await sessionManager.validateHandshake(args);
143
+ if (result.success && result.session) {
144
+ sessionNonces.set(result.session.sessionId, result.session.nonce);
145
+ activeSessionId = result.session.sessionId;
146
+ }
147
+ return {
148
+ content: [
149
+ {
150
+ type: "text",
151
+ text: JSON.stringify({
152
+ success: result.success,
153
+ ...(result.session && {
154
+ sessionId: result.session.sessionId,
155
+ serverDid: identity.did,
156
+ serverKid: identity.kid,
157
+ }),
158
+ ...(result.error && { error: result.error }),
159
+ }),
160
+ },
161
+ ],
162
+ ...(result.error && { isError: true }),
163
+ };
164
+ }
165
+ /**
166
+ * Auto-create a session for proof generation when no handshake has occurred.
167
+ * In production, MCP-I-aware clients handle the handshake automatically.
168
+ * This convenience mode allows non-MCP-I clients (like MCP Inspector) to
169
+ * still see proofs without manual handshake.
170
+ */
171
+ async function ensureSession() {
172
+ if (activeSessionId) {
173
+ const existing = await sessionManager.getSession(activeSessionId);
174
+ if (existing)
175
+ return activeSessionId;
176
+ }
177
+ if (!config.autoSession)
178
+ return undefined;
179
+ // Generate a server-side session with cryptographically random nonce (SPEC.md §4)
180
+ const nonceBytes = await cryptoProvider.randomBytes(16);
181
+ const nonce = base64urlEncodeFromBytes(nonceBytes);
182
+ const timestamp = Math.floor(Date.now() / 1000);
183
+ const result = await sessionManager.validateHandshake({
184
+ nonce,
185
+ audience: identity.did,
186
+ timestamp,
187
+ });
188
+ if (result.success && result.session) {
189
+ activeSessionId = result.session.sessionId;
190
+ sessionNonces.set(result.session.sessionId, result.session.nonce);
191
+ return activeSessionId;
192
+ }
193
+ return undefined;
194
+ }
195
+ function wrapWithProof(toolName, handler) {
196
+ return async (args, sessionId) => {
197
+ const result = await handler(args, sessionId);
198
+ if (result.isError) {
199
+ return result;
200
+ }
201
+ // Resolve session: explicit param → active session → auto-create
202
+ const resolvedSessionId = sessionId ?? await ensureSession();
203
+ if (!resolvedSessionId) {
204
+ return result;
205
+ }
206
+ const session = await sessionManager.getSession(resolvedSessionId);
207
+ if (!session) {
208
+ return result;
209
+ }
210
+ try {
211
+ const request = { method: toolName, params: args };
212
+ const response = { data: result.content };
213
+ const proof = await proofGenerator.generateProof(request, response, session);
214
+ // Attach proof as _meta (rendered by MCP Inspector, invisible to LLMs)
215
+ result._meta = { proof };
216
+ }
217
+ catch {
218
+ // Proof generation failure is non-fatal — the tool result is still valid
219
+ }
220
+ return result;
221
+ };
222
+ }
223
+ function wrapWithDelegation(toolName, config, handler) {
224
+ const legacyUnsafeDelegationEnabled = delegationConfig?.allowLegacyUnsafeDelegation === true;
225
+ const didKeyResolver = createDidKeyResolver();
226
+ const fetchProvider = delegationConfig?.fetchProvider ??
227
+ (typeof globalThis.fetch === "function"
228
+ ? new RuntimeFetchProvider()
229
+ : undefined);
230
+ const didWebResolver = fetchProvider
231
+ ? createDidWebResolver(fetchProvider)
232
+ : undefined;
233
+ const didResolver = {
234
+ async resolve(did) {
235
+ const customResolver = delegationConfig?.didResolver;
236
+ if (customResolver) {
237
+ const resolved = await customResolver.resolve(did);
238
+ if (resolved) {
239
+ return resolved;
240
+ }
241
+ }
242
+ if (did.startsWith("did:key:")) {
243
+ return didKeyResolver.resolve(did);
244
+ }
245
+ if (did.startsWith("did:web:")) {
246
+ return didWebResolver?.resolve(did) ?? null;
247
+ }
248
+ return null;
249
+ },
250
+ };
251
+ const signatureVerifier = async (vc, publicKeyJwk) => {
252
+ const proof = vc.proof;
253
+ if (!proof) {
254
+ return { valid: false, reason: "Missing proof" };
255
+ }
256
+ const proofValue = proof["proofValue"];
257
+ if (!proofValue) {
258
+ return { valid: false, reason: "Missing proofValue in proof" };
259
+ }
260
+ // Reconstruct the unsigned VC (without proof) for signature verification
261
+ const vcRecord = vc;
262
+ const vcWithoutProof = {};
263
+ for (const [k, v] of Object.entries(vcRecord)) {
264
+ if (k !== "proof")
265
+ vcWithoutProof[k] = v;
266
+ }
267
+ const canonical = canonicalizeJSON(vcWithoutProof);
268
+ const data = new TextEncoder().encode(canonical);
269
+ // Decode signature from base64url proof value
270
+ const sigBytes = base64urlDecodeToBytes(proofValue);
271
+ // Get public key from JWK (x is base64url-encoded raw key bytes)
272
+ const jwk = publicKeyJwk;
273
+ if (!jwk.x) {
274
+ return { valid: false, reason: "No x field in publicKeyJwk" };
275
+ }
276
+ // Convert base64url key to standard base64 for the crypto provider
277
+ const pubKeyBytes = base64urlDecodeToBytes(jwk.x);
278
+ const pubKeyBase64 = bytesToBase64(pubKeyBytes);
279
+ const valid = await cryptoProvider.verify(data, sigBytes, pubKeyBase64);
280
+ return {
281
+ valid,
282
+ reason: valid ? undefined : "Signature verification failed",
283
+ };
284
+ };
285
+ const verifier = new DelegationCredentialVerifier({
286
+ didResolver,
287
+ signatureVerifier,
288
+ statusListResolver: delegationConfig?.statusListResolver,
289
+ });
290
+ const buildDelegationErrorResponse = (error, reason) => ({
291
+ content: [
292
+ {
293
+ type: "text",
294
+ text: JSON.stringify({ error, reason }),
295
+ },
296
+ ],
297
+ isError: true,
298
+ });
299
+ const validateDelegationChain = async (leafCredential) => {
300
+ const leafDelegation = extractDelegationFromVC(leafCredential);
301
+ let chain = [leafCredential];
302
+ if (leafDelegation.parentId) {
303
+ if (!delegationConfig?.resolveDelegationChain) {
304
+ if (legacyUnsafeDelegationEnabled) {
305
+ logger.warn(`[mcpi] Legacy delegation mode enabled: accepting parent-linked credential ${leafDelegation.id} without resolveDelegationChain`);
306
+ return { valid: true };
307
+ }
308
+ return {
309
+ valid: false,
310
+ reason: `Delegation ${leafDelegation.id} references parent ${leafDelegation.parentId} but no resolveDelegationChain handler is configured`,
311
+ };
312
+ }
313
+ let resolvedChain;
314
+ try {
315
+ resolvedChain =
316
+ await delegationConfig.resolveDelegationChain(leafCredential);
317
+ }
318
+ catch (error) {
319
+ return {
320
+ valid: false,
321
+ reason: `Failed to resolve delegation chain: ${error instanceof Error ? error.message : "Unknown error"}`,
322
+ };
323
+ }
324
+ if (resolvedChain.length === 0) {
325
+ return {
326
+ valid: false,
327
+ reason: `Delegation ${leafDelegation.id} references parent ${leafDelegation.parentId} but the resolved chain is empty`,
328
+ };
329
+ }
330
+ const leafIndex = resolvedChain.findIndex((credential) => credential.credentialSubject.delegation.id === leafDelegation.id);
331
+ if (leafIndex !== -1 && leafIndex !== resolvedChain.length - 1) {
332
+ return {
333
+ valid: false,
334
+ reason: `Resolved delegation chain for ${leafDelegation.id} must end with the leaf credential`,
335
+ };
336
+ }
337
+ chain =
338
+ leafIndex === -1 ? [...resolvedChain, leafCredential] : resolvedChain;
339
+ }
340
+ const seenIds = new Set();
341
+ let previousDelegation;
342
+ let previousCredential;
343
+ for (const credential of chain) {
344
+ const delegation = extractDelegationFromVC(credential);
345
+ if (seenIds.has(delegation.id)) {
346
+ return {
347
+ valid: false,
348
+ reason: `Delegation chain contains a circular reference at ${delegation.id}`,
349
+ };
350
+ }
351
+ seenIds.add(delegation.id);
352
+ if (credential.credentialStatus && !delegationConfig?.statusListResolver) {
353
+ if (legacyUnsafeDelegationEnabled) {
354
+ logger.warn(`[mcpi] Legacy delegation mode enabled: skipping status-list verification for ${delegation.id}`);
355
+ }
356
+ else {
357
+ return {
358
+ valid: false,
359
+ reason: `Delegation ${delegation.id} has credentialStatus but no statusListResolver is configured`,
360
+ };
361
+ }
362
+ }
363
+ const credentialVerification = await verifier.verifyDelegationCredential(credential);
364
+ if (!credentialVerification.valid) {
365
+ return {
366
+ valid: false,
367
+ reason: `Delegation ${delegation.id} invalid: ${credentialVerification.reason}`,
368
+ };
369
+ }
370
+ if (!verifyDelegationAudience(delegation, identity.did)) {
371
+ return {
372
+ valid: false,
373
+ reason: `Delegation ${delegation.id} audience does not include server DID ${identity.did}`,
374
+ };
375
+ }
376
+ if (!previousDelegation || !previousCredential) {
377
+ if (delegation.parentId) {
378
+ return {
379
+ valid: false,
380
+ reason: `Resolved delegation chain is incomplete: root delegation ${delegation.id} still references parent ${delegation.parentId}`,
381
+ };
382
+ }
383
+ previousDelegation = delegation;
384
+ previousCredential = credential;
385
+ continue;
386
+ }
387
+ if (delegation.parentId !== previousDelegation.id) {
388
+ return {
389
+ valid: false,
390
+ reason: `Delegation ${delegation.id} references parent ${delegation.parentId} but expected ${previousDelegation.id}`,
391
+ };
392
+ }
393
+ if (delegation.issuerDid !== previousDelegation.subjectDid) {
394
+ return {
395
+ valid: false,
396
+ reason: `Delegation ${delegation.id} issued by ${delegation.issuerDid} but parent subject is ${previousDelegation.subjectDid}`,
397
+ };
398
+ }
399
+ const scopeValidation = validateScopeAttenuation(previousCredential, credential);
400
+ if (!scopeValidation.valid) {
401
+ return scopeValidation;
402
+ }
403
+ previousDelegation = delegation;
404
+ previousCredential = credential;
405
+ }
406
+ const finalDelegation = extractDelegationFromVC(chain[chain.length - 1]);
407
+ if (finalDelegation.id !== leafDelegation.id) {
408
+ return {
409
+ valid: false,
410
+ reason: `Resolved delegation chain ended at ${finalDelegation.id} instead of leaf ${leafDelegation.id}`,
411
+ };
412
+ }
413
+ return { valid: true };
414
+ };
415
+ return async (args, sessionId) => {
416
+ const delegationArg = args["_mcpi_delegation"];
417
+ if (delegationArg === undefined || delegationArg === null) {
418
+ // No delegation provided — return needs_authorization response
419
+ const tokenBytes = await cryptoProvider.randomBytes(16);
420
+ const hex = Array.from(tokenBytes)
421
+ .map((b) => b.toString(16).padStart(2, "0"))
422
+ .join("");
423
+ const resumeToken = [
424
+ hex.slice(0, 8),
425
+ hex.slice(8, 12),
426
+ hex.slice(12, 16),
427
+ hex.slice(16, 20),
428
+ hex.slice(20),
429
+ ].join("-");
430
+ const expiresAt = Math.floor(Date.now() / 1000) + 300;
431
+ const authError = createNeedsAuthorizationError({
432
+ message: `Tool "${toolName}" requires delegation with scope: ${config.scopeId}`,
433
+ authorizationUrl: config.consentUrl,
434
+ resumeToken,
435
+ expiresAt,
436
+ scopes: [config.scopeId],
437
+ });
438
+ return {
439
+ content: [{ type: "text", text: JSON.stringify(authError) }],
440
+ };
441
+ }
442
+ const vc = delegationArg;
443
+ const verificationResult = await validateDelegationChain(vc);
444
+ if (!verificationResult.valid) {
445
+ logger.warn(`[mcpi] Delegation verification failed for "${toolName}": ${verificationResult.reason}`);
446
+ return buildDelegationErrorResponse("delegation_invalid", verificationResult.reason ?? "Unknown delegation validation error");
447
+ }
448
+ const scopes = getDelegationScopes(vc);
449
+ if (!scopes.includes(config.scopeId)) {
450
+ logger.warn(`[mcpi] Delegation missing required scope "${config.scopeId}" for "${toolName}"`);
451
+ return buildDelegationErrorResponse("delegation_scope_missing", `Required scope "${config.scopeId}" not in delegation scopes`);
452
+ }
453
+ // Strip _mcpi_delegation from args before passing to handler
454
+ const cleanArgs = {};
455
+ for (const [k, v] of Object.entries(args)) {
456
+ if (k !== "_mcpi_delegation")
457
+ cleanArgs[k] = v;
458
+ }
459
+ logger.debug(`[mcpi] Delegation verified for "${toolName}", scope "${config.scopeId}"`);
460
+ return handler(cleanArgs, sessionId);
461
+ };
462
+ }
463
+ return {
464
+ sessionManager,
465
+ proofGenerator,
466
+ handshakeTool,
467
+ handleHandshake,
468
+ wrapWithProof,
469
+ wrapWithDelegation,
470
+ };
471
+ }
472
+ //# sourceMappingURL=with-mcpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-mcpi.js","sourceRoot":"","sources":["../../src/middleware/with-mcpi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Proof Verification Error Codes and Types
3
+ *
4
+ * Specific error codes for proof verification failures to enable
5
+ * better error handling and debugging.
6
+ */
7
+ /**
8
+ * Error codes for proof verification
9
+ */
10
+ export declare const PROOF_VERIFICATION_ERROR_CODES: {
11
+ readonly INVALID_PROOF_STRUCTURE: "INVALID_PROOF_STRUCTURE";
12
+ readonly MISSING_REQUIRED_FIELD: "MISSING_REQUIRED_FIELD";
13
+ readonly NONCE_REPLAY_DETECTED: "NONCE_REPLAY_DETECTED";
14
+ readonly TIMESTAMP_SKEW_EXCEEDED: "TIMESTAMP_SKEW_EXCEEDED";
15
+ readonly TIMESTAMP_INVALID: "TIMESTAMP_INVALID";
16
+ readonly INVALID_JWS_SIGNATURE: "INVALID_JWS_SIGNATURE";
17
+ readonly INVALID_JWS_FORMAT: "INVALID_JWS_FORMAT";
18
+ readonly INVALID_JWS_HEADER: "INVALID_JWS_HEADER";
19
+ readonly INVALID_JWS_PAYLOAD: "INVALID_JWS_PAYLOAD";
20
+ readonly INVALID_JWS_SIGNATURE_BASE64: "INVALID_JWS_SIGNATURE_BASE64";
21
+ readonly UNSUPPORTED_ALGORITHM: "UNSUPPORTED_ALGORITHM";
22
+ readonly INVALID_JWK_FORMAT: "INVALID_JWK_FORMAT";
23
+ readonly INVALID_JWK_KTY: "INVALID_JWK_KTY";
24
+ readonly INVALID_JWK_CRV: "INVALID_JWK_CRV";
25
+ readonly INVALID_JWK_X_FIELD: "INVALID_JWK_X_FIELD";
26
+ readonly INVALID_JWK_KEY_LENGTH: "INVALID_JWK_KEY_LENGTH";
27
+ readonly JWK_KID_MISMATCH: "JWK_KID_MISMATCH";
28
+ readonly DID_RESOLUTION_FAILED: "DID_RESOLUTION_FAILED";
29
+ readonly DID_DOCUMENT_NOT_FOUND: "DID_DOCUMENT_NOT_FOUND";
30
+ readonly VERIFICATION_METHOD_NOT_FOUND: "VERIFICATION_METHOD_NOT_FOUND";
31
+ readonly PUBLIC_KEY_NOT_FOUND: "PUBLIC_KEY_NOT_FOUND";
32
+ readonly UNSUPPORTED_DID_METHOD: "UNSUPPORTED_DID_METHOD";
33
+ readonly VERIFICATION_ERROR: "VERIFICATION_ERROR";
34
+ readonly INTERNAL_ERROR: "INTERNAL_ERROR";
35
+ };
36
+ export type ProofVerificationErrorCode = typeof PROOF_VERIFICATION_ERROR_CODES[keyof typeof PROOF_VERIFICATION_ERROR_CODES];
37
+ /**
38
+ * Proof verification error with specific error code
39
+ */
40
+ export declare class ProofVerificationError extends Error {
41
+ readonly code: ProofVerificationErrorCode;
42
+ readonly details?: Record<string, unknown> | undefined;
43
+ constructor(code: ProofVerificationErrorCode, message: string, details?: Record<string, unknown> | undefined);
44
+ }
45
+ /**
46
+ * Create a proof verification error
47
+ */
48
+ export declare function createProofVerificationError(code: ProofVerificationErrorCode, message: string, details?: Record<string, unknown>): ProofVerificationError;
49
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/proof/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,OAAO,8BAA8B,CAAC,MAAM,OAAO,8BAA8B,CAAC,CAAC;AAErF;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;aAE7B,IAAI,EAAE,0BAA0B;aAEhC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,0BAA0B,EAChD,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,0BAA0B,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,sBAAsB,CAExB"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Proof Verification Error Codes and Types
3
+ *
4
+ * Specific error codes for proof verification failures to enable
5
+ * better error handling and debugging.
6
+ */
7
+ /**
8
+ * Error codes for proof verification
9
+ */
10
+ export const PROOF_VERIFICATION_ERROR_CODES = {
11
+ // Proof structure errors
12
+ INVALID_PROOF_STRUCTURE: "INVALID_PROOF_STRUCTURE",
13
+ MISSING_REQUIRED_FIELD: "MISSING_REQUIRED_FIELD",
14
+ // Security errors
15
+ NONCE_REPLAY_DETECTED: "NONCE_REPLAY_DETECTED",
16
+ TIMESTAMP_SKEW_EXCEEDED: "TIMESTAMP_SKEW_EXCEEDED",
17
+ TIMESTAMP_INVALID: "TIMESTAMP_INVALID",
18
+ // Signature errors
19
+ INVALID_JWS_SIGNATURE: "INVALID_JWS_SIGNATURE",
20
+ INVALID_JWS_FORMAT: "INVALID_JWS_FORMAT",
21
+ INVALID_JWS_HEADER: "INVALID_JWS_HEADER",
22
+ INVALID_JWS_PAYLOAD: "INVALID_JWS_PAYLOAD",
23
+ INVALID_JWS_SIGNATURE_BASE64: "INVALID_JWS_SIGNATURE_BASE64",
24
+ UNSUPPORTED_ALGORITHM: "UNSUPPORTED_ALGORITHM",
25
+ // JWK errors
26
+ INVALID_JWK_FORMAT: "INVALID_JWK_FORMAT",
27
+ INVALID_JWK_KTY: "INVALID_JWK_KTY",
28
+ INVALID_JWK_CRV: "INVALID_JWK_CRV",
29
+ INVALID_JWK_X_FIELD: "INVALID_JWK_X_FIELD",
30
+ INVALID_JWK_KEY_LENGTH: "INVALID_JWK_KEY_LENGTH",
31
+ JWK_KID_MISMATCH: "JWK_KID_MISMATCH",
32
+ // DID resolution errors
33
+ DID_RESOLUTION_FAILED: "DID_RESOLUTION_FAILED",
34
+ DID_DOCUMENT_NOT_FOUND: "DID_DOCUMENT_NOT_FOUND",
35
+ VERIFICATION_METHOD_NOT_FOUND: "VERIFICATION_METHOD_NOT_FOUND",
36
+ PUBLIC_KEY_NOT_FOUND: "PUBLIC_KEY_NOT_FOUND",
37
+ UNSUPPORTED_DID_METHOD: "UNSUPPORTED_DID_METHOD",
38
+ // Generic errors
39
+ VERIFICATION_ERROR: "VERIFICATION_ERROR",
40
+ INTERNAL_ERROR: "INTERNAL_ERROR",
41
+ };
42
+ /**
43
+ * Proof verification error with specific error code
44
+ */
45
+ export class ProofVerificationError extends Error {
46
+ code;
47
+ details;
48
+ constructor(code, message, details) {
49
+ super(message);
50
+ this.code = code;
51
+ this.details = details;
52
+ this.name = "ProofVerificationError";
53
+ }
54
+ }
55
+ /**
56
+ * Create a proof verification error
57
+ */
58
+ export function createProofVerificationError(code, message, details) {
59
+ return new ProofVerificationError(code, message, details);
60
+ }
61
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/proof/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,yBAAyB;IACzB,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAEhD,kBAAkB;IAClB,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,iBAAiB,EAAE,mBAAmB;IAEtC,mBAAmB;IACnB,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,4BAA4B,EAAE,8BAA8B;IAC5D,qBAAqB,EAAE,uBAAuB;IAE9C,aAAa;IACb,kBAAkB,EAAE,oBAAoB;IACxC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,gBAAgB,EAAE,kBAAkB;IAEpC,wBAAwB;IACxB,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,6BAA6B,EAAE,+BAA+B;IAC9D,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAEhD,iBAAiB;IACjB,kBAAkB,EAAE,oBAAoB;IACxC,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAKX;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAE7B;IAEA;IAHlB,YACkB,IAAgC,EAChD,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAA4B;QAEhC,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAAgC,EAChC,OAAe,EACf,OAAiC;IAEjC,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC"}