@mandatez/mcp 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.
- package/README.md +103 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +276 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
package/README.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# @mandatez/mcp
|
|
2
|
+
|
|
3
|
+
MCP (Model Context Protocol) server for [MandateZ](https://mandatez.com) — the neutral trust infrastructure layer for AI agents.
|
|
4
|
+
|
|
5
|
+
Gives any MCP-compatible AI client (Claude Desktop, Cursor, Windsurf) direct access to MandateZ agent registration, event tracking, trust scoring, policy enforcement, and audit trails.
|
|
6
|
+
|
|
7
|
+
## Tools
|
|
8
|
+
|
|
9
|
+
| Tool | Description |
|
|
10
|
+
|------|-------------|
|
|
11
|
+
| `register_agent` | Generate an Ed25519 keypair and register a new agent |
|
|
12
|
+
| `track_event` | Log a cryptographically signed event to the audit trail |
|
|
13
|
+
| `get_trust_profile` | Compute trust score (0–100) and grade for an agent |
|
|
14
|
+
| `check_policy` | Evaluate an action against policy rules (allowed/blocked/flagged) |
|
|
15
|
+
| `get_audit_trail` | Retrieve the last N events for an agent |
|
|
16
|
+
|
|
17
|
+
## Setup
|
|
18
|
+
|
|
19
|
+
### Claude Desktop
|
|
20
|
+
|
|
21
|
+
Add to your `claude_desktop_config.json`:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"mcpServers": {
|
|
26
|
+
"mandatez": {
|
|
27
|
+
"command": "npx",
|
|
28
|
+
"args": ["@mandatez/mcp"],
|
|
29
|
+
"env": {
|
|
30
|
+
"SUPABASE_URL": "your-supabase-url",
|
|
31
|
+
"SUPABASE_ANON_KEY": "your-supabase-anon-key",
|
|
32
|
+
"MANDATEZ_OWNER_ID": "your-owner-id"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Cursor
|
|
40
|
+
|
|
41
|
+
Add to your `.cursor/mcp.json`:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"mcpServers": {
|
|
46
|
+
"mandatez": {
|
|
47
|
+
"command": "npx",
|
|
48
|
+
"args": ["@mandatez/mcp"],
|
|
49
|
+
"env": {
|
|
50
|
+
"SUPABASE_URL": "your-supabase-url",
|
|
51
|
+
"SUPABASE_ANON_KEY": "your-supabase-anon-key",
|
|
52
|
+
"MANDATEZ_OWNER_ID": "your-owner-id"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Windsurf
|
|
60
|
+
|
|
61
|
+
Add to your Windsurf MCP config:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"mcpServers": {
|
|
66
|
+
"mandatez": {
|
|
67
|
+
"command": "npx",
|
|
68
|
+
"args": ["@mandatez/mcp"],
|
|
69
|
+
"env": {
|
|
70
|
+
"SUPABASE_URL": "your-supabase-url",
|
|
71
|
+
"SUPABASE_ANON_KEY": "your-supabase-anon-key",
|
|
72
|
+
"MANDATEZ_OWNER_ID": "your-owner-id"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Environment Variables
|
|
80
|
+
|
|
81
|
+
| Variable | Required | Description |
|
|
82
|
+
|----------|----------|-------------|
|
|
83
|
+
| `SUPABASE_URL` | Yes | Your Supabase project URL |
|
|
84
|
+
| `SUPABASE_ANON_KEY` | Yes | Your Supabase anonymous key |
|
|
85
|
+
| `MANDATEZ_OWNER_ID` | No | Owner ID for agents (defaults to `"default-owner"`) |
|
|
86
|
+
|
|
87
|
+
## Usage Examples
|
|
88
|
+
|
|
89
|
+
Once configured, ask your AI assistant:
|
|
90
|
+
|
|
91
|
+
- *"Register a new agent called data-processor"*
|
|
92
|
+
- *"Track a read event on emails for agent ag_abc123"*
|
|
93
|
+
- *"What's the trust score for agent ag_abc123?"*
|
|
94
|
+
- *"Check if agent ag_abc123 is allowed to export from api/stripe"*
|
|
95
|
+
- *"Show me the last 20 events for agent ag_abc123"*
|
|
96
|
+
|
|
97
|
+
## How It Works
|
|
98
|
+
|
|
99
|
+
This MCP server wraps [`@mandatez/sdk`](https://www.npmjs.com/package/@mandatez/sdk) and exposes its capabilities over the Model Context Protocol via stdio transport. Every event is cryptographically signed with Ed25519, stored in Supabase, and contributes to the agent's trust score.
|
|
100
|
+
|
|
101
|
+
## License
|
|
102
|
+
|
|
103
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { generateAgentIdentity, createSignedEvent, SupabaseTransport, PolicyEngine, computeTrustScore, } from '@mandatez/sdk';
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Environment
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
const SUPABASE_URL = process.env.SUPABASE_URL;
|
|
10
|
+
const SUPABASE_ANON_KEY = process.env.SUPABASE_ANON_KEY;
|
|
11
|
+
const OWNER_ID = process.env.MANDATEZ_OWNER_ID ?? 'default-owner';
|
|
12
|
+
if (!SUPABASE_URL || !SUPABASE_ANON_KEY) {
|
|
13
|
+
console.error('Missing required environment variables: SUPABASE_URL, SUPABASE_ANON_KEY');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const transport = new SupabaseTransport({
|
|
17
|
+
supabaseUrl: SUPABASE_URL,
|
|
18
|
+
supabaseAnonKey: SUPABASE_ANON_KEY,
|
|
19
|
+
});
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// MCP Server
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
const server = new McpServer({
|
|
24
|
+
name: 'mandatez',
|
|
25
|
+
version: '0.1.0',
|
|
26
|
+
});
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Tool 1 — register_agent
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
server.tool('register_agent', 'Generate an Ed25519 keypair and register a new MandateZ agent. Returns agent_id and private_key.', {
|
|
31
|
+
name: z.string().describe('Human-readable agent name'),
|
|
32
|
+
metadata: z
|
|
33
|
+
.record(z.string(), z.unknown())
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('Optional metadata to attach to the agent'),
|
|
36
|
+
}, async ({ name, metadata }) => {
|
|
37
|
+
const identity = await generateAgentIdentity();
|
|
38
|
+
// Insert agent into Supabase agents table
|
|
39
|
+
const { createClient } = await import('@supabase/supabase-js');
|
|
40
|
+
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
|
|
41
|
+
const { error } = await supabase.from('agents').insert({
|
|
42
|
+
id: identity.agent_id,
|
|
43
|
+
owner_id: OWNER_ID,
|
|
44
|
+
name,
|
|
45
|
+
public_key: identity.public_key,
|
|
46
|
+
metadata: metadata ?? {},
|
|
47
|
+
});
|
|
48
|
+
if (error) {
|
|
49
|
+
return {
|
|
50
|
+
content: [
|
|
51
|
+
{
|
|
52
|
+
type: 'text',
|
|
53
|
+
text: `Failed to register agent: ${error.message}`,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
isError: true,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{
|
|
62
|
+
type: 'text',
|
|
63
|
+
text: JSON.stringify({
|
|
64
|
+
agent_id: identity.agent_id,
|
|
65
|
+
public_key: identity.public_key,
|
|
66
|
+
private_key: identity.private_key,
|
|
67
|
+
name,
|
|
68
|
+
owner_id: OWNER_ID,
|
|
69
|
+
message: 'Agent registered. Store the private_key securely — it is needed to sign events.',
|
|
70
|
+
}, null, 2),
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Tool 2 — track_event
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
server.tool('track_event', 'Log a cryptographically signed AgentEvent to the MandateZ audit trail.', {
|
|
79
|
+
agent_id: z.string().describe('Agent ID (ag_ prefix)'),
|
|
80
|
+
private_key: z.string().describe('Agent Ed25519 private key (base64)'),
|
|
81
|
+
action_type: z
|
|
82
|
+
.enum(['read', 'write', 'export', 'delete', 'call', 'payment'])
|
|
83
|
+
.describe('Type of action the agent performed'),
|
|
84
|
+
resource: z.string().describe('Resource accessed, e.g. "emails", "api/stripe"'),
|
|
85
|
+
outcome: z
|
|
86
|
+
.enum(['allowed', 'blocked', 'flagged', 'pending_approval'])
|
|
87
|
+
.optional()
|
|
88
|
+
.describe('Outcome of the action (defaults to "allowed")'),
|
|
89
|
+
policy_id: z.string().optional().describe('Policy ID that governed this action'),
|
|
90
|
+
metadata: z
|
|
91
|
+
.record(z.string(), z.unknown())
|
|
92
|
+
.optional()
|
|
93
|
+
.describe('Additional context about the event'),
|
|
94
|
+
}, async ({ agent_id, private_key, action_type, resource, outcome, policy_id, metadata }) => {
|
|
95
|
+
const eventInput = {
|
|
96
|
+
agent_id,
|
|
97
|
+
owner_id: OWNER_ID,
|
|
98
|
+
action_type,
|
|
99
|
+
resource,
|
|
100
|
+
outcome: outcome ?? 'allowed',
|
|
101
|
+
policy_id: policy_id ?? null,
|
|
102
|
+
metadata: metadata ?? {},
|
|
103
|
+
};
|
|
104
|
+
try {
|
|
105
|
+
const signed = await createSignedEvent(eventInput, private_key);
|
|
106
|
+
const emitted = await transport.emitEvent(signed);
|
|
107
|
+
return {
|
|
108
|
+
content: [
|
|
109
|
+
{
|
|
110
|
+
type: 'text',
|
|
111
|
+
text: JSON.stringify({
|
|
112
|
+
event_id: emitted.event_id,
|
|
113
|
+
agent_id: emitted.agent_id,
|
|
114
|
+
action_type: emitted.action_type,
|
|
115
|
+
resource: emitted.resource,
|
|
116
|
+
outcome: emitted.outcome,
|
|
117
|
+
timestamp: emitted.timestamp,
|
|
118
|
+
signature: emitted.signature.slice(0, 16) + '...',
|
|
119
|
+
message: 'Event signed and logged successfully.',
|
|
120
|
+
}, null, 2),
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
return {
|
|
127
|
+
content: [
|
|
128
|
+
{
|
|
129
|
+
type: 'text',
|
|
130
|
+
text: `Failed to track event: ${err instanceof Error ? err.message : String(err)}`,
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
isError: true,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// Tool 3 — get_trust_profile
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
server.tool('get_trust_profile', 'Compute and return the trust score, grade, and behavioral profile for an agent.', {
|
|
141
|
+
agent_id: z.string().describe('Agent ID (ag_ prefix)'),
|
|
142
|
+
}, async ({ agent_id }) => {
|
|
143
|
+
try {
|
|
144
|
+
const events = await transport.fetchAgentEvents(agent_id);
|
|
145
|
+
const profile = computeTrustScore(events);
|
|
146
|
+
// Persist updated trust profile
|
|
147
|
+
await transport.updateAgentTrust(agent_id, profile).catch(() => { });
|
|
148
|
+
return {
|
|
149
|
+
content: [
|
|
150
|
+
{
|
|
151
|
+
type: 'text',
|
|
152
|
+
text: JSON.stringify({
|
|
153
|
+
agent_id,
|
|
154
|
+
...profile,
|
|
155
|
+
}, null, 2),
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
return {
|
|
162
|
+
content: [
|
|
163
|
+
{
|
|
164
|
+
type: 'text',
|
|
165
|
+
text: `Failed to get trust profile: ${err instanceof Error ? err.message : String(err)}`,
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
isError: true,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
// ---------------------------------------------------------------------------
|
|
173
|
+
// Tool 4 — check_policy
|
|
174
|
+
// ---------------------------------------------------------------------------
|
|
175
|
+
server.tool('check_policy', 'Evaluate an action against policy rules and return whether it is allowed, blocked, or flagged.', {
|
|
176
|
+
action_type: z
|
|
177
|
+
.enum(['read', 'write', 'export', 'delete', 'call', 'payment'])
|
|
178
|
+
.describe('Action type to evaluate'),
|
|
179
|
+
resource: z.string().describe('Resource to check, e.g. "api/stripe"'),
|
|
180
|
+
policies: z
|
|
181
|
+
.array(z.object({
|
|
182
|
+
id: z.string(),
|
|
183
|
+
owner_id: z.string(),
|
|
184
|
+
name: z.string(),
|
|
185
|
+
rules: z.array(z.object({
|
|
186
|
+
id: z.string(),
|
|
187
|
+
action_types: z.array(z.string()),
|
|
188
|
+
resource_pattern: z.string(),
|
|
189
|
+
effect: z.enum(['allow', 'block', 'flag']),
|
|
190
|
+
})),
|
|
191
|
+
}))
|
|
192
|
+
.describe('Array of policy objects with rules to evaluate against'),
|
|
193
|
+
}, async ({ action_type, resource, policies }) => {
|
|
194
|
+
const engine = new PolicyEngine();
|
|
195
|
+
for (const policy of policies) {
|
|
196
|
+
engine.addPolicy(policy);
|
|
197
|
+
}
|
|
198
|
+
const result = engine.evaluate(action_type, resource);
|
|
199
|
+
return {
|
|
200
|
+
content: [
|
|
201
|
+
{
|
|
202
|
+
type: 'text',
|
|
203
|
+
text: JSON.stringify({
|
|
204
|
+
action_type,
|
|
205
|
+
resource,
|
|
206
|
+
outcome: result.outcome,
|
|
207
|
+
matched_rule: result.matched_rule,
|
|
208
|
+
policy_id: result.policy_id,
|
|
209
|
+
}, null, 2),
|
|
210
|
+
},
|
|
211
|
+
],
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
// ---------------------------------------------------------------------------
|
|
215
|
+
// Tool 5 — get_audit_trail
|
|
216
|
+
// ---------------------------------------------------------------------------
|
|
217
|
+
server.tool('get_audit_trail', 'Retrieve the last N events from an agent\'s audit trail.', {
|
|
218
|
+
agent_id: z.string().describe('Agent ID (ag_ prefix)'),
|
|
219
|
+
limit: z
|
|
220
|
+
.number()
|
|
221
|
+
.int()
|
|
222
|
+
.min(1)
|
|
223
|
+
.max(1000)
|
|
224
|
+
.optional()
|
|
225
|
+
.describe('Number of events to return (default 50, max 1000)'),
|
|
226
|
+
}, async ({ agent_id, limit }) => {
|
|
227
|
+
try {
|
|
228
|
+
const events = await transport.fetchAgentEvents(agent_id);
|
|
229
|
+
const n = limit ?? 50;
|
|
230
|
+
const recent = events.slice(-n);
|
|
231
|
+
return {
|
|
232
|
+
content: [
|
|
233
|
+
{
|
|
234
|
+
type: 'text',
|
|
235
|
+
text: JSON.stringify({
|
|
236
|
+
agent_id,
|
|
237
|
+
total_events: events.length,
|
|
238
|
+
returned: recent.length,
|
|
239
|
+
events: recent.map((e) => ({
|
|
240
|
+
event_id: e.event_id,
|
|
241
|
+
action_type: e.action_type,
|
|
242
|
+
resource: e.resource,
|
|
243
|
+
outcome: e.outcome,
|
|
244
|
+
timestamp: e.timestamp,
|
|
245
|
+
policy_id: e.policy_id,
|
|
246
|
+
metadata: e.metadata,
|
|
247
|
+
})),
|
|
248
|
+
}, null, 2),
|
|
249
|
+
},
|
|
250
|
+
],
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
return {
|
|
255
|
+
content: [
|
|
256
|
+
{
|
|
257
|
+
type: 'text',
|
|
258
|
+
text: `Failed to get audit trail: ${err instanceof Error ? err.message : String(err)}`,
|
|
259
|
+
},
|
|
260
|
+
],
|
|
261
|
+
isError: true,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
// ---------------------------------------------------------------------------
|
|
266
|
+
// Start
|
|
267
|
+
// ---------------------------------------------------------------------------
|
|
268
|
+
async function main() {
|
|
269
|
+
const stdioTransport = new StdioServerTransport();
|
|
270
|
+
await server.connect(stdioTransport);
|
|
271
|
+
}
|
|
272
|
+
main().catch((err) => {
|
|
273
|
+
console.error('MCP server failed to start:', err);
|
|
274
|
+
process.exit(1);
|
|
275
|
+
});
|
|
276
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mandatez/mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for MandateZ — AI agent trust infrastructure via Model Context Protocol",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"mandatez-mcp": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/mandatez/core"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"dev": "tsc --watch"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"mcp",
|
|
28
|
+
"model-context-protocol",
|
|
29
|
+
"ai-agents",
|
|
30
|
+
"mandatez",
|
|
31
|
+
"trust",
|
|
32
|
+
"compliance",
|
|
33
|
+
"ed25519"
|
|
34
|
+
],
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@mandatez/sdk": "workspace:*",
|
|
38
|
+
"@modelcontextprotocol/sdk": "^1.12.1"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": "^22.15.0"
|
|
42
|
+
}
|
|
43
|
+
}
|