@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 CHANGED
@@ -1,18 +1,10 @@
1
1
  # @kya-os/mcp-i
2
2
 
3
- Ultra-light MCP Identity auto-registration with cryptographic challenge-response authentication.
3
+ Ultra-light MCP Identity auto-registration. Give any MCP server a verifiable identity with just 2 lines of code.
4
4
 
5
- Enable any MCP server to get a verifiable identity with just 2 lines of code!
5
+ ## The Vision
6
6
 
7
- ## Features
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
- ## Quick Start
24
-
25
- ```typescript
26
- import { MCPIdentity } from "@kya-os/mcp-i";
15
+ ## Usage
27
16
 
28
- // That's it! Your MCP server now has a verifiable identity
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
- // Respond to authentication challenges
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
- ## Core Features
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
- // Sign any message
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
- Automatically sign MCP responses with identity metadata:
73
-
74
- ```typescript
75
- const response = {
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
- ## Security Features
117
-
118
- - **Ed25519 signatures** - Cryptographically secure signing
119
- - **Replay protection** - Tracks used nonces to prevent replay attacks
120
- - **Timestamp validation** - Rejects expired challenges
121
- - **Constant-time comparison** - Prevents timing attacks
122
- - **Secure key storage** - Private keys never exposed in logs
123
-
124
- ## Identity Persistence
125
-
126
- Identity is saved in multiple locations for maximum compatibility:
127
-
128
- ### Files Created:
129
- 1. **`.env`** - Standard environment file for Node.js
130
- 2. **`.env.local`** - For framework compatibility (Next.js, Vite, etc.)
131
- 3. **`.mcp-identity.json`** - JSON format for programmatic access
132
-
133
- ### Loading Priority:
134
- 1. Environment variables (if already loaded)
135
- 2. `.mcp-identity.json` file (most reliable)
136
-
137
- ### Environment Loading:
138
- - **Plain Node.js**: Add `require('dotenv').config()` to load `.env`
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
- ## Conformance Levels
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
- ## API Reference
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
- ### `MCPIdentity.init(options?)`
192
- Initialize or load MCP identity. Auto-registers if needed.
68
+ ## How It Works
193
69
 
194
- ### `identity.respondToChallenge(challenge)`
195
- Respond to an MCP-I authentication challenge.
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
- ### `identity.sign(message)`
198
- Sign a message with Ed25519.
76
+ ## Environment Variables
199
77
 
200
- ### `identity.verify(message, signature, publicKey?)`
201
- Verify an Ed25519 signature.
78
+ After first run, these are saved automatically:
202
79
 
203
- ### `identity.signResponse(response)`
204
- Sign an MCP response with identity metadata.
205
-
206
- ### `identity.getCapabilities()`
207
- Get MCP-I capability advertisement.
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
- ### `MCPIdentity.generateNonce()`
210
- Generate a cryptographically secure nonce.
88
+ ## Security
211
89
 
212
- ### `identity.destroy()`
213
- Clean up resources (stops nonce cleanup timer).
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).toEqual({
197
- version: '1.0',
198
- did: 'did:web:knowthat.ai:agents:test-agent',
199
- publicKey: keyPair.publicKey,
200
- conformanceLevel: 2,
201
- handshakeSupported: true,
202
- handshakeEndpoint: '/_mcp-i/handshake',
203
- verificationEndpoint: 'https://knowthat.ai/api/agents/did:web:knowthat.ai:agents:test-agent/verify'
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"}