@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 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
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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
+ }