@kya-os/mcp-i 0.1.0-alpha.2.0 → 0.1.0-alpha.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -181
- package/dist/__tests__/challenge-response.test.js +12 -11
- package/dist/__tests__/challenge-response.test.js.map +1 -1
- package/dist/auto-enhance.d.ts +41 -0
- package/dist/auto-enhance.d.ts.map +1 -0
- package/dist/auto-enhance.js +193 -0
- package/dist/auto-enhance.js.map +1 -0
- package/dist/auto-init.d.ts +12 -0
- package/dist/auto-init.d.ts.map +1 -0
- package/dist/auto-init.js +166 -0
- package/dist/auto-init.js.map +1 -0
- package/dist/auto.d.ts +13 -0
- package/dist/auto.d.ts.map +1 -0
- package/dist/auto.js +24 -0
- package/dist/auto.js.map +1 -0
- package/dist/index.d.ts +12 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -17
- package/dist/index.js.map +1 -1
- package/dist/patch.d.ts +22 -0
- package/dist/patch.d.ts.map +1 -0
- package/dist/patch.js +164 -0
- package/dist/patch.js.map +1 -0
- package/dist/transparent.d.ts +40 -0
- package/dist/transparent.d.ts.map +1 -0
- package/dist/transparent.js +167 -0
- package/dist/transparent.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +13 -1
package/README.md
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
# @kya-os/mcp-i
|
|
2
2
|
|
|
3
|
-
Ultra-light MCP Identity auto-registration with
|
|
3
|
+
Ultra-light MCP Identity auto-registration. Give any MCP server a verifiable identity with just 2 lines of code.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## The Vision
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- 🚀 **2-line integration** - Zero configuration required
|
|
10
|
-
- 🔐 **Ed25519 cryptographic signing** - Secure challenge-response authentication
|
|
11
|
-
- 🌐 **Auto-registration** - Automatic DID creation via knowthat.ai
|
|
12
|
-
- 🔏 **MCP-I Handshake support** - Full challenge-response protocol implementation
|
|
13
|
-
- 🛡️ **Replay protection** - Nonce tracking and timestamp validation
|
|
14
|
-
- 📦 **Ultra-lightweight** - Minimal dependencies
|
|
15
|
-
- ⚡ **Level 2 MCP-I conformance** - Production-ready security
|
|
7
|
+
Make MCP-I adoption a no-brainer for the hundreds of thousands of MCP servers. Zero friction, immediate benefits.
|
|
16
8
|
|
|
17
9
|
## Installation
|
|
18
10
|
|
|
@@ -20,197 +12,85 @@ Enable any MCP server to get a verifiable identity with just 2 lines of code!
|
|
|
20
12
|
npm install @kya-os/mcp-i
|
|
21
13
|
```
|
|
22
14
|
|
|
23
|
-
##
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
import { MCPIdentity } from "@kya-os/mcp-i";
|
|
15
|
+
## Usage
|
|
27
16
|
|
|
28
|
-
|
|
29
|
-
const identity = await MCPIdentity.init();
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Challenge-Response Authentication
|
|
33
|
-
|
|
34
|
-
The package now includes full MCP-I Handshake support with cryptographic challenge-response:
|
|
17
|
+
### Option 1: Zero Configuration (Recommended)
|
|
35
18
|
|
|
36
19
|
```typescript
|
|
37
|
-
//
|
|
38
|
-
const challenge = {
|
|
39
|
-
nonce: "a1b2c3d4e5f6...",
|
|
40
|
-
timestamp: Date.now(),
|
|
41
|
-
verifier_did: "did:web:verifier.example.com"
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const response = await identity.respondToChallenge(challenge);
|
|
45
|
-
// Returns signed response with agent's DID and signature
|
|
20
|
+
import "@kya-os/mcp-i/auto"; // That's it! Your server now has identity
|
|
46
21
|
```
|
|
47
22
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
### Auto-Registration
|
|
51
|
-
|
|
52
|
-
On first run, the SDK automatically:
|
|
53
|
-
1. Registers your agent with knowthat.ai
|
|
54
|
-
2. Generates cryptographic keys (Ed25519)
|
|
55
|
-
3. Saves identity for future use
|
|
56
|
-
4. Returns a DID like `did:web:knowthat.ai:agents:your-agent-name`
|
|
57
|
-
|
|
58
|
-
### Cryptographic Signing
|
|
59
|
-
|
|
60
|
-
All signatures use Ed25519 for security:
|
|
23
|
+
### Option 2: With Configuration
|
|
61
24
|
|
|
62
25
|
```typescript
|
|
63
|
-
|
|
64
|
-
const signature = await identity.sign("Hello, World!");
|
|
65
|
-
|
|
66
|
-
// Verify signatures
|
|
67
|
-
const isValid = await identity.verify(message, signature, publicKey);
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### MCP Response Signing
|
|
26
|
+
import { enableMCPIdentity } from "@kya-os/mcp-i";
|
|
71
27
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
content: [{ type: 'text', text: 'Task completed!' }]
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
const signedResponse = await identity.signResponse(response);
|
|
80
|
-
// Includes _mcp_identity with DID, signature, and timestamp
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Capability Advertisement
|
|
84
|
-
|
|
85
|
-
Advertise your MCP-I capabilities:
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
const capabilities = identity.getCapabilities();
|
|
89
|
-
// {
|
|
90
|
-
// version: '1.0',
|
|
91
|
-
// did: 'did:web:knowthat.ai:agents:...',
|
|
92
|
-
// conformanceLevel: 2,
|
|
93
|
-
// handshakeSupported: true,
|
|
94
|
-
// handshakeEndpoint: '/_mcp-i/handshake'
|
|
95
|
-
// }
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## Advanced Options
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
const identity = await MCPIdentity.init({
|
|
102
|
-
// Custom agent metadata
|
|
103
|
-
name: 'My Amazing Agent',
|
|
104
|
-
description: 'Does amazing things',
|
|
105
|
-
repository: 'https://github.com/user/agent',
|
|
106
|
-
|
|
107
|
-
// Security options
|
|
108
|
-
timestampTolerance: 30000, // 30 seconds (default: 60)
|
|
109
|
-
enableNonceTracking: true, // Prevent replay attacks (default: true)
|
|
110
|
-
|
|
111
|
-
// Storage options
|
|
112
|
-
persistencePath: './config/identity.json'
|
|
28
|
+
await enableMCPIdentity({
|
|
29
|
+
name: "Calendar Booker",
|
|
30
|
+
description: "Professional calendar booking for AI agents",
|
|
31
|
+
repository: "https://github.com/awesome-dev/calendar-booker"
|
|
113
32
|
});
|
|
114
33
|
```
|
|
115
34
|
|
|
116
|
-
##
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
##
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
- **Next.js/Vite**: Automatically loads `.env.local`
|
|
140
|
-
- **MCP Servers**: Typically need to configure environment loading
|
|
141
|
-
|
|
142
|
-
### Security Note:
|
|
143
|
-
Add these to your `.gitignore`:
|
|
144
|
-
```
|
|
145
|
-
.env
|
|
146
|
-
.env.local
|
|
147
|
-
.mcp-identity.json
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## Example: Full MCP Server
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
154
|
-
import { MCPIdentity } from "@kya-os/mcp-i";
|
|
155
|
-
|
|
156
|
-
// Initialize identity
|
|
157
|
-
const identity = await MCPIdentity.init({
|
|
158
|
-
name: "Calendar Assistant",
|
|
159
|
-
description: "Helps manage your calendar"
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
// Create MCP server with identity
|
|
163
|
-
const server = new Server({
|
|
164
|
-
name: "calendar-assistant",
|
|
165
|
-
version: "1.0.0"
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
// Handle authentication challenges automatically
|
|
169
|
-
server.on("mcp-i:challenge", async (challenge) => {
|
|
170
|
-
return await identity.respondToChallenge(challenge);
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
// All responses are automatically signed
|
|
174
|
-
server.setRequestHandler('tools/call', async (request) => {
|
|
175
|
-
const result = { success: true };
|
|
176
|
-
return await identity.signResponse(result);
|
|
177
|
-
});
|
|
35
|
+
## What Happens
|
|
36
|
+
|
|
37
|
+
1. **First Run**: Automatically registers with knowthat.ai and gets a DID
|
|
38
|
+
2. **Identity Saved**: Persists to `.env.local` and `.mcp-identity.json`
|
|
39
|
+
3. **All Responses Signed**: Every response includes `_mcp_identity` field
|
|
40
|
+
4. **MCP-I Handshake**: Automatically handles challenge-response authentication
|
|
41
|
+
5. **Capabilities Advertised**: Server advertises MCP-I support to clients
|
|
42
|
+
|
|
43
|
+
## Example Response
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"content": [{
|
|
48
|
+
"type": "text",
|
|
49
|
+
"text": "Event booked successfully!"
|
|
50
|
+
}],
|
|
51
|
+
"_mcp_identity": {
|
|
52
|
+
"did": "did:web:knowthat.ai:agents:calendar-booker",
|
|
53
|
+
"signature": "0x3045...",
|
|
54
|
+
"timestamp": "2025-01-31T10:00:00Z",
|
|
55
|
+
"conformanceLevel": 2
|
|
56
|
+
}
|
|
57
|
+
}
|
|
178
58
|
```
|
|
179
59
|
|
|
180
|
-
##
|
|
181
|
-
|
|
182
|
-
This package implements **MCP-I Level 2** conformance:
|
|
183
|
-
- ✅ Cryptographic identity (Ed25519)
|
|
184
|
-
- ✅ Challenge-response authentication
|
|
185
|
-
- ✅ Replay protection
|
|
186
|
-
- ✅ Signed responses
|
|
187
|
-
- ✅ Timestamp validation
|
|
60
|
+
## Benefits
|
|
188
61
|
|
|
189
|
-
|
|
62
|
+
- ✅ **Verification Badge** on Smithery and other directories
|
|
63
|
+
- 🔝 **Priority Discovery** in search results
|
|
64
|
+
- 🔐 **Access to Identity-Aware APIs** with higher rate limits
|
|
65
|
+
- 📊 **Analytics & Reputation** tracking
|
|
66
|
+
- 🛡️ **Protection Against Impersonation**
|
|
190
67
|
|
|
191
|
-
|
|
192
|
-
Initialize or load MCP identity. Auto-registers if needed.
|
|
68
|
+
## How It Works
|
|
193
69
|
|
|
194
|
-
|
|
195
|
-
|
|
70
|
+
The package automatically:
|
|
71
|
+
1. Patches the MCP Server class to inject identity into all responses
|
|
72
|
+
2. Handles MCP-I challenge-response authentication
|
|
73
|
+
3. Advertises capabilities in server info
|
|
74
|
+
4. Works with all transports (STDIO, SSE, HTTP)
|
|
196
75
|
|
|
197
|
-
|
|
198
|
-
Sign a message with Ed25519.
|
|
76
|
+
## Environment Variables
|
|
199
77
|
|
|
200
|
-
|
|
201
|
-
Verify an Ed25519 signature.
|
|
78
|
+
After first run, these are saved automatically:
|
|
202
79
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
80
|
+
```bash
|
|
81
|
+
AGENT_DID="did:web:knowthat.ai:agents:your-agent"
|
|
82
|
+
AGENT_PUBLIC_KEY="base64-encoded-public-key"
|
|
83
|
+
AGENT_PRIVATE_KEY="base64-encoded-private-key"
|
|
84
|
+
AGENT_ID="uuid"
|
|
85
|
+
AGENT_SLUG="your-agent-slug"
|
|
86
|
+
```
|
|
208
87
|
|
|
209
|
-
|
|
210
|
-
Generate a cryptographically secure nonce.
|
|
88
|
+
## Security
|
|
211
89
|
|
|
212
|
-
|
|
213
|
-
|
|
90
|
+
- Private keys are stored locally, never sent to knowthat.ai
|
|
91
|
+
- All responses are cryptographically signed with Ed25519
|
|
92
|
+
- Challenge-response prevents replay attacks
|
|
93
|
+
- Nonce tracking prevents reuse
|
|
214
94
|
|
|
215
95
|
## License
|
|
216
96
|
|
|
@@ -163,7 +163,8 @@ vitest_1.vi.mock('fs', () => ({
|
|
|
163
163
|
(0, vitest_1.it)('should reject challenges outside tolerance window', async () => {
|
|
164
164
|
// Create identity with 5 second tolerance
|
|
165
165
|
const strictIdentity = await index_1.MCPIdentity.init({
|
|
166
|
-
timestampTolerance: 5000
|
|
166
|
+
timestampTolerance: 5000,
|
|
167
|
+
forceNew: true
|
|
167
168
|
});
|
|
168
169
|
const challenge = {
|
|
169
170
|
nonce: crypto.generateNonce(),
|
|
@@ -177,7 +178,8 @@ vitest_1.vi.mock('fs', () => ({
|
|
|
177
178
|
(0, vitest_1.describe)('nonce tracking', () => {
|
|
178
179
|
(0, vitest_1.it)('should allow disabling nonce tracking', async () => {
|
|
179
180
|
const identityNoTracking = await index_1.MCPIdentity.init({
|
|
180
|
-
enableNonceTracking: false
|
|
181
|
+
enableNonceTracking: false,
|
|
182
|
+
forceNew: true
|
|
181
183
|
});
|
|
182
184
|
const challenge = {
|
|
183
185
|
nonce: crypto.generateNonce(),
|
|
@@ -193,15 +195,14 @@ vitest_1.vi.mock('fs', () => ({
|
|
|
193
195
|
(0, vitest_1.describe)('getCapabilities', () => {
|
|
194
196
|
(0, vitest_1.it)('should advertise MCP-I capabilities', () => {
|
|
195
197
|
const capabilities = identity.getCapabilities();
|
|
196
|
-
(0, vitest_1.expect)(capabilities).
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
});
|
|
198
|
+
(0, vitest_1.expect)(capabilities.version).toBe('1.0');
|
|
199
|
+
(0, vitest_1.expect)(capabilities.did).toBe('did:web:knowthat.ai:agents:test-agent');
|
|
200
|
+
(0, vitest_1.expect)(capabilities.conformanceLevel).toBe(2);
|
|
201
|
+
(0, vitest_1.expect)(capabilities.handshakeSupported).toBe(true);
|
|
202
|
+
(0, vitest_1.expect)(capabilities.handshakeEndpoint).toBe('/_mcp-i/handshake');
|
|
203
|
+
(0, vitest_1.expect)(capabilities.verificationEndpoint).toBe('https://knowthat.ai/api/agents/did:web:knowthat.ai:agents:test-agent/verify');
|
|
204
|
+
(0, vitest_1.expect)(capabilities.publicKey).toBeDefined();
|
|
205
|
+
(0, vitest_1.expect)(capabilities.publicKey).toMatch(/^[A-Za-z0-9+/]+=*$/); // Base64 format
|
|
205
206
|
});
|
|
206
207
|
});
|
|
207
208
|
(0, vitest_1.describe)('static methods', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"challenge-response.test.js","sourceRoot":"","sources":["../../src/__tests__/challenge-response.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"challenge-response.test.js","sourceRoot":"","sources":["../../src/__tests__/challenge-response.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-enhancement module for transparent MCP-I integration
|
|
3
|
+
*
|
|
4
|
+
* This module automatically wraps MCP server instances to add identity
|
|
5
|
+
* without requiring any code changes or type modifications.
|
|
6
|
+
*/
|
|
7
|
+
import { MCPIdentity } from './index';
|
|
8
|
+
/**
|
|
9
|
+
* Internal type for MCP server instance
|
|
10
|
+
*/
|
|
11
|
+
interface MCPServerLike {
|
|
12
|
+
setRequestHandler?: (schema: any, handler: Function) => void;
|
|
13
|
+
tool?: (name: string, schema: any, handler: Function) => void;
|
|
14
|
+
resource?: (name: string, template: any, handler: Function) => void;
|
|
15
|
+
prompt?: (name: string, schema: any, handler: Function) => void;
|
|
16
|
+
_mcpIdentityEnhanced?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Enhance an MCP server instance with automatic identity
|
|
20
|
+
*/
|
|
21
|
+
export declare function enhanceMCPServer(server: MCPServerLike): Promise<MCPServerLike>;
|
|
22
|
+
/**
|
|
23
|
+
* Proxy constructor for automatic enhancement
|
|
24
|
+
*/
|
|
25
|
+
export declare function createMCPServerProxy(ServerClass: any): any;
|
|
26
|
+
/**
|
|
27
|
+
* Module loader hook for automatic enhancement
|
|
28
|
+
* This can be used with Node.js --loader flag
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolve(specifier: string, context: any, defaultResolve: Function): Promise<any>;
|
|
31
|
+
export declare function load(url: string, context: any, defaultLoad: Function): Promise<any>;
|
|
32
|
+
/**
|
|
33
|
+
* Get the current identity instance
|
|
34
|
+
*/
|
|
35
|
+
export declare function getCurrentIdentity(): MCPIdentity | null;
|
|
36
|
+
/**
|
|
37
|
+
* Initialize identity explicitly (optional)
|
|
38
|
+
*/
|
|
39
|
+
export declare function initializeIdentity(options?: any): Promise<MCPIdentity>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=auto-enhance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-enhance.d.ts","sourceRoot":"","sources":["../src/auto-enhance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAMtC;;GAEG;AACH,UAAU,aAAa;IACrB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChE,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAmDD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAmDpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAW1D;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,gBAEtF;AAED,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,gBAmD1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAK5E"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auto-enhancement module for transparent MCP-I integration
|
|
4
|
+
*
|
|
5
|
+
* This module automatically wraps MCP server instances to add identity
|
|
6
|
+
* without requiring any code changes or type modifications.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.enhanceMCPServer = enhanceMCPServer;
|
|
10
|
+
exports.createMCPServerProxy = createMCPServerProxy;
|
|
11
|
+
exports.resolve = resolve;
|
|
12
|
+
exports.load = load;
|
|
13
|
+
exports.getCurrentIdentity = getCurrentIdentity;
|
|
14
|
+
exports.initializeIdentity = initializeIdentity;
|
|
15
|
+
const index_1 = require("./index");
|
|
16
|
+
// Store the singleton identity instance
|
|
17
|
+
let globalIdentity = null;
|
|
18
|
+
/**
|
|
19
|
+
* Wrap a response handler to automatically add MCP-I identity
|
|
20
|
+
*/
|
|
21
|
+
function wrapHandler(originalHandler, identity) {
|
|
22
|
+
return async function (...args) {
|
|
23
|
+
// Call the original handler
|
|
24
|
+
const response = await originalHandler.apply(this, args);
|
|
25
|
+
// If response is null/undefined, return as-is
|
|
26
|
+
if (!response)
|
|
27
|
+
return response;
|
|
28
|
+
// Add identity metadata without changing the response structure
|
|
29
|
+
// We use Object.defineProperty to make it non-enumerable
|
|
30
|
+
Object.defineProperty(response, '_mcp_identity', {
|
|
31
|
+
value: {
|
|
32
|
+
did: identity.did,
|
|
33
|
+
signature: '', // Will be filled below
|
|
34
|
+
timestamp: new Date().toISOString(),
|
|
35
|
+
conformanceLevel: 2
|
|
36
|
+
},
|
|
37
|
+
writable: true,
|
|
38
|
+
enumerable: false, // Hidden from JSON.stringify by default
|
|
39
|
+
configurable: true
|
|
40
|
+
});
|
|
41
|
+
// Sign the response content
|
|
42
|
+
const contentToSign = JSON.stringify({
|
|
43
|
+
...response,
|
|
44
|
+
_mcp_identity: {
|
|
45
|
+
did: identity.did,
|
|
46
|
+
timestamp: response._mcp_identity.timestamp,
|
|
47
|
+
conformanceLevel: 2
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
response._mcp_identity.signature = await identity.sign(contentToSign);
|
|
51
|
+
// Override toJSON to include _mcp_identity when serializing
|
|
52
|
+
const originalToJSON = response.toJSON;
|
|
53
|
+
response.toJSON = function () {
|
|
54
|
+
const result = originalToJSON ? originalToJSON.call(this) : { ...this };
|
|
55
|
+
result._mcp_identity = response._mcp_identity;
|
|
56
|
+
return result;
|
|
57
|
+
};
|
|
58
|
+
return response;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Enhance an MCP server instance with automatic identity
|
|
63
|
+
*/
|
|
64
|
+
async function enhanceMCPServer(server) {
|
|
65
|
+
// Skip if already enhanced
|
|
66
|
+
if (server._mcpIdentityEnhanced) {
|
|
67
|
+
return server;
|
|
68
|
+
}
|
|
69
|
+
// Initialize identity if not already done
|
|
70
|
+
if (!globalIdentity) {
|
|
71
|
+
globalIdentity = await index_1.MCPIdentity.init();
|
|
72
|
+
}
|
|
73
|
+
// Wrap setRequestHandler if it exists
|
|
74
|
+
if (server.setRequestHandler) {
|
|
75
|
+
const originalSetRequestHandler = server.setRequestHandler.bind(server);
|
|
76
|
+
server.setRequestHandler = function (schema, handler) {
|
|
77
|
+
const wrappedHandler = wrapHandler(handler, globalIdentity);
|
|
78
|
+
return originalSetRequestHandler(schema, wrappedHandler);
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// Wrap tool method if it exists
|
|
82
|
+
if (server.tool) {
|
|
83
|
+
const originalTool = server.tool.bind(server);
|
|
84
|
+
server.tool = function (name, schema, handler) {
|
|
85
|
+
const wrappedHandler = wrapHandler(handler, globalIdentity);
|
|
86
|
+
return originalTool(name, schema, wrappedHandler);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Wrap resource method if it exists
|
|
90
|
+
if (server.resource) {
|
|
91
|
+
const originalResource = server.resource.bind(server);
|
|
92
|
+
server.resource = function (name, template, handler) {
|
|
93
|
+
const wrappedHandler = wrapHandler(handler, globalIdentity);
|
|
94
|
+
return originalResource(name, template, wrappedHandler);
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// Wrap prompt method if it exists
|
|
98
|
+
if (server.prompt) {
|
|
99
|
+
const originalPrompt = server.prompt.bind(server);
|
|
100
|
+
server.prompt = function (name, schema, handler) {
|
|
101
|
+
const wrappedHandler = wrapHandler(handler, globalIdentity);
|
|
102
|
+
return originalPrompt(name, schema, wrappedHandler);
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// Mark as enhanced
|
|
106
|
+
server._mcpIdentityEnhanced = true;
|
|
107
|
+
return server;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Proxy constructor for automatic enhancement
|
|
111
|
+
*/
|
|
112
|
+
function createMCPServerProxy(ServerClass) {
|
|
113
|
+
return new Proxy(ServerClass, {
|
|
114
|
+
construct(target, args) {
|
|
115
|
+
const instance = new target(...args);
|
|
116
|
+
// Enhance asynchronously after construction
|
|
117
|
+
setImmediate(async () => {
|
|
118
|
+
await enhanceMCPServer(instance);
|
|
119
|
+
});
|
|
120
|
+
return instance;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Module loader hook for automatic enhancement
|
|
126
|
+
* This can be used with Node.js --loader flag
|
|
127
|
+
*/
|
|
128
|
+
async function resolve(specifier, context, defaultResolve) {
|
|
129
|
+
return defaultResolve(specifier, context);
|
|
130
|
+
}
|
|
131
|
+
async function load(url, context, defaultLoad) {
|
|
132
|
+
const result = await defaultLoad(url, context);
|
|
133
|
+
// Only process TypeScript/JavaScript files
|
|
134
|
+
if (!result.source || (!url.endsWith('.js') && !url.endsWith('.ts') && !url.endsWith('.mjs'))) {
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
const source = result.source.toString();
|
|
138
|
+
// Check if this imports MCP SDK
|
|
139
|
+
if (source.includes('@modelcontextprotocol/sdk')) {
|
|
140
|
+
// Inject our enhancement code
|
|
141
|
+
const enhancedSource = `
|
|
142
|
+
import { enhanceMCPServer } from '@kya-os/mcp-i/auto-enhance';
|
|
143
|
+
|
|
144
|
+
// Auto-enhance any Server or McpServer instances
|
|
145
|
+
const originalCode = ${JSON.stringify(source)};
|
|
146
|
+
const moduleExports = await import('data:text/javascript;base64,' + btoa(originalCode));
|
|
147
|
+
|
|
148
|
+
// Wrap server constructors
|
|
149
|
+
if (moduleExports.Server) {
|
|
150
|
+
const OriginalServer = moduleExports.Server;
|
|
151
|
+
moduleExports.Server = class extends OriginalServer {
|
|
152
|
+
constructor(...args) {
|
|
153
|
+
super(...args);
|
|
154
|
+
setImmediate(() => enhanceMCPServer(this));
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (moduleExports.McpServer) {
|
|
160
|
+
const OriginalMcpServer = moduleExports.McpServer;
|
|
161
|
+
moduleExports.McpServer = class extends OriginalMcpServer {
|
|
162
|
+
constructor(...args) {
|
|
163
|
+
super(...args);
|
|
164
|
+
setImmediate(() => enhanceMCPServer(this));
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export * from moduleExports;
|
|
170
|
+
`;
|
|
171
|
+
return {
|
|
172
|
+
...result,
|
|
173
|
+
source: enhancedSource
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get the current identity instance
|
|
180
|
+
*/
|
|
181
|
+
function getCurrentIdentity() {
|
|
182
|
+
return globalIdentity;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Initialize identity explicitly (optional)
|
|
186
|
+
*/
|
|
187
|
+
async function initializeIdentity(options) {
|
|
188
|
+
if (!globalIdentity) {
|
|
189
|
+
globalIdentity = await index_1.MCPIdentity.init(options);
|
|
190
|
+
}
|
|
191
|
+
return globalIdentity;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=auto-enhance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-enhance.js","sourceRoot":"","sources":["../src/auto-enhance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-initialization module for @kya-os/mcp-i
|
|
3
|
+
*
|
|
4
|
+
* This file provides automatic enhancement of MCP servers when imported.
|
|
5
|
+
* Just add: import '@kya-os/mcp-i/auto-init'
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Initialize auto-enhancement
|
|
9
|
+
*/
|
|
10
|
+
declare function initialize(): Promise<void>;
|
|
11
|
+
export { initialize as initializeMCPIdentity };
|
|
12
|
+
//# sourceMappingURL=auto-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-init.d.ts","sourceRoot":"","sources":["../src/auto-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiHH;;GAEG;AACH,iBAAe,UAAU,kBAqBxB;AAMD,OAAO,EAAE,UAAU,IAAI,qBAAqB,EAAE,CAAC"}
|