id-verify-mcp 1.0.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.
package/dist/worker.js ADDED
@@ -0,0 +1,333 @@
1
+ /**
2
+ * ID Verify MCP Server - Cloudflare Worker
3
+ *
4
+ * Implements MCP protocol with SSE transport for Claude Desktop.
5
+ */
6
+ // Session storage for JWT tokens
7
+ const sessions = new Map();
8
+ function getSession(sessionId) {
9
+ const session = sessions.get(sessionId);
10
+ if (!session || session.expiresAt < Date.now()) {
11
+ sessions.delete(sessionId);
12
+ return { jwtToken: null };
13
+ }
14
+ return session;
15
+ }
16
+ function setSessionToken(sessionId, token) {
17
+ sessions.set(sessionId, {
18
+ jwtToken: token,
19
+ expiresAt: Date.now() + 30 * 60 * 1000
20
+ });
21
+ }
22
+ // API Client
23
+ class IdVerifyApiClient {
24
+ baseUrl;
25
+ apiKey;
26
+ sessionId;
27
+ constructor(baseUrl, apiKey, sessionId) {
28
+ this.baseUrl = baseUrl;
29
+ this.apiKey = apiKey;
30
+ this.sessionId = sessionId;
31
+ }
32
+ get jwtToken() {
33
+ return getSession(this.sessionId).jwtToken;
34
+ }
35
+ set jwtToken(token) {
36
+ setSessionToken(this.sessionId, token);
37
+ }
38
+ async requestWithApiKey(endpoint, options = {}) {
39
+ const headers = {
40
+ 'Content-Type': 'application/json',
41
+ ...(options.headers || {})
42
+ };
43
+ if (this.apiKey)
44
+ headers['x-api-key'] = this.apiKey;
45
+ try {
46
+ const response = await fetch(`${this.baseUrl}${endpoint}`, { ...options, headers });
47
+ return await response.json();
48
+ }
49
+ catch (error) {
50
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
51
+ }
52
+ }
53
+ async requestWithJwt(endpoint, options = {}) {
54
+ if (!this.jwtToken) {
55
+ return { success: false, error: 'Not authenticated. Please login first using partner_login tool.' };
56
+ }
57
+ const headers = {
58
+ 'Content-Type': 'application/json',
59
+ 'Authorization': `Bearer ${this.jwtToken}`,
60
+ ...(options.headers || {})
61
+ };
62
+ try {
63
+ const response = await fetch(`${this.baseUrl}${endpoint}`, { ...options, headers });
64
+ return await response.json();
65
+ }
66
+ catch (error) {
67
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
68
+ }
69
+ }
70
+ async registerPartner(params) {
71
+ try {
72
+ const response = await fetch(`${this.baseUrl}/api/v1/partners/register`, {
73
+ method: 'POST',
74
+ headers: { 'Content-Type': 'application/json' },
75
+ body: JSON.stringify(params)
76
+ });
77
+ return await response.json();
78
+ }
79
+ catch (error) {
80
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
81
+ }
82
+ }
83
+ async createVerification(params) {
84
+ return this.requestWithApiKey('/api/v1/verifications', { method: 'POST', body: JSON.stringify(params) });
85
+ }
86
+ async getVerification(id) {
87
+ return this.requestWithApiKey(`/api/v1/verifications/${id}`);
88
+ }
89
+ async getVerificationResult(id) {
90
+ return this.requestWithApiKey(`/api/v1/verifications/${id}/result`);
91
+ }
92
+ async partnerLogin(email, password) {
93
+ try {
94
+ const response = await fetch(`${this.baseUrl}/api/v1/partners/login`, {
95
+ method: 'POST',
96
+ headers: { 'Content-Type': 'application/json' },
97
+ body: JSON.stringify({ email, password })
98
+ });
99
+ const data = await response.json();
100
+ const token = data.token || data.data?.token;
101
+ if (data.success && token)
102
+ this.jwtToken = token;
103
+ return data;
104
+ }
105
+ catch (error) {
106
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
107
+ }
108
+ }
109
+ isAuthenticated() { return this.jwtToken !== null; }
110
+ async getPartnerProfile() { return this.requestWithJwt('/api/v1/partners/profile'); }
111
+ async getPartnerVerifications(params) {
112
+ const sp = new URLSearchParams();
113
+ if (params?.status)
114
+ sp.set('status', params.status);
115
+ if (params?.limit)
116
+ sp.set('limit', params.limit.toString());
117
+ if (params?.offset)
118
+ sp.set('offset', params.offset.toString());
119
+ if (params?.search)
120
+ sp.set('search', params.search);
121
+ const q = sp.toString();
122
+ return this.requestWithJwt(`/api/v1/partners/verifications${q ? `?${q}` : ''}`);
123
+ }
124
+ async getPartnerVerificationById(id) {
125
+ return this.requestWithJwt(`/api/v1/partners/verifications/${id}`);
126
+ }
127
+ async getPartnerUsageStats() { return this.requestWithJwt('/api/v1/partners/usage-stats'); }
128
+ async getPartnerWebhookLogs() { return this.requestWithJwt('/api/v1/partners/webhooks'); }
129
+ async requestVerification(params) {
130
+ return this.requestWithJwt('/api/v1/partners/verifications/request', { method: 'POST', body: JSON.stringify(params) });
131
+ }
132
+ async resendVerificationEmail(id) {
133
+ return this.requestWithJwt(`/api/v1/partners/verifications/${id}/resend-email`, { method: 'POST' });
134
+ }
135
+ async resendWebhook(id) {
136
+ return this.requestWithJwt(`/api/v1/partners/verifications/${id}/resend-webhook`, { method: 'POST' });
137
+ }
138
+ async createPartner(params) {
139
+ return this.requestWithApiKey('/api/v1/admin/partners', { method: 'POST', body: JSON.stringify(params) });
140
+ }
141
+ async listPartners(params) {
142
+ const sp = new URLSearchParams();
143
+ if (params?.limit)
144
+ sp.set('limit', params.limit.toString());
145
+ if (params?.offset)
146
+ sp.set('offset', params.offset.toString());
147
+ if (params?.search)
148
+ sp.set('search', params.search);
149
+ if (params?.status)
150
+ sp.set('status', params.status);
151
+ const q = sp.toString();
152
+ return this.requestWithApiKey(`/api/v1/admin/partners${q ? `?${q}` : ''}`);
153
+ }
154
+ async getPartner(id) { return this.requestWithApiKey(`/api/v1/admin/partners/${id}`); }
155
+ async updatePartner(id, params) {
156
+ return this.requestWithApiKey(`/api/v1/admin/partners/${id}`, { method: 'PATCH', body: JSON.stringify(params) });
157
+ }
158
+ async deletePartner(id) {
159
+ return this.requestWithApiKey(`/api/v1/admin/partners/${id}`, { method: 'DELETE' });
160
+ }
161
+ }
162
+ // MCP Tool definitions
163
+ const tools = [
164
+ { name: "create_verification", description: "Create a new identity verification request", inputSchema: { type: "object", properties: { fullName: { type: "string" }, email: { type: "string" }, phone: { type: "string" }, documentType: { type: "string", enum: ["PASSPORT", "DRIVERS_LICENSE", "NATIONAL_ID", "HEALTH_CARD", "OTHER"] }, callbackUrl: { type: "string" } } } },
165
+ { name: "get_verification", description: "Get verification status by ID", inputSchema: { type: "object", properties: { verificationId: { type: "string" } }, required: ["verificationId"] } },
166
+ { name: "get_verification_result", description: "Get detailed verification result", inputSchema: { type: "object", properties: { verificationId: { type: "string" } }, required: ["verificationId"] } },
167
+ { name: "register_partner", description: "Register a new partner account (no auth required)", inputSchema: { type: "object", properties: { email: { type: "string" }, contactName: { type: "string" }, password: { type: "string" }, companyName: { type: "string" }, phone: { type: "string" }, webhookUrl: { type: "string" } }, required: ["email", "contactName", "password"] } },
168
+ { name: "partner_login", description: "Login as a partner", inputSchema: { type: "object", properties: { email: { type: "string" }, password: { type: "string" } }, required: ["email", "password"] } },
169
+ { name: "partner_profile", description: "Get partner profile", inputSchema: { type: "object", properties: {} } },
170
+ { name: "partner_verifications", description: "List partner verifications", inputSchema: { type: "object", properties: { status: { type: "string" }, limit: { type: "number" }, offset: { type: "number" }, search: { type: "string" } } } },
171
+ { name: "partner_verification_detail", description: "Get verification details", inputSchema: { type: "object", properties: { verificationId: { type: "string" } }, required: ["verificationId"] } },
172
+ { name: "partner_usage_stats", description: "Get usage statistics", inputSchema: { type: "object", properties: {} } },
173
+ { name: "partner_webhook_logs", description: "Get webhook logs", inputSchema: { type: "object", properties: {} } },
174
+ { name: "partner_request_verification", description: "Request verification as partner", inputSchema: { type: "object", properties: { fullName: { type: "string" }, email: { type: "string" }, phone: { type: "string" }, documentType: { type: "string" } } } },
175
+ { name: "partner_resend_email", description: "Resend verification email", inputSchema: { type: "object", properties: { verificationId: { type: "string" } }, required: ["verificationId"] } },
176
+ { name: "partner_resend_webhook", description: "Resend webhook", inputSchema: { type: "object", properties: { verificationId: { type: "string" } }, required: ["verificationId"] } },
177
+ { name: "admin_create_partner", description: "Create partner (admin)", inputSchema: { type: "object", properties: { name: { type: "string" }, email: { type: "string" }, password: { type: "string" }, company: { type: "string" }, webhookUrl: { type: "string" } }, required: ["name", "email", "password"] } },
178
+ { name: "admin_list_partners", description: "List all partners (admin)", inputSchema: { type: "object", properties: { limit: { type: "number" }, offset: { type: "number" }, search: { type: "string" }, status: { type: "string" } } } },
179
+ { name: "admin_get_partner", description: "Get partner by ID (admin)", inputSchema: { type: "object", properties: { partnerId: { type: "string" } }, required: ["partnerId"] } },
180
+ { name: "admin_update_partner", description: "Update partner (admin)", inputSchema: { type: "object", properties: { partnerId: { type: "string" }, name: { type: "string" }, company: { type: "string" }, webhookUrl: { type: "string" }, status: { type: "string" } }, required: ["partnerId"] } },
181
+ { name: "admin_delete_partner", description: "Delete partner (admin)", inputSchema: { type: "object", properties: { partnerId: { type: "string" } }, required: ["partnerId"] } }
182
+ ];
183
+ async function handleToolCall(client, name, args) {
184
+ switch (name) {
185
+ case "create_verification": return client.createVerification(args);
186
+ case "get_verification": return client.getVerification(args.verificationId);
187
+ case "get_verification_result": return client.getVerificationResult(args.verificationId);
188
+ case "register_partner": return client.registerPartner(args);
189
+ case "partner_login": return client.partnerLogin(args.email, args.password);
190
+ case "partner_profile": return client.getPartnerProfile();
191
+ case "partner_verifications": return client.getPartnerVerifications(args);
192
+ case "partner_verification_detail": return client.getPartnerVerificationById(args.verificationId);
193
+ case "partner_usage_stats": return client.getPartnerUsageStats();
194
+ case "partner_webhook_logs": return client.getPartnerWebhookLogs();
195
+ case "partner_request_verification": return client.requestVerification(args);
196
+ case "partner_resend_email": return client.resendVerificationEmail(args.verificationId);
197
+ case "partner_resend_webhook": return client.resendWebhook(args.verificationId);
198
+ case "admin_create_partner": return client.createPartner(args);
199
+ case "admin_list_partners": return client.listPartners(args);
200
+ case "admin_get_partner": return client.getPartner(args.partnerId);
201
+ case "admin_update_partner":
202
+ const { partnerId, ...p } = args;
203
+ return client.updatePartner(partnerId, p);
204
+ case "admin_delete_partner": return client.deletePartner(args.partnerId);
205
+ default: return { error: `Unknown tool: ${name}` };
206
+ }
207
+ }
208
+ // MCP Protocol handler
209
+ class MCPHandler {
210
+ env;
211
+ sessionId;
212
+ constructor(env, sessionId) {
213
+ this.env = env;
214
+ this.sessionId = sessionId;
215
+ }
216
+ async handleMessage(message) {
217
+ const { method, id, params } = message;
218
+ switch (method) {
219
+ case "initialize":
220
+ return {
221
+ jsonrpc: "2.0",
222
+ id,
223
+ result: {
224
+ protocolVersion: "2024-11-05",
225
+ capabilities: { tools: {} },
226
+ serverInfo: { name: "id-verify-mcp", version: "1.0.0" }
227
+ }
228
+ };
229
+ case "notifications/initialized":
230
+ return null; // No response for notifications
231
+ case "tools/list":
232
+ return {
233
+ jsonrpc: "2.0",
234
+ id,
235
+ result: { tools }
236
+ };
237
+ case "tools/call":
238
+ const client = new IdVerifyApiClient(this.env.ID_VERIFY_API_URL, this.env.ID_VERIFY_API_KEY, this.sessionId);
239
+ const result = await handleToolCall(client, params.name, params.arguments || {});
240
+ return {
241
+ jsonrpc: "2.0",
242
+ id,
243
+ result: {
244
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
245
+ }
246
+ };
247
+ default:
248
+ return {
249
+ jsonrpc: "2.0",
250
+ id,
251
+ error: { code: -32601, message: `Method not found: ${method}` }
252
+ };
253
+ }
254
+ }
255
+ }
256
+ // Store SSE connections
257
+ const sseConnections = new Map();
258
+ export default {
259
+ async fetch(request, env) {
260
+ const url = new URL(request.url);
261
+ // CORS
262
+ if (request.method === "OPTIONS") {
263
+ return new Response(null, {
264
+ headers: {
265
+ "Access-Control-Allow-Origin": "*",
266
+ "Access-Control-Allow-Methods": "GET, POST, OPTIONS",
267
+ "Access-Control-Allow-Headers": "Content-Type"
268
+ }
269
+ });
270
+ }
271
+ // Health check
272
+ if (url.pathname === "/health") {
273
+ return Response.json({ status: "ok", version: "1.0.0" });
274
+ }
275
+ // SSE endpoint for MCP
276
+ if (url.pathname === "/sse" && request.method === "GET") {
277
+ const sessionId = crypto.randomUUID();
278
+ const { readable, writable } = new TransformStream();
279
+ const writer = writable.getWriter();
280
+ const encoder = new TextEncoder();
281
+ // Store connection
282
+ sseConnections.set(sessionId, { writer, encoder });
283
+ // Send endpoint event
284
+ const endpointUrl = `${url.origin}/message?sessionId=${sessionId}`;
285
+ writer.write(encoder.encode(`event: endpoint\ndata: ${endpointUrl}\n\n`));
286
+ // Cleanup on close
287
+ request.signal.addEventListener("abort", () => {
288
+ sseConnections.delete(sessionId);
289
+ writer.close().catch(() => { });
290
+ });
291
+ return new Response(readable, {
292
+ headers: {
293
+ "Content-Type": "text/event-stream",
294
+ "Cache-Control": "no-cache",
295
+ "Connection": "keep-alive",
296
+ "Access-Control-Allow-Origin": "*"
297
+ }
298
+ });
299
+ }
300
+ // Message endpoint for MCP
301
+ if (url.pathname === "/message" && request.method === "POST") {
302
+ const sessionId = url.searchParams.get("sessionId");
303
+ if (!sessionId) {
304
+ return Response.json({ error: "Missing sessionId" }, { status: 400 });
305
+ }
306
+ const connection = sseConnections.get(sessionId);
307
+ if (!connection) {
308
+ return Response.json({ error: "Session not found" }, { status: 404 });
309
+ }
310
+ try {
311
+ const message = await request.json();
312
+ const handler = new MCPHandler(env, sessionId);
313
+ const response = await handler.handleMessage(message);
314
+ if (response) {
315
+ const { writer, encoder } = connection;
316
+ writer.write(encoder.encode(`event: message\ndata: ${JSON.stringify(response)}\n\n`));
317
+ }
318
+ return new Response("OK", { status: 202 });
319
+ }
320
+ catch (error) {
321
+ return Response.json({ error: error instanceof Error ? error.message : "Unknown error" }, { status: 400 });
322
+ }
323
+ }
324
+ // Default info
325
+ return Response.json({
326
+ name: "id-verify-mcp",
327
+ version: "1.0.0",
328
+ endpoints: { sse: "/sse", message: "/message", health: "/health" },
329
+ usage: "Connect via SSE at /sse endpoint"
330
+ });
331
+ }
332
+ };
333
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "id-verify-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for ID Verify identity verification API - enables AI assistants to create and manage identity verifications",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "id-verify-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "prepublishOnly": "npm run build",
17
+ "start": "node dist/index.js",
18
+ "dev": "tsc && node dist/index.js",
19
+ "deploy": "wrangler deploy",
20
+ "cf-dev": "wrangler dev"
21
+ },
22
+ "keywords": [
23
+ "mcp",
24
+ "model-context-protocol",
25
+ "claude",
26
+ "ai",
27
+ "identity-verification",
28
+ "kyc",
29
+ "id-verify",
30
+ "anthropic"
31
+ ],
32
+ "author": "Tanveer Afzal",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/tanveerafzal/id-verify-mcp.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/tanveerafzal/id-verify-mcp/issues"
40
+ },
41
+ "homepage": "https://github.com/tanveerafzal/id-verify-mcp#readme",
42
+ "dependencies": {
43
+ "@modelcontextprotocol/sdk": "^1.0.0",
44
+ "zod": "^3.22.0"
45
+ },
46
+ "devDependencies": {
47
+ "@cloudflare/workers-types": "^4.20240000.0",
48
+ "@types/node": "^20.0.0",
49
+ "typescript": "^5.0.0",
50
+ "wrangler": "^4.60.0"
51
+ },
52
+ "engines": {
53
+ "node": ">=18.0.0"
54
+ }
55
+ }