@openintentai/mcp-server 0.13.4

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,123 @@
1
+ # @openintentai/mcp-server
2
+
3
+ MCP (Model Context Protocol) server that exposes the full [OpenIntent Coordination Protocol](https://openintent.wintermute.wiki) as MCP tools and resources. Any MCP-compatible client — Claude Desktop, Cursor, Windsurf, or custom agents — can orchestrate OpenIntent agents via natural language.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ npx -y @openintentai/mcp-server
9
+ ```
10
+
11
+ Or install globally:
12
+
13
+ ```bash
14
+ npm install -g @openintentai/mcp-server
15
+ openintent-mcp
16
+ ```
17
+
18
+ ## Configuration
19
+
20
+ The server reads configuration from environment variables or a JSON config file.
21
+
22
+ ### Environment Variables
23
+
24
+ | Variable | Description | Default |
25
+ |---|---|---|
26
+ | `OPENINTENT_API_URL` | OpenIntent server base URL | `http://localhost:8000` |
27
+ | `OPENINTENT_API_KEY` | API key for authentication | (required) |
28
+ | `OPENINTENT_MCP_ROLE` | Permission role: `reader`, `operator`, or `admin` | `reader` |
29
+
30
+ ### JSON Config File
31
+
32
+ Place `openintent-mcp.config.json` in the working directory:
33
+
34
+ ```json
35
+ {
36
+ "api": {
37
+ "url": "http://localhost:8000",
38
+ "key": "dev-api-key"
39
+ },
40
+ "security": {
41
+ "role": "operator",
42
+ "allowed_tools": ["create_intent", "list_intents", "get_intent"]
43
+ }
44
+ }
45
+ ```
46
+
47
+ ## Claude Desktop Integration
48
+
49
+ Add to your Claude Desktop MCP config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
50
+
51
+ ```json
52
+ {
53
+ "mcpServers": {
54
+ "openintent": {
55
+ "command": "npx",
56
+ "args": ["-y", "@openintentai/mcp-server"],
57
+ "env": {
58
+ "OPENINTENT_API_URL": "http://localhost:8000",
59
+ "OPENINTENT_API_KEY": "your-api-key",
60
+ "OPENINTENT_MCP_ROLE": "operator"
61
+ }
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ## RBAC Roles
68
+
69
+ The server enforces role-based access control with three tiers:
70
+
71
+ | Role | Tools | Description |
72
+ |---|---|---|
73
+ | `reader` | 21 | Read-only observation: list/get intents, events, agents, costs |
74
+ | `operator` | 38 | Bounded mutations: create intents, post events, manage leases |
75
+ | `admin` | 62 | Full lifecycle: governance, identity, vaults, triggers, plans |
76
+
77
+ Tools not permitted by the assigned role are hidden from the MCP tool listing entirely.
78
+
79
+ The role gate works alongside the `allowed_tools` allowlist — both must pass for a tool to be available.
80
+
81
+ ## Tool Categories
82
+
83
+ - **Intent Management** — Create, read, update, patch, complete, cancel intents
84
+ - **Event Logging** — Append events, query event history, stream via SSE
85
+ - **Agent Coordination** — Register agents, manage leases, arbitration
86
+ - **Task Decomposition** (RFC-0012) — Plans, tasks, dependencies
87
+ - **Governance** (RFC-0013) — Policies, approvals, escalation
88
+ - **Credential Vaults** (RFC-0014) — Secrets, tool grants, scoped access
89
+ - **Agent Memory** (RFC-0015) — Working, episodic, semantic memory tiers
90
+ - **Lifecycle** (RFC-0016) — Registration, heartbeats, drain
91
+ - **Triggers** (RFC-0017) — Cron, event, webhook scheduling
92
+ - **Identity** (RFC-0018) — Ed25519 keys, DIDs, challenge-response
93
+ - **Verifiable Logs** (RFC-0019) — Hash chains, Merkle proofs
94
+ - **Tracing** (RFC-0020) — Distributed trace propagation
95
+ - **Messaging** (RFC-0021) — Agent-to-agent channels
96
+
97
+ ## Resources
98
+
99
+ The server also exposes 5 MCP resources:
100
+
101
+ - `openintent://intents` — List all intents
102
+ - `openintent://intents/{id}` — Get intent details
103
+ - `openintent://intents/{id}/events` — Get intent events
104
+ - `openintent://intents/{id}/agents` — Get assigned agents
105
+ - `openintent://intents/{id}/graph` — Get intent graph
106
+
107
+ ## Python SDK Integration
108
+
109
+ The Python SDK can also consume this MCP server as a tool provider:
110
+
111
+ ```python
112
+ from openintent import Agent
113
+
114
+ agent = Agent(
115
+ name="my-agent",
116
+ model="gpt-4o",
117
+ tools=["mcp://npx/-y/@openintentai/mcp-server?role=operator"],
118
+ )
119
+ ```
120
+
121
+ ## License
122
+
123
+ MIT
@@ -0,0 +1,302 @@
1
+ import type { MCPConfig } from "./config.js";
2
+ export declare class OpenIntentAPIError extends Error {
3
+ statusCode: number;
4
+ body?: unknown | undefined;
5
+ constructor(message: string, statusCode: number, body?: unknown | undefined);
6
+ }
7
+ /**
8
+ * Thin HTTP client that calls the OpenIntent REST API.
9
+ * Uses the built-in `fetch` available in Node 18+.
10
+ */
11
+ export declare class OpenIntentClient {
12
+ private baseUrl;
13
+ private headers;
14
+ private timeoutMs;
15
+ private retries;
16
+ private retryDelay;
17
+ private auditLogging;
18
+ private config;
19
+ constructor(config: MCPConfig);
20
+ private request;
21
+ createIntent(params: {
22
+ title: string;
23
+ description?: string;
24
+ constraints?: string[];
25
+ initial_state?: Record<string, unknown>;
26
+ }): Promise<unknown>;
27
+ getIntent(intentId: string): Promise<unknown>;
28
+ listIntents(params?: {
29
+ status?: string;
30
+ limit?: number;
31
+ offset?: number;
32
+ }): Promise<unknown>;
33
+ updateState(params: {
34
+ intent_id: string;
35
+ version: number;
36
+ state_patch: Record<string, unknown>;
37
+ }): Promise<unknown>;
38
+ setStatus(params: {
39
+ intent_id: string;
40
+ version: number;
41
+ status: string;
42
+ }): Promise<unknown>;
43
+ logEvent(params: {
44
+ intent_id: string;
45
+ event_type: string;
46
+ payload?: Record<string, unknown>;
47
+ }): Promise<unknown>;
48
+ getEvents(params: {
49
+ intent_id: string;
50
+ event_type?: string;
51
+ limit?: number;
52
+ }): Promise<unknown>;
53
+ acquireLease(params: {
54
+ intent_id: string;
55
+ scope: string;
56
+ duration_seconds?: number;
57
+ }): Promise<unknown>;
58
+ releaseLease(params: {
59
+ intent_id: string;
60
+ lease_id: string;
61
+ }): Promise<unknown>;
62
+ assignAgent(params: {
63
+ intent_id: string;
64
+ agent_id: string;
65
+ role?: string;
66
+ }): Promise<unknown>;
67
+ unassignAgent(params: {
68
+ intent_id: string;
69
+ agent_id: string;
70
+ }): Promise<unknown>;
71
+ createChannel(params: {
72
+ intent_id: string;
73
+ name: string;
74
+ members?: string[];
75
+ member_policy?: string;
76
+ options?: Record<string, unknown>;
77
+ }): Promise<unknown>;
78
+ sendMessage(params: {
79
+ channel_id: string;
80
+ message_type?: string;
81
+ payload: Record<string, unknown>;
82
+ to?: string;
83
+ }): Promise<unknown>;
84
+ askOnChannel(params: {
85
+ channel_id: string;
86
+ to: string;
87
+ payload: Record<string, unknown>;
88
+ timeout?: number;
89
+ }): Promise<unknown>;
90
+ broadcastOnChannel(params: {
91
+ channel_id: string;
92
+ payload: Record<string, unknown>;
93
+ }): Promise<unknown>;
94
+ getChannelMessages(params: {
95
+ channel_id: string;
96
+ limit?: number;
97
+ }): Promise<unknown>;
98
+ createWorkflow(params: {
99
+ name: string;
100
+ yaml_spec: string;
101
+ description?: string;
102
+ }): Promise<unknown>;
103
+ triggerWorkflow(params: {
104
+ workflow_id: string;
105
+ inputs?: Record<string, unknown>;
106
+ }): Promise<unknown>;
107
+ getWorkflow(workflowId: string): Promise<unknown>;
108
+ listWorkflows(params?: {
109
+ limit?: number;
110
+ offset?: number;
111
+ }): Promise<unknown>;
112
+ createPlan(params: {
113
+ intent_id: string;
114
+ title: string;
115
+ steps: Array<{
116
+ title: string;
117
+ description?: string;
118
+ depends_on?: string[];
119
+ }>;
120
+ }): Promise<unknown>;
121
+ decomposeTask(params: {
122
+ intent_id: string;
123
+ task_description: string;
124
+ max_depth?: number;
125
+ }): Promise<unknown>;
126
+ getPlan(params: {
127
+ intent_id: string;
128
+ plan_id: string;
129
+ }): Promise<unknown>;
130
+ setCoordinator(params: {
131
+ intent_id: string;
132
+ coordinator_id: string;
133
+ governance_policy?: string;
134
+ }): Promise<unknown>;
135
+ recordDecision(params: {
136
+ intent_id: string;
137
+ decision_type: string;
138
+ rationale: string;
139
+ outcome: Record<string, unknown>;
140
+ }): Promise<unknown>;
141
+ getArbitration(params: {
142
+ intent_id: string;
143
+ }): Promise<unknown>;
144
+ escalateToHuman(params: {
145
+ intent_id: string;
146
+ reason: string;
147
+ priority?: string;
148
+ context?: Record<string, unknown>;
149
+ }): Promise<unknown>;
150
+ private mapPriority;
151
+ listEscalations(params: {
152
+ intent_id?: string;
153
+ status?: string;
154
+ limit?: number;
155
+ offset?: number;
156
+ }): Promise<unknown>;
157
+ resolveEscalation(params: {
158
+ escalation_id: string;
159
+ resolution: string;
160
+ decision: Record<string, unknown>;
161
+ }): Promise<unknown>;
162
+ requestApproval(params: {
163
+ intent_id: string;
164
+ action_description: string;
165
+ urgency?: string;
166
+ metadata?: Record<string, unknown>;
167
+ }): Promise<unknown>;
168
+ getApprovalStatus(params: {
169
+ intent_id: string;
170
+ approval_id: string;
171
+ }): Promise<unknown>;
172
+ createPortfolio(params: {
173
+ name: string;
174
+ description?: string;
175
+ }): Promise<unknown>;
176
+ addToPortfolio(params: {
177
+ portfolio_id: string;
178
+ intent_id: string;
179
+ }): Promise<unknown>;
180
+ getPortfolio(portfolioId: string): Promise<unknown>;
181
+ setPermissions(params: {
182
+ intent_id: string;
183
+ permissions: Record<string, unknown>;
184
+ version: number;
185
+ }): Promise<unknown>;
186
+ getPermissions(params: {
187
+ intent_id: string;
188
+ }): Promise<unknown>;
189
+ grantAccess(params: {
190
+ intent_id: string;
191
+ agent_id: string;
192
+ level: string;
193
+ scopes?: string[];
194
+ }): Promise<unknown>;
195
+ storeCredential(params: {
196
+ vault_id: string;
197
+ credential_name: string;
198
+ credential_type: string;
199
+ metadata?: Record<string, unknown>;
200
+ }): Promise<unknown>;
201
+ getCredential(params: {
202
+ vault_id: string;
203
+ credential_name: string;
204
+ }): Promise<unknown>;
205
+ grantTool(params: {
206
+ intent_id: string;
207
+ agent_id: string;
208
+ tool_name: string;
209
+ constraints?: Record<string, unknown>;
210
+ }): Promise<unknown>;
211
+ memorySet(params: {
212
+ agent_id: string;
213
+ namespace: string;
214
+ key: string;
215
+ value: unknown;
216
+ ttl_seconds?: number;
217
+ }): Promise<unknown>;
218
+ memoryGet(params: {
219
+ agent_id: string;
220
+ namespace: string;
221
+ key: string;
222
+ }): Promise<unknown>;
223
+ memoryList(params: {
224
+ agent_id: string;
225
+ namespace?: string;
226
+ }): Promise<unknown>;
227
+ heartbeat(params: {
228
+ agent_id: string;
229
+ status?: string;
230
+ metadata?: Record<string, unknown>;
231
+ }): Promise<unknown>;
232
+ getHealth(params: {
233
+ agent_id: string;
234
+ }): Promise<unknown>;
235
+ setAgentStatus(params: {
236
+ agent_id: string;
237
+ status: string;
238
+ reason?: string;
239
+ }): Promise<unknown>;
240
+ createTrigger(params: {
241
+ intent_id: string;
242
+ trigger_type: string;
243
+ condition: Record<string, unknown>;
244
+ action: Record<string, unknown>;
245
+ name?: string;
246
+ }): Promise<unknown>;
247
+ listTriggers(params: {
248
+ intent_id: string;
249
+ }): Promise<unknown>;
250
+ deleteTrigger(params: {
251
+ intent_id: string;
252
+ trigger_id: string;
253
+ }): Promise<unknown>;
254
+ registerIdentity(params: {
255
+ agent_id: string;
256
+ public_key: string;
257
+ key_type?: string;
258
+ }): Promise<unknown>;
259
+ verifyChallenge(params: {
260
+ agent_id: string;
261
+ challenge: string;
262
+ signature: string;
263
+ }): Promise<unknown>;
264
+ rotateKey(params: {
265
+ agent_id: string;
266
+ new_public_key: string;
267
+ rotation_proof: string;
268
+ }): Promise<unknown>;
269
+ getHashChain(params: {
270
+ intent_id: string;
271
+ from_sequence?: number;
272
+ to_sequence?: number;
273
+ }): Promise<unknown>;
274
+ verifyInclusion(params: {
275
+ intent_id: string;
276
+ event_id: string;
277
+ }): Promise<unknown>;
278
+ getCheckpoint(params: {
279
+ intent_id: string;
280
+ checkpoint_id?: string;
281
+ }): Promise<unknown>;
282
+ startTrace(params: {
283
+ intent_id: string;
284
+ trace_name: string;
285
+ parent_trace_id?: string;
286
+ metadata?: Record<string, unknown>;
287
+ }): Promise<unknown>;
288
+ getTrace(params: {
289
+ intent_id: string;
290
+ trace_id: string;
291
+ }): Promise<unknown>;
292
+ linkSpans(params: {
293
+ trace_id: string;
294
+ spans: Array<{
295
+ span_id: string;
296
+ parent_span_id?: string;
297
+ operation: string;
298
+ status?: string;
299
+ }>;
300
+ }): Promise<unknown>;
301
+ }
302
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}