meshsig 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,7 +20,8 @@
20
20
  <a href="https://meshsig.ai">meshsig.ai</a> ·
21
21
  <a href="#cli">CLI</a> ·
22
22
  <a href="#dashboard">Dashboard</a> ·
23
- <a href="#openclaw-integration">OpenClaw</a> ·
23
+ <a href="#mcp-server">MCP</a> ·
24
+ <a href="#integrations">Integrations</a> ·
24
25
  <a href="#api-reference">API</a> ·
25
26
  <a href="#audit--compliance">Audit</a>
26
27
  </p>
@@ -204,9 +205,39 @@ meshsig revoked
204
205
 
205
206
  Built-in protection against abuse. 60 requests per minute per IP address. Exceeding the limit returns `429 Too Many Requests` with retry information.
206
207
 
207
- ## OpenClaw Integration
208
+ ## Integrations
208
209
 
209
- MeshSig integrates natively with [OpenClaw](https://openclaw.com). One install secures all agent-to-agent delegations with cryptographic signatures.
210
+ MeshSig is **framework-agnostic** it works with any AI agent framework via the HTTP API, CLI, or MCP protocol.
211
+
212
+ ### Any Framework (HTTP API)
213
+
214
+ Use the REST API to sign and verify messages from any language or framework:
215
+
216
+ ```bash
217
+ # Register an agent
218
+ curl -X POST http://localhost:4888/agents/register \
219
+ -H 'Content-Type: application/json' \
220
+ -d '{"name":"my-agent","capabilities":[{"type":"analysis"}]}'
221
+
222
+ # Send a signed message
223
+ curl -X POST http://localhost:4888/messages/send \
224
+ -H 'Content-Type: application/json' \
225
+ -d '{"fromDid":"did:msig:...","toDid":"did:msig:...","message":"task","privateKey":"..."}'
226
+ ```
227
+
228
+ Works with **LangChain**, **CrewAI**, **AutoGen**, **LlamaIndex**, **Semantic Kernel**, **Haystack**, custom agents, and any system that can make HTTP requests.
229
+
230
+ ### MCP (Claude, Cursor, Windsurf, Cline)
231
+
232
+ MeshSig ships as a native MCP server. See the [MCP Server](#mcp-server) section.
233
+
234
+ ```bash
235
+ npx meshsig-mcp
236
+ ```
237
+
238
+ ### OpenClaw (Native)
239
+
240
+ MeshSig includes built-in scripts for OpenClaw agent-to-agent delegation:
210
241
 
211
242
  ```bash
212
243
  # With MeshSig running on the same server as OpenClaw:
@@ -224,7 +255,7 @@ Before: Agent A → invoke.sh → Agent B (no proof)
224
255
  After: Agent A → invoke.sh → [SIGN] → MeshSig → [VERIFY] → Agent B
225
256
  ```
226
257
 
227
- ### Auto-register new agents
258
+ ### Auto-register agents
228
259
 
229
260
  ```bash
230
261
  # When a new agent is provisioned:
@@ -234,6 +265,34 @@ bash scripts/register-agent.sh agent-name-here
234
265
  bash scripts/unregister-agent.sh agent-name-here
235
266
  ```
236
267
 
268
+ ### Python / JavaScript SDK
269
+
270
+ Use MeshSig programmatically:
271
+
272
+ ```javascript
273
+ // JavaScript / TypeScript
274
+ import { generateIdentity, sign, verify } from 'meshsig';
275
+
276
+ const agent = await generateIdentity();
277
+ const signature = await sign('hello', agent.privateKey);
278
+ const valid = await verify('hello', signature, agent.publicKey); // true
279
+ ```
280
+
281
+ ```python
282
+ # Python — use the HTTP API
283
+ import requests
284
+
285
+ # Register
286
+ r = requests.post('http://localhost:4888/agents/register',
287
+ json={'name': 'my-agent', 'capabilities': [{'type': 'analysis'}]})
288
+ agent = r.json()
289
+
290
+ # Verify
291
+ r = requests.post('http://localhost:4888/verify',
292
+ json={'message': 'hello', 'signature': sig, 'did': agent['record']['did']})
293
+ print(r.json()['valid']) # True
294
+ ```
295
+
237
296
  ## How It Works
238
297
 
239
298
  ### Identity
@@ -336,6 +395,46 @@ See [docs/SECURITY.md](docs/SECURITY.md) for the full security whitepaper.
336
395
 
337
396
  No database to configure. No cloud services. No API keys. Install, start, secure.
338
397
 
398
+ ## MCP Server
399
+
400
+ MeshSig works as a Model Context Protocol (MCP) server — any AI tool can use it directly.
401
+
402
+ **9 tools available:** `meshsig_init`, `meshsig_sign`, `meshsig_verify`, `meshsig_identity`, `meshsig_agents`, `meshsig_stats`, `meshsig_audit`, `meshsig_revoke`, `meshsig_revoked`
403
+
404
+ ### Claude Desktop
405
+
406
+ Add to `~/.claude/claude_desktop_config.json`:
407
+
408
+ ```json
409
+ {
410
+ "mcpServers": {
411
+ "meshsig": {
412
+ "command": "npx",
413
+ "args": ["meshsig-mcp"]
414
+ }
415
+ }
416
+ }
417
+ ```
418
+
419
+ ### Cursor / Windsurf / Cline
420
+
421
+ Add to your MCP config:
422
+
423
+ ```json
424
+ {
425
+ "meshsig": {
426
+ "command": "npx",
427
+ "args": ["meshsig-mcp"]
428
+ }
429
+ }
430
+ ```
431
+
432
+ Then ask your AI: *"Sign this message with MeshSig"* or *"Verify this agent's signature"* — it works directly.
433
+
434
+ ### Environment Variables
435
+
436
+ - `MESHSIG_SERVER` — MeshSig server URL (default: `http://localhost:4888`)
437
+
339
438
  ## License
340
439
 
341
440
  MIT
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,311 @@
1
+ #!/usr/bin/env node
2
+ // ============================================================================
3
+ // MeshSig MCP Server — Model Context Protocol integration
4
+ //
5
+ // Exposes MeshSig cryptographic operations as MCP tools that any
6
+ // AI application (Claude, Cursor, Windsurf, Cline) can use directly.
7
+ //
8
+ // Usage:
9
+ // npx meshsig-mcp # Start as stdio MCP server
10
+ // node dist/mcp-server.js # Direct execution
11
+ //
12
+ // Claude Desktop config (~/.claude/claude_desktop_config.json):
13
+ // {
14
+ // "mcpServers": {
15
+ // "meshsig": {
16
+ // "command": "npx",
17
+ // "args": ["meshsig-mcp"]
18
+ // }
19
+ // }
20
+ // }
21
+ // ============================================================================
22
+ import { generateIdentity, sign, verify, verifyWithDid, isValidDid, hashPayload } from './crypto.js';
23
+ import { resolve } from 'node:path';
24
+ import { homedir } from 'node:os';
25
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
26
+ const MESHSIG_DIR = resolve(homedir(), '.meshsig');
27
+ const IDENTITY_FILE = resolve(MESHSIG_DIR, 'identity.json');
28
+ const DEFAULT_SERVER = process.env.MESHSIG_SERVER || 'http://localhost:4888';
29
+ function ensureDir() {
30
+ if (!existsSync(MESHSIG_DIR))
31
+ mkdirSync(MESHSIG_DIR, { recursive: true });
32
+ }
33
+ function loadIdentity() {
34
+ if (!existsSync(IDENTITY_FILE))
35
+ return null;
36
+ return JSON.parse(readFileSync(IDENTITY_FILE, 'utf-8'));
37
+ }
38
+ function sendResponse(id, result) {
39
+ const msg = JSON.stringify({ jsonrpc: '2.0', id, result });
40
+ process.stdout.write(`${msg}\n`);
41
+ }
42
+ function sendError(id, code, message) {
43
+ const msg = JSON.stringify({ jsonrpc: '2.0', id, error: { code, message } });
44
+ process.stdout.write(`${msg}\n`);
45
+ }
46
+ function sendNotification(method, params) {
47
+ const msg = JSON.stringify({ jsonrpc: '2.0', method, params });
48
+ process.stdout.write(`${msg}\n`);
49
+ }
50
+ // -- Tool Definitions --------------------------------------------------------
51
+ const TOOLS = [
52
+ {
53
+ name: 'meshsig_init',
54
+ description: 'Generate a new Ed25519 cryptographic identity (DID + keypair). The identity is stored locally at ~/.meshsig/identity.json. This is required before signing messages.',
55
+ inputSchema: {
56
+ type: 'object',
57
+ properties: {
58
+ force: { type: 'boolean', description: 'Overwrite existing identity if one exists', default: false },
59
+ },
60
+ },
61
+ },
62
+ {
63
+ name: 'meshsig_sign',
64
+ description: 'Sign a message with your Ed25519 private key. Returns the digital signature, hash, and your DID. Requires meshsig_init to have been run first.',
65
+ inputSchema: {
66
+ type: 'object',
67
+ properties: {
68
+ message: { type: 'string', description: 'The message to sign' },
69
+ },
70
+ required: ['message'],
71
+ },
72
+ },
73
+ {
74
+ name: 'meshsig_verify',
75
+ description: 'Verify an Ed25519 signature against a message and public key or DID. Returns whether the signature is valid. Anyone can verify without needing a private key.',
76
+ inputSchema: {
77
+ type: 'object',
78
+ properties: {
79
+ message: { type: 'string', description: 'The original message that was signed' },
80
+ signature: { type: 'string', description: 'The Base64-encoded Ed25519 signature' },
81
+ signer: { type: 'string', description: 'The signer\'s public key (Base64) or DID (did:msig:...)' },
82
+ },
83
+ required: ['message', 'signature', 'signer'],
84
+ },
85
+ },
86
+ {
87
+ name: 'meshsig_identity',
88
+ description: 'Show your MeshSig identity — DID and public key. Returns null if no identity has been generated yet.',
89
+ inputSchema: { type: 'object', properties: {} },
90
+ },
91
+ {
92
+ name: 'meshsig_agents',
93
+ description: 'List all agents registered on the MeshSig server with their DIDs, trust scores, capabilities, and origin (local/remote).',
94
+ inputSchema: {
95
+ type: 'object',
96
+ properties: {
97
+ server: { type: 'string', description: 'MeshSig server URL', default: 'http://localhost:4888' },
98
+ },
99
+ },
100
+ },
101
+ {
102
+ name: 'meshsig_audit',
103
+ description: 'Export the complete audit report from the MeshSig server — all agents, connections, signed messages, and verification status. Useful for compliance and security reviews.',
104
+ inputSchema: {
105
+ type: 'object',
106
+ properties: {
107
+ server: { type: 'string', description: 'MeshSig server URL', default: 'http://localhost:4888' },
108
+ },
109
+ },
110
+ },
111
+ {
112
+ name: 'meshsig_stats',
113
+ description: 'Get MeshSig server statistics — number of agents, connections, messages, and uptime.',
114
+ inputSchema: {
115
+ type: 'object',
116
+ properties: {
117
+ server: { type: 'string', description: 'MeshSig server URL', default: 'http://localhost:4888' },
118
+ },
119
+ },
120
+ },
121
+ {
122
+ name: 'meshsig_revoke',
123
+ description: 'Revoke a compromised agent. This permanently blocks all future messages from this agent. Cannot be undone.',
124
+ inputSchema: {
125
+ type: 'object',
126
+ properties: {
127
+ did: { type: 'string', description: 'The DID of the agent to revoke (did:msig:...)' },
128
+ reason: { type: 'string', description: 'Reason for revocation', default: 'Compromised' },
129
+ server: { type: 'string', description: 'MeshSig server URL', default: 'http://localhost:4888' },
130
+ },
131
+ required: ['did'],
132
+ },
133
+ },
134
+ {
135
+ name: 'meshsig_revoked',
136
+ description: 'List all revoked (compromised) agents on the MeshSig server.',
137
+ inputSchema: {
138
+ type: 'object',
139
+ properties: {
140
+ server: { type: 'string', description: 'MeshSig server URL', default: 'http://localhost:4888' },
141
+ },
142
+ },
143
+ },
144
+ ];
145
+ // -- Tool Handlers -----------------------------------------------------------
146
+ async function handleTool(name, args) {
147
+ switch (name) {
148
+ case 'meshsig_init': {
149
+ ensureDir();
150
+ if (existsSync(IDENTITY_FILE) && !args.force) {
151
+ const existing = loadIdentity();
152
+ return { content: [{ type: 'text', text: `Identity already exists.\nDID: ${existing.did}\nPublic Key: ${existing.publicKey}\nUse force=true to regenerate.` }] };
153
+ }
154
+ const identity = await generateIdentity();
155
+ writeFileSync(IDENTITY_FILE, JSON.stringify(identity, null, 2));
156
+ return { content: [{ type: 'text', text: `✓ Identity generated\nDID: ${identity.did}\nPublic Key: ${identity.publicKey}\nStored at: ${IDENTITY_FILE}\n\nYour private key is stored locally. Never share it.` }] };
157
+ }
158
+ case 'meshsig_sign': {
159
+ const identity = loadIdentity();
160
+ if (!identity)
161
+ return { content: [{ type: 'text', text: 'No identity found. Run meshsig_init first.' }], isError: true };
162
+ const signature = await sign(args.message, identity.privateKey);
163
+ const hash = hashPayload(args.message);
164
+ return { content: [{ type: 'text', text: JSON.stringify({
165
+ did: identity.did, message: args.message, signature, hash,
166
+ publicKey: identity.publicKey, timestamp: new Date().toISOString(),
167
+ }, null, 2) }] };
168
+ }
169
+ case 'meshsig_verify': {
170
+ let valid;
171
+ if (isValidDid(args.signer)) {
172
+ valid = await verifyWithDid(args.message, args.signature, args.signer);
173
+ }
174
+ else {
175
+ valid = await verify(args.message, args.signature, args.signer);
176
+ }
177
+ return { content: [{ type: 'text', text: valid
178
+ ? `✓ SIGNATURE VALID\nSigner: ${args.signer}`
179
+ : `✗ SIGNATURE INVALID\nSigner: ${args.signer}\nThe signature does not match the message and key provided.`
180
+ }] };
181
+ }
182
+ case 'meshsig_identity': {
183
+ const identity = loadIdentity();
184
+ if (!identity)
185
+ return { content: [{ type: 'text', text: 'No identity found. Run meshsig_init first.' }] };
186
+ return { content: [{ type: 'text', text: JSON.stringify({
187
+ did: identity.did, publicKey: identity.publicKey, createdAt: identity.createdAt,
188
+ }, null, 2) }] };
189
+ }
190
+ case 'meshsig_agents': {
191
+ const server = args.server || DEFAULT_SERVER;
192
+ try {
193
+ const res = await fetch(`${server}/agents`);
194
+ const data = await res.json();
195
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
196
+ }
197
+ catch {
198
+ return { content: [{ type: 'text', text: `Cannot connect to MeshSig server at ${server}` }], isError: true };
199
+ }
200
+ }
201
+ case 'meshsig_audit': {
202
+ const server = args.server || DEFAULT_SERVER;
203
+ try {
204
+ const res = await fetch(`${server}/audit/export`);
205
+ const data = await res.json();
206
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
207
+ }
208
+ catch {
209
+ return { content: [{ type: 'text', text: `Cannot connect to MeshSig server at ${server}` }], isError: true };
210
+ }
211
+ }
212
+ case 'meshsig_stats': {
213
+ const server = args.server || DEFAULT_SERVER;
214
+ try {
215
+ const res = await fetch(`${server}/stats`);
216
+ const data = await res.json();
217
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
218
+ }
219
+ catch {
220
+ return { content: [{ type: 'text', text: `Cannot connect to MeshSig server at ${server}` }], isError: true };
221
+ }
222
+ }
223
+ case 'meshsig_revoke': {
224
+ const server = args.server || DEFAULT_SERVER;
225
+ try {
226
+ const res = await fetch(`${server}/agents/revoke`, {
227
+ method: 'POST', headers: { 'Content-Type': 'application/json' },
228
+ body: JSON.stringify({ did: args.did, reason: args.reason || 'Compromised' }),
229
+ });
230
+ const data = await res.json();
231
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
232
+ }
233
+ catch {
234
+ return { content: [{ type: 'text', text: `Cannot connect to MeshSig server at ${server}` }], isError: true };
235
+ }
236
+ }
237
+ case 'meshsig_revoked': {
238
+ const server = args.server || DEFAULT_SERVER;
239
+ try {
240
+ const res = await fetch(`${server}/revoked`);
241
+ const data = await res.json();
242
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
243
+ }
244
+ catch {
245
+ return { content: [{ type: 'text', text: `Cannot connect to MeshSig server at ${server}` }], isError: true };
246
+ }
247
+ }
248
+ default:
249
+ return { content: [{ type: 'text', text: `Unknown tool: ${name}` }], isError: true };
250
+ }
251
+ }
252
+ // -- MCP Message Handler -----------------------------------------------------
253
+ async function handleMessage(req) {
254
+ switch (req.method) {
255
+ case 'initialize':
256
+ sendResponse(req.id, {
257
+ protocolVersion: '2024-11-05',
258
+ capabilities: { tools: {} },
259
+ serverInfo: { name: 'meshsig', version: '0.7.0' },
260
+ });
261
+ break;
262
+ case 'notifications/initialized':
263
+ break;
264
+ case 'tools/list':
265
+ sendResponse(req.id, { tools: TOOLS });
266
+ break;
267
+ case 'tools/call': {
268
+ const { name, arguments: args } = req.params;
269
+ try {
270
+ const result = await handleTool(name, args || {});
271
+ sendResponse(req.id, result);
272
+ }
273
+ catch (err) {
274
+ sendResponse(req.id, {
275
+ content: [{ type: 'text', text: `Error: ${err.message}` }],
276
+ isError: true,
277
+ });
278
+ }
279
+ break;
280
+ }
281
+ default:
282
+ if (req.id !== undefined) {
283
+ sendError(req.id, -32601, `Method not found: ${req.method}`);
284
+ }
285
+ }
286
+ }
287
+ // -- Stdio Transport ---------------------------------------------------------
288
+ let buffer = '';
289
+ process.stdin.setEncoding('utf-8');
290
+ process.stdin.on('data', (chunk) => {
291
+ buffer += chunk;
292
+ const lines = buffer.split('\n');
293
+ buffer = lines.pop() || '';
294
+ for (const line of lines) {
295
+ const trimmed = line.trim();
296
+ if (!trimmed)
297
+ continue;
298
+ try {
299
+ const msg = JSON.parse(trimmed);
300
+ handleMessage(msg).catch(err => {
301
+ console.error('MCP handler error:', err);
302
+ });
303
+ }
304
+ catch {
305
+ // skip non-JSON lines
306
+ }
307
+ }
308
+ });
309
+ process.stdin.on('end', () => process.exit(0));
310
+ console.error('MeshSig MCP Server started — waiting for JSON-RPC messages on stdin');
311
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,20 @@
1
1
  {
2
2
  "name": "meshsig",
3
- "version": "0.6.0",
4
- "description": "Cryptographic security layer for AI agents. Ed25519 identity, signed messages, trust scoring.",
3
+ "version": "0.7.1",
4
+ "description": "Cryptographic security layer for AI agents. Ed25519 identity, signed messages, trust scoring. Works with LangChain, CrewAI, AutoGen, OpenClaw, or any agent framework.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "bin": {
8
- "meshsig": "dist/main.js"
8
+ "meshsig": "dist/main.js",
9
+ "meshsig-mcp": "dist/mcp-server.js"
9
10
  },
10
11
  "license": "MIT",
11
12
  "keywords": [
12
13
  "ai-agents", "cryptography", "ed25519", "digital-signatures",
13
- "identity", "did", "security", "trust", "openclaw", "mesh",
14
- "agent-security", "w3c-did", "audit", "compliance"
14
+ "identity", "did", "security", "trust", "mesh",
15
+ "agent-security", "w3c-did", "audit", "compliance", "mcp",
16
+ "model-context-protocol", "langchain", "crewai", "autogen",
17
+ "openclaw", "llm-agents", "agent-framework"
15
18
  ],
16
19
  "repository": {
17
20
  "type": "git",