@opvs-ai/mcp 0.1.0 → 0.2.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/dist/index.d.ts +3 -0
- package/dist/index.js +58 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
* Transport: stdio (JSON-RPC over stdin/stdout)
|
|
9
9
|
* Auth: reads token from ~/.opvs/config.json (shared with @opvs-ai/cli)
|
|
10
10
|
*
|
|
11
|
+
* Multi-workspace: every tool accepts an optional `workspace` parameter.
|
|
12
|
+
* If omitted, uses OPVS_WORKSPACE env var or the current workspace from config.
|
|
13
|
+
*
|
|
11
14
|
* IMPORTANT: Never use console.log() — it corrupts the stdio transport.
|
|
12
15
|
* Use console.error() for debug logging.
|
|
13
16
|
*/
|
package/dist/index.js
CHANGED
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
* Transport: stdio (JSON-RPC over stdin/stdout)
|
|
9
9
|
* Auth: reads token from ~/.opvs/config.json (shared with @opvs-ai/cli)
|
|
10
10
|
*
|
|
11
|
+
* Multi-workspace: every tool accepts an optional `workspace` parameter.
|
|
12
|
+
* If omitted, uses OPVS_WORKSPACE env var or the current workspace from config.
|
|
13
|
+
*
|
|
11
14
|
* IMPORTANT: Never use console.log() — it corrupts the stdio transport.
|
|
12
15
|
* Use console.error() for debug logging.
|
|
13
16
|
*/
|
|
14
17
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
15
18
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
16
19
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
17
|
-
import { createClient, buildUrl, getResponseText, } from "@opvs-ai/core";
|
|
20
|
+
import { createClient, buildUrl, getResponseText, listWorkspaces, } from "@opvs-ai/core";
|
|
18
21
|
// ── Helpers ──────────────────────────────────────────────────────
|
|
19
22
|
function ok(text) {
|
|
20
23
|
return { content: [{ type: "text", text }] };
|
|
@@ -25,8 +28,10 @@ function err(msg) {
|
|
|
25
28
|
isError: true,
|
|
26
29
|
};
|
|
27
30
|
}
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
function resolveWorkspace(args) {
|
|
32
|
+
return args.workspace || process.env.OPVS_WORKSPACE || undefined;
|
|
33
|
+
}
|
|
34
|
+
async function callApi(method, path, wsSlug, body) {
|
|
30
35
|
const client = createClient(wsSlug);
|
|
31
36
|
let res;
|
|
32
37
|
switch (method) {
|
|
@@ -51,14 +56,29 @@ async function callApi(method, path, body) {
|
|
|
51
56
|
function getFormat() {
|
|
52
57
|
return process.env.OPVS_FORMAT || "yaml";
|
|
53
58
|
}
|
|
59
|
+
// ── Shared workspace property (added to every tool) ─────────────
|
|
60
|
+
const WORKSPACE_PROP = {
|
|
61
|
+
workspace: {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "Workspace slug to use. If omitted, uses the current workspace. Use list_workspaces to see available workspaces.",
|
|
64
|
+
},
|
|
65
|
+
};
|
|
54
66
|
// ── Tool Definitions ─────────────────────────────────────────────
|
|
55
67
|
const TOOLS = [
|
|
68
|
+
{
|
|
69
|
+
name: "list_workspaces",
|
|
70
|
+
description: "List all configured workspaces with their brand names and API URLs. Use this to discover available workspaces before calling other tools.",
|
|
71
|
+
inputSchema: {
|
|
72
|
+
type: "object",
|
|
73
|
+
properties: {},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
56
76
|
{
|
|
57
77
|
name: "list_boards",
|
|
58
78
|
description: "List all AgentBoard boards in the workspace",
|
|
59
79
|
inputSchema: {
|
|
60
80
|
type: "object",
|
|
61
|
-
properties: {},
|
|
81
|
+
properties: { ...WORKSPACE_PROP },
|
|
62
82
|
},
|
|
63
83
|
},
|
|
64
84
|
{
|
|
@@ -68,6 +88,7 @@ const TOOLS = [
|
|
|
68
88
|
type: "object",
|
|
69
89
|
properties: {
|
|
70
90
|
board_id: { type: "string", description: "Board UUID" },
|
|
91
|
+
...WORKSPACE_PROP,
|
|
71
92
|
},
|
|
72
93
|
required: ["board_id"],
|
|
73
94
|
},
|
|
@@ -95,6 +116,7 @@ const TOOLS = [
|
|
|
95
116
|
description: "Filter: low, medium, high, critical",
|
|
96
117
|
},
|
|
97
118
|
limit: { type: "number", description: "Max results (default 25)" },
|
|
119
|
+
...WORKSPACE_PROP,
|
|
98
120
|
},
|
|
99
121
|
},
|
|
100
122
|
},
|
|
@@ -105,6 +127,7 @@ const TOOLS = [
|
|
|
105
127
|
type: "object",
|
|
106
128
|
properties: {
|
|
107
129
|
task_id: { type: "string", description: "Task UUID" },
|
|
130
|
+
...WORKSPACE_PROP,
|
|
108
131
|
},
|
|
109
132
|
required: ["task_id"],
|
|
110
133
|
},
|
|
@@ -125,6 +148,7 @@ const TOOLS = [
|
|
|
125
148
|
type: "string",
|
|
126
149
|
description: "low, medium, high, critical (default: medium)",
|
|
127
150
|
},
|
|
151
|
+
...WORKSPACE_PROP,
|
|
128
152
|
},
|
|
129
153
|
required: ["board_id", "title"],
|
|
130
154
|
},
|
|
@@ -146,6 +170,7 @@ const TOOLS = [
|
|
|
146
170
|
},
|
|
147
171
|
title: { type: "string", description: "New title" },
|
|
148
172
|
result: { type: "string", description: "Agent result summary text" },
|
|
173
|
+
...WORKSPACE_PROP,
|
|
149
174
|
},
|
|
150
175
|
required: ["task_id"],
|
|
151
176
|
},
|
|
@@ -161,6 +186,7 @@ const TOOLS = [
|
|
|
161
186
|
type: "string",
|
|
162
187
|
description: "Comment text (markdown supported)",
|
|
163
188
|
},
|
|
189
|
+
...WORKSPACE_PROP,
|
|
164
190
|
},
|
|
165
191
|
required: ["task_id", "content"],
|
|
166
192
|
},
|
|
@@ -173,6 +199,7 @@ const TOOLS = [
|
|
|
173
199
|
properties: {
|
|
174
200
|
task_id: { type: "string", description: "Task UUID" },
|
|
175
201
|
limit: { type: "number", description: "Max results (default 25)" },
|
|
202
|
+
...WORKSPACE_PROP,
|
|
176
203
|
},
|
|
177
204
|
required: ["task_id"],
|
|
178
205
|
},
|
|
@@ -187,6 +214,7 @@ const TOOLS = [
|
|
|
187
214
|
type: "string",
|
|
188
215
|
description: "Optional: get context for a specific board",
|
|
189
216
|
},
|
|
217
|
+
...WORKSPACE_PROP,
|
|
190
218
|
},
|
|
191
219
|
},
|
|
192
220
|
},
|
|
@@ -195,21 +223,33 @@ const TOOLS = [
|
|
|
195
223
|
description: "Check authentication status — shows current user, brand, scopes, and token info",
|
|
196
224
|
inputSchema: {
|
|
197
225
|
type: "object",
|
|
198
|
-
properties: {},
|
|
226
|
+
properties: { ...WORKSPACE_PROP },
|
|
199
227
|
},
|
|
200
228
|
},
|
|
201
229
|
];
|
|
202
230
|
// ── Tool Handlers ────────────────────────────────────────────────
|
|
203
231
|
async function handleTool(name, args) {
|
|
204
232
|
const fmt = getFormat();
|
|
233
|
+
const ws = resolveWorkspace(args);
|
|
205
234
|
switch (name) {
|
|
235
|
+
case "list_workspaces": {
|
|
236
|
+
const workspaces = listWorkspaces();
|
|
237
|
+
if (workspaces.length === 0) {
|
|
238
|
+
return ok("No workspaces configured. Run `opvs auth request -w <slug> -e <email>` to add one.");
|
|
239
|
+
}
|
|
240
|
+
const lines = workspaces.map((w) => {
|
|
241
|
+
const marker = w.isCurrent ? " (current)" : "";
|
|
242
|
+
return `- ${w.slug}: ${w.brand_name || "(no brand)"}${marker}\n api_url: ${w.api_url}`;
|
|
243
|
+
});
|
|
244
|
+
return ok(`workspaces:\n${lines.join("\n")}\n`);
|
|
245
|
+
}
|
|
206
246
|
case "list_boards": {
|
|
207
247
|
const url = buildUrl("/api/v1/board/boards", undefined, fmt);
|
|
208
|
-
return ok(await callApi("GET", url));
|
|
248
|
+
return ok(await callApi("GET", url, ws));
|
|
209
249
|
}
|
|
210
250
|
case "get_board": {
|
|
211
251
|
const url = buildUrl(`/api/v1/board/boards/${args.board_id}`, undefined, fmt);
|
|
212
|
-
return ok(await callApi("GET", url));
|
|
252
|
+
return ok(await callApi("GET", url, ws));
|
|
213
253
|
}
|
|
214
254
|
case "list_tasks": {
|
|
215
255
|
const params = {};
|
|
@@ -221,17 +261,17 @@ async function handleTool(name, args) {
|
|
|
221
261
|
params.limit = String(args.limit);
|
|
222
262
|
if (args.self) {
|
|
223
263
|
const url = buildUrl("/api/v1/board/agent-api/my-tasks", params, fmt);
|
|
224
|
-
return ok(await callApi("GET", url));
|
|
264
|
+
return ok(await callApi("GET", url, ws));
|
|
225
265
|
}
|
|
226
266
|
if (!args.board_id) {
|
|
227
267
|
return err("Provide board_id or set self=true");
|
|
228
268
|
}
|
|
229
269
|
const url = buildUrl(`/api/v1/board/boards/${args.board_id}/tasks`, params, fmt);
|
|
230
|
-
return ok(await callApi("GET", url));
|
|
270
|
+
return ok(await callApi("GET", url, ws));
|
|
231
271
|
}
|
|
232
272
|
case "get_task": {
|
|
233
273
|
const url = buildUrl(`/api/v1/board/tasks/${args.task_id}`, undefined, fmt);
|
|
234
|
-
return ok(await callApi("GET", url));
|
|
274
|
+
return ok(await callApi("GET", url, ws));
|
|
235
275
|
}
|
|
236
276
|
case "create_task": {
|
|
237
277
|
const body = { title: args.title };
|
|
@@ -239,7 +279,7 @@ async function handleTool(name, args) {
|
|
|
239
279
|
body.description = args.description;
|
|
240
280
|
if (args.priority)
|
|
241
281
|
body.priority = args.priority;
|
|
242
|
-
const text = await callApi("POST", `/api/v1/board/boards/${args.board_id}/tasks`, body);
|
|
282
|
+
const text = await callApi("POST", `/api/v1/board/boards/${args.board_id}/tasks`, ws, body);
|
|
243
283
|
return ok(text);
|
|
244
284
|
}
|
|
245
285
|
case "update_task": {
|
|
@@ -255,11 +295,11 @@ async function handleTool(name, args) {
|
|
|
255
295
|
if (Object.keys(body).length === 0) {
|
|
256
296
|
return err("Nothing to update. Provide status, priority, title, or result.");
|
|
257
297
|
}
|
|
258
|
-
const text = await callApi("PATCH", `/api/v1/board/tasks/${args.task_id}`, body);
|
|
298
|
+
const text = await callApi("PATCH", `/api/v1/board/tasks/${args.task_id}`, ws, body);
|
|
259
299
|
return ok(text);
|
|
260
300
|
}
|
|
261
301
|
case "add_comment": {
|
|
262
|
-
const text = await callApi("POST", `/api/v1/board/tasks/${args.task_id}/comments`, { content: args.content });
|
|
302
|
+
const text = await callApi("POST", `/api/v1/board/tasks/${args.task_id}/comments`, ws, { content: args.content });
|
|
263
303
|
return ok(text);
|
|
264
304
|
}
|
|
265
305
|
case "list_comments": {
|
|
@@ -267,18 +307,18 @@ async function handleTool(name, args) {
|
|
|
267
307
|
if (args.limit)
|
|
268
308
|
params.limit = String(args.limit);
|
|
269
309
|
const url = buildUrl(`/api/v1/board/tasks/${args.task_id}/comments`, params, fmt);
|
|
270
|
-
return ok(await callApi("GET", url));
|
|
310
|
+
return ok(await callApi("GET", url, ws));
|
|
271
311
|
}
|
|
272
312
|
case "get_session": {
|
|
273
313
|
if (args.board_id) {
|
|
274
314
|
const url = buildUrl(`/api/v1/board/boards/${args.board_id}`, undefined, fmt);
|
|
275
|
-
return ok(await callApi("GET", url));
|
|
315
|
+
return ok(await callApi("GET", url, ws));
|
|
276
316
|
}
|
|
277
317
|
const url = buildUrl("/api/v1/board/agent-api/my-tasks", undefined, fmt);
|
|
278
|
-
return ok(await callApi("GET", url));
|
|
318
|
+
return ok(await callApi("GET", url, ws));
|
|
279
319
|
}
|
|
280
320
|
case "get_auth_status": {
|
|
281
|
-
const text = await callApi("GET", "/api/v1/auth/me");
|
|
321
|
+
const text = await callApi("GET", "/api/v1/auth/me", ws);
|
|
282
322
|
return ok(text);
|
|
283
323
|
}
|
|
284
324
|
default:
|
|
@@ -286,7 +326,7 @@ async function handleTool(name, args) {
|
|
|
286
326
|
}
|
|
287
327
|
}
|
|
288
328
|
// ── Server Setup ─────────────────────────────────────────────────
|
|
289
|
-
const server = new Server({ name: "opvs", version: "0.
|
|
329
|
+
const server = new Server({ name: "opvs", version: "0.2.0" }, { capabilities: { tools: {} } });
|
|
290
330
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
291
331
|
tools: TOOLS,
|
|
292
332
|
}));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|