@opvs-ai/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/dist/index.d.ts +14 -0
- package/dist/index.js +305 -0
- package/dist/index.js.map +1 -0
- package/package.json +40 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @opvs-ai/mcp — MCP Server for AgentBoard + AgentDocs
|
|
4
|
+
*
|
|
5
|
+
* Gives Claude Code, Cursor, and Claude Desktop native tool access
|
|
6
|
+
* to OPVS AgentBoard task management and AgentDocs documentation.
|
|
7
|
+
*
|
|
8
|
+
* Transport: stdio (JSON-RPC over stdin/stdout)
|
|
9
|
+
* Auth: reads token from ~/.opvs/config.json (shared with @opvs-ai/cli)
|
|
10
|
+
*
|
|
11
|
+
* IMPORTANT: Never use console.log() — it corrupts the stdio transport.
|
|
12
|
+
* Use console.error() for debug logging.
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @opvs-ai/mcp — MCP Server for AgentBoard + AgentDocs
|
|
4
|
+
*
|
|
5
|
+
* Gives Claude Code, Cursor, and Claude Desktop native tool access
|
|
6
|
+
* to OPVS AgentBoard task management and AgentDocs documentation.
|
|
7
|
+
*
|
|
8
|
+
* Transport: stdio (JSON-RPC over stdin/stdout)
|
|
9
|
+
* Auth: reads token from ~/.opvs/config.json (shared with @opvs-ai/cli)
|
|
10
|
+
*
|
|
11
|
+
* IMPORTANT: Never use console.log() — it corrupts the stdio transport.
|
|
12
|
+
* Use console.error() for debug logging.
|
|
13
|
+
*/
|
|
14
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
15
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
16
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
17
|
+
import { createClient, buildUrl, getResponseText, } from "@opvs-ai/core";
|
|
18
|
+
// ── Helpers ──────────────────────────────────────────────────────
|
|
19
|
+
function ok(text) {
|
|
20
|
+
return { content: [{ type: "text", text }] };
|
|
21
|
+
}
|
|
22
|
+
function err(msg) {
|
|
23
|
+
return {
|
|
24
|
+
content: [{ type: "text", text: `Error: ${msg}` }],
|
|
25
|
+
isError: true,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async function callApi(method, path, body) {
|
|
29
|
+
const wsSlug = process.env.OPVS_WORKSPACE || undefined;
|
|
30
|
+
const client = createClient(wsSlug);
|
|
31
|
+
let res;
|
|
32
|
+
switch (method) {
|
|
33
|
+
case "GET":
|
|
34
|
+
res = await client.get(path);
|
|
35
|
+
break;
|
|
36
|
+
case "POST":
|
|
37
|
+
res = await client.post(path, body);
|
|
38
|
+
break;
|
|
39
|
+
case "PATCH":
|
|
40
|
+
res = await client.patch(path, body);
|
|
41
|
+
break;
|
|
42
|
+
case "PUT":
|
|
43
|
+
res = await client.put(path, body);
|
|
44
|
+
break;
|
|
45
|
+
case "DELETE":
|
|
46
|
+
res = await client.delete(path);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
return getResponseText(res);
|
|
50
|
+
}
|
|
51
|
+
function getFormat() {
|
|
52
|
+
return process.env.OPVS_FORMAT || "yaml";
|
|
53
|
+
}
|
|
54
|
+
// ── Tool Definitions ─────────────────────────────────────────────
|
|
55
|
+
const TOOLS = [
|
|
56
|
+
{
|
|
57
|
+
name: "list_boards",
|
|
58
|
+
description: "List all AgentBoard boards in the workspace",
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "get_board",
|
|
66
|
+
description: "Get details of a specific board including columns and config",
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: "object",
|
|
69
|
+
properties: {
|
|
70
|
+
board_id: { type: "string", description: "Board UUID" },
|
|
71
|
+
},
|
|
72
|
+
required: ["board_id"],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "list_tasks",
|
|
77
|
+
description: "List tasks. Set self=true to get your assigned tasks across all boards, or provide a board_id.",
|
|
78
|
+
inputSchema: {
|
|
79
|
+
type: "object",
|
|
80
|
+
properties: {
|
|
81
|
+
board_id: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "Board UUID (required unless self=true)",
|
|
84
|
+
},
|
|
85
|
+
self: {
|
|
86
|
+
type: "boolean",
|
|
87
|
+
description: "If true, list only tasks assigned to the current agent across all boards",
|
|
88
|
+
},
|
|
89
|
+
status: {
|
|
90
|
+
type: "string",
|
|
91
|
+
description: "Filter: pending, assigned, in_progress, review, done, failed",
|
|
92
|
+
},
|
|
93
|
+
priority: {
|
|
94
|
+
type: "string",
|
|
95
|
+
description: "Filter: low, medium, high, critical",
|
|
96
|
+
},
|
|
97
|
+
limit: { type: "number", description: "Max results (default 25)" },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "get_task",
|
|
103
|
+
description: "Get full details of a single task including description, comments, and metadata",
|
|
104
|
+
inputSchema: {
|
|
105
|
+
type: "object",
|
|
106
|
+
properties: {
|
|
107
|
+
task_id: { type: "string", description: "Task UUID" },
|
|
108
|
+
},
|
|
109
|
+
required: ["task_id"],
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: "create_task",
|
|
114
|
+
description: "Create a new task on a board",
|
|
115
|
+
inputSchema: {
|
|
116
|
+
type: "object",
|
|
117
|
+
properties: {
|
|
118
|
+
board_id: { type: "string", description: "Board UUID" },
|
|
119
|
+
title: { type: "string", description: "Task title" },
|
|
120
|
+
description: {
|
|
121
|
+
type: "string",
|
|
122
|
+
description: "Task description (markdown)",
|
|
123
|
+
},
|
|
124
|
+
priority: {
|
|
125
|
+
type: "string",
|
|
126
|
+
description: "low, medium, high, critical (default: medium)",
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
required: ["board_id", "title"],
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: "update_task",
|
|
134
|
+
description: "Update a task's status, priority, title, or result summary",
|
|
135
|
+
inputSchema: {
|
|
136
|
+
type: "object",
|
|
137
|
+
properties: {
|
|
138
|
+
task_id: { type: "string", description: "Task UUID" },
|
|
139
|
+
status: {
|
|
140
|
+
type: "string",
|
|
141
|
+
description: "New status: pending, assigned, in_progress, review, done, failed",
|
|
142
|
+
},
|
|
143
|
+
priority: {
|
|
144
|
+
type: "string",
|
|
145
|
+
description: "New priority: low, medium, high, critical",
|
|
146
|
+
},
|
|
147
|
+
title: { type: "string", description: "New title" },
|
|
148
|
+
result: { type: "string", description: "Agent result summary text" },
|
|
149
|
+
},
|
|
150
|
+
required: ["task_id"],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: "add_comment",
|
|
155
|
+
description: "Add a comment to a task (progress updates, notes, deliverables)",
|
|
156
|
+
inputSchema: {
|
|
157
|
+
type: "object",
|
|
158
|
+
properties: {
|
|
159
|
+
task_id: { type: "string", description: "Task UUID" },
|
|
160
|
+
content: {
|
|
161
|
+
type: "string",
|
|
162
|
+
description: "Comment text (markdown supported)",
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
required: ["task_id", "content"],
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: "list_comments",
|
|
170
|
+
description: "List comments on a task",
|
|
171
|
+
inputSchema: {
|
|
172
|
+
type: "object",
|
|
173
|
+
properties: {
|
|
174
|
+
task_id: { type: "string", description: "Task UUID" },
|
|
175
|
+
limit: { type: "number", description: "Max results (default 25)" },
|
|
176
|
+
},
|
|
177
|
+
required: ["task_id"],
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: "get_session",
|
|
182
|
+
description: "Get the current agent's session context: assigned tasks across all boards, or details for a specific board",
|
|
183
|
+
inputSchema: {
|
|
184
|
+
type: "object",
|
|
185
|
+
properties: {
|
|
186
|
+
board_id: {
|
|
187
|
+
type: "string",
|
|
188
|
+
description: "Optional: get context for a specific board",
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: "get_auth_status",
|
|
195
|
+
description: "Check authentication status — shows current user, brand, scopes, and token info",
|
|
196
|
+
inputSchema: {
|
|
197
|
+
type: "object",
|
|
198
|
+
properties: {},
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
];
|
|
202
|
+
// ── Tool Handlers ────────────────────────────────────────────────
|
|
203
|
+
async function handleTool(name, args) {
|
|
204
|
+
const fmt = getFormat();
|
|
205
|
+
switch (name) {
|
|
206
|
+
case "list_boards": {
|
|
207
|
+
const url = buildUrl("/api/v1/board/boards", undefined, fmt);
|
|
208
|
+
return ok(await callApi("GET", url));
|
|
209
|
+
}
|
|
210
|
+
case "get_board": {
|
|
211
|
+
const url = buildUrl(`/api/v1/board/boards/${args.board_id}`, undefined, fmt);
|
|
212
|
+
return ok(await callApi("GET", url));
|
|
213
|
+
}
|
|
214
|
+
case "list_tasks": {
|
|
215
|
+
const params = {};
|
|
216
|
+
if (args.status)
|
|
217
|
+
params.status = String(args.status);
|
|
218
|
+
if (args.priority)
|
|
219
|
+
params.priority = String(args.priority);
|
|
220
|
+
if (args.limit)
|
|
221
|
+
params.limit = String(args.limit);
|
|
222
|
+
if (args.self) {
|
|
223
|
+
const url = buildUrl("/api/v1/board/agent-api/my-tasks", params, fmt);
|
|
224
|
+
return ok(await callApi("GET", url));
|
|
225
|
+
}
|
|
226
|
+
if (!args.board_id) {
|
|
227
|
+
return err("Provide board_id or set self=true");
|
|
228
|
+
}
|
|
229
|
+
const url = buildUrl(`/api/v1/board/boards/${args.board_id}/tasks`, params, fmt);
|
|
230
|
+
return ok(await callApi("GET", url));
|
|
231
|
+
}
|
|
232
|
+
case "get_task": {
|
|
233
|
+
const url = buildUrl(`/api/v1/board/tasks/${args.task_id}`, undefined, fmt);
|
|
234
|
+
return ok(await callApi("GET", url));
|
|
235
|
+
}
|
|
236
|
+
case "create_task": {
|
|
237
|
+
const body = { title: args.title };
|
|
238
|
+
if (args.description)
|
|
239
|
+
body.description = args.description;
|
|
240
|
+
if (args.priority)
|
|
241
|
+
body.priority = args.priority;
|
|
242
|
+
const text = await callApi("POST", `/api/v1/board/boards/${args.board_id}/tasks`, body);
|
|
243
|
+
return ok(text);
|
|
244
|
+
}
|
|
245
|
+
case "update_task": {
|
|
246
|
+
const body = {};
|
|
247
|
+
if (args.status)
|
|
248
|
+
body.status = args.status;
|
|
249
|
+
if (args.priority)
|
|
250
|
+
body.priority = args.priority;
|
|
251
|
+
if (args.title)
|
|
252
|
+
body.title = args.title;
|
|
253
|
+
if (args.result)
|
|
254
|
+
body.agent_result_summary = args.result;
|
|
255
|
+
if (Object.keys(body).length === 0) {
|
|
256
|
+
return err("Nothing to update. Provide status, priority, title, or result.");
|
|
257
|
+
}
|
|
258
|
+
const text = await callApi("PATCH", `/api/v1/board/tasks/${args.task_id}`, body);
|
|
259
|
+
return ok(text);
|
|
260
|
+
}
|
|
261
|
+
case "add_comment": {
|
|
262
|
+
const text = await callApi("POST", `/api/v1/board/tasks/${args.task_id}/comments`, { content: args.content });
|
|
263
|
+
return ok(text);
|
|
264
|
+
}
|
|
265
|
+
case "list_comments": {
|
|
266
|
+
const params = {};
|
|
267
|
+
if (args.limit)
|
|
268
|
+
params.limit = String(args.limit);
|
|
269
|
+
const url = buildUrl(`/api/v1/board/tasks/${args.task_id}/comments`, params, fmt);
|
|
270
|
+
return ok(await callApi("GET", url));
|
|
271
|
+
}
|
|
272
|
+
case "get_session": {
|
|
273
|
+
if (args.board_id) {
|
|
274
|
+
const url = buildUrl(`/api/v1/board/boards/${args.board_id}`, undefined, fmt);
|
|
275
|
+
return ok(await callApi("GET", url));
|
|
276
|
+
}
|
|
277
|
+
const url = buildUrl("/api/v1/board/agent-api/my-tasks", undefined, fmt);
|
|
278
|
+
return ok(await callApi("GET", url));
|
|
279
|
+
}
|
|
280
|
+
case "get_auth_status": {
|
|
281
|
+
const text = await callApi("GET", "/api/v1/auth/me");
|
|
282
|
+
return ok(text);
|
|
283
|
+
}
|
|
284
|
+
default:
|
|
285
|
+
return err(`Unknown tool: ${name}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// ── Server Setup ─────────────────────────────────────────────────
|
|
289
|
+
const server = new Server({ name: "opvs", version: "0.1.0" }, { capabilities: { tools: {} } });
|
|
290
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
291
|
+
tools: TOOLS,
|
|
292
|
+
}));
|
|
293
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
294
|
+
const { name, arguments: args } = request.params;
|
|
295
|
+
try {
|
|
296
|
+
return await handleTool(name, (args ?? {}));
|
|
297
|
+
}
|
|
298
|
+
catch (e) {
|
|
299
|
+
const error = e;
|
|
300
|
+
return err(error.detail || error.message || "Unknown error");
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
const transport = new StdioServerTransport();
|
|
304
|
+
await server.connect(transport);
|
|
305
|
+
//# 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,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@opvs-ai/mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "OPVS MCP Server — AgentBoard + AgentDocs tools for Claude Code, Cursor, and Claude Desktop",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"opvs-mcp": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "tsx src/index.ts",
|
|
12
|
+
"start": "node dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
16
|
+
"@opvs-ai/core": "^0.2.1",
|
|
17
|
+
"zod": "^3.23.0"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@types/node": "^20.14.0",
|
|
21
|
+
"tsx": "^4.15.0",
|
|
22
|
+
"typescript": "^5.5.0"
|
|
23
|
+
},
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=18.0.0"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"keywords": [
|
|
32
|
+
"opvs",
|
|
33
|
+
"mcp",
|
|
34
|
+
"model-context-protocol",
|
|
35
|
+
"agentboard",
|
|
36
|
+
"agentdocs",
|
|
37
|
+
"ai-agent"
|
|
38
|
+
],
|
|
39
|
+
"license": "UNLICENSED"
|
|
40
|
+
}
|