@opvs-ai/mcp 2.10.0 → 2.11.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 +33 -1
- package/dist/.build-stamp.json +4 -4
- package/dist/code.d.ts +466 -0
- package/dist/code.js +260 -0
- package/dist/code.js.map +1 -0
- package/dist/http.d.ts +4 -0
- package/dist/http.js +10 -0
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.js +33 -6
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +204 -1
- package/dist/memory.js +111 -12
- package/dist/memory.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# @opvs-ai/mcp
|
|
2
2
|
|
|
3
|
-
OPVS MCP server for the **on-demand model** —
|
|
3
|
+
OPVS MCP server for the **on-demand model** — native marketplace, board, fleet,
|
|
4
|
+
typed-memory, and code-index tools for any MCP host (Claude Desktop, Cursor,
|
|
5
|
+
Antigravity, Windsurf, Claude Code). Marketplace skills remain reachable through
|
|
6
|
+
`tool_call` indirection, keeping the package under the tool cap enforced by MCP clients.
|
|
4
7
|
|
|
5
8
|
| Tool | Wraps | Purpose |
|
|
6
9
|
|------|-------|---------|
|
|
@@ -15,6 +18,35 @@ OPVS MCP server for the **on-demand model** — 16 tools that give any MCP host
|
|
|
15
18
|
| `whoami` | `/auth/me` | Session probe — brand, agent, workspace |
|
|
16
19
|
| `board_as_markdown` | `/board/boards/{id}/export?format=md` | A whole AgentBoard as a Markdown plan in one call (`detail` summary/standard/full, `columns` filter). A board over the server's 1 MiB export ceiling is **refused, not truncated** — the refusal carries `actual_bytes`/`limit_bytes`/`retry_with` as fields. It does **not** silently retry at a lower detail: the tool promises these exact bytes, so substituting a different document is the caller's decision |
|
|
17
20
|
|
|
21
|
+
### Code index — read-only
|
|
22
|
+
|
|
23
|
+
Every code tool requires an AgentBoard `project_id`. The PAT pins the brand;
|
|
24
|
+
there is no `brand_id` input. If the index is unavailable, the tools explicitly
|
|
25
|
+
tell the caller to continue without it and do not retry.
|
|
26
|
+
|
|
27
|
+
| Tool | Route | Use |
|
|
28
|
+
|------|-------|-----|
|
|
29
|
+
| `code_context` | `GET /code/{project_id}/context` | Pre-write symbol and concept search |
|
|
30
|
+
| `code_summary` | `GET /code/{project_id}/summary` | Languages, entry points, tests, and counts |
|
|
31
|
+
| `code_tree` | `GET /code/{project_id}/tree` | Directory structure and freshness |
|
|
32
|
+
| `code_files` | `GET /code/{project_id}/files` | Files beneath a directory, including path paging |
|
|
33
|
+
| `code_symbols` | `GET /code/{project_id}/symbols` | Declarations in one file |
|
|
34
|
+
| `code_resolve` | `POST /code/{project_id}/nodes/resolve` | Stable anchors to current nodes |
|
|
35
|
+
| `code_changes` | `GET /code/{project_id}/nodes/changes` | Stable-node history in ascending or descending order |
|
|
36
|
+
| `code_graph` | `GET /code/{project_id}/graph` | One node's IMPORTS neighbourhood (Python and TS/JS only) |
|
|
37
|
+
| `code_graph_folders` | `GET /code/{project_id}/graph/folders` | Folder IMPORTS, hubs, and mutual pairs (Python and TS/JS only) |
|
|
38
|
+
|
|
39
|
+
### Typed memory — read-only
|
|
40
|
+
|
|
41
|
+
| Tool | Route | Use |
|
|
42
|
+
|------|-------|-----|
|
|
43
|
+
| `memory_search` | `GET /memory/entries/search` | Search typed memories |
|
|
44
|
+
| `memory_context` | `GET /memory/entries/search` | Bounded repository-aware context |
|
|
45
|
+
| `memory_request_pin` | `GET /memory/entries/{id}` | Verify and prepare a human pin request |
|
|
46
|
+
| `memory_near` | `POST /memory/entries:near` | Lessons on code and its nearby graph |
|
|
47
|
+
| `memory_similar` | `POST /memory/entries:similar` | Near-duplicate check before writing a lesson |
|
|
48
|
+
| `memory_anchors` | `POST /memory/anchors:lookup` | Lessons attached to known stable node ids |
|
|
49
|
+
|
|
18
50
|
### Fleet — machines and slots
|
|
19
51
|
|
|
20
52
|
The environment layer had **no agent-reachable surface at all** until these landed, so
|
package/dist/.build-stamp.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"stamp_version": 1,
|
|
3
3
|
"package": "@opvs-ai/mcp",
|
|
4
|
-
"version": "2.
|
|
5
|
-
"source_digest": "
|
|
6
|
-
"source_files":
|
|
7
|
-
"built_at": "2026-10-
|
|
4
|
+
"version": "2.11.0",
|
|
5
|
+
"source_digest": "53fde4d1149f048d0d91d84a40211a268e6bcf6c765598663927810f9b313478",
|
|
6
|
+
"source_files": 10,
|
|
7
|
+
"built_at": "2026-10-11T16:55:53.573Z",
|
|
8
8
|
"node": "v22.23.3"
|
|
9
9
|
}
|
package/dist/code.d.ts
ADDED
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
import { type ToolResult } from "./http.js";
|
|
2
|
+
type Args = Record<string, unknown> & {
|
|
3
|
+
project_id?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const CODE_TOOLS: ({
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: string;
|
|
10
|
+
properties: {
|
|
11
|
+
project_id: {
|
|
12
|
+
type: string;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
query: {
|
|
16
|
+
type: string;
|
|
17
|
+
minLength: number;
|
|
18
|
+
maxLength: number;
|
|
19
|
+
description: string;
|
|
20
|
+
};
|
|
21
|
+
kind: {
|
|
22
|
+
type: string;
|
|
23
|
+
maxLength: number;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
branch: {
|
|
27
|
+
type: string;
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
30
|
+
limit: {
|
|
31
|
+
type: string;
|
|
32
|
+
minimum: number;
|
|
33
|
+
description: string;
|
|
34
|
+
};
|
|
35
|
+
format: {
|
|
36
|
+
type: string;
|
|
37
|
+
enum: string[];
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
depth?: undefined;
|
|
41
|
+
directory?: undefined;
|
|
42
|
+
direct?: undefined;
|
|
43
|
+
order?: undefined;
|
|
44
|
+
after?: undefined;
|
|
45
|
+
file_path?: undefined;
|
|
46
|
+
anchors?: undefined;
|
|
47
|
+
before?: undefined;
|
|
48
|
+
node_id?: undefined;
|
|
49
|
+
path_prefix?: undefined;
|
|
50
|
+
direction?: undefined;
|
|
51
|
+
dir?: undefined;
|
|
52
|
+
};
|
|
53
|
+
required: string[];
|
|
54
|
+
additionalProperties: boolean;
|
|
55
|
+
};
|
|
56
|
+
} | {
|
|
57
|
+
name: string;
|
|
58
|
+
description: string;
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: string;
|
|
61
|
+
properties: {
|
|
62
|
+
project_id: {
|
|
63
|
+
type: string;
|
|
64
|
+
description: string;
|
|
65
|
+
};
|
|
66
|
+
branch: {
|
|
67
|
+
type: string;
|
|
68
|
+
description: string;
|
|
69
|
+
};
|
|
70
|
+
format: {
|
|
71
|
+
type: string;
|
|
72
|
+
enum: string[];
|
|
73
|
+
description: string;
|
|
74
|
+
};
|
|
75
|
+
query?: undefined;
|
|
76
|
+
kind?: undefined;
|
|
77
|
+
limit?: undefined;
|
|
78
|
+
depth?: undefined;
|
|
79
|
+
directory?: undefined;
|
|
80
|
+
direct?: undefined;
|
|
81
|
+
order?: undefined;
|
|
82
|
+
after?: undefined;
|
|
83
|
+
file_path?: undefined;
|
|
84
|
+
anchors?: undefined;
|
|
85
|
+
before?: undefined;
|
|
86
|
+
node_id?: undefined;
|
|
87
|
+
path_prefix?: undefined;
|
|
88
|
+
direction?: undefined;
|
|
89
|
+
dir?: undefined;
|
|
90
|
+
};
|
|
91
|
+
required: string[];
|
|
92
|
+
additionalProperties: boolean;
|
|
93
|
+
};
|
|
94
|
+
} | {
|
|
95
|
+
name: string;
|
|
96
|
+
description: string;
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: string;
|
|
99
|
+
properties: {
|
|
100
|
+
project_id: {
|
|
101
|
+
type: string;
|
|
102
|
+
description: string;
|
|
103
|
+
};
|
|
104
|
+
branch: {
|
|
105
|
+
type: string;
|
|
106
|
+
description: string;
|
|
107
|
+
};
|
|
108
|
+
depth: {
|
|
109
|
+
type: string;
|
|
110
|
+
minimum: number;
|
|
111
|
+
maximum: number;
|
|
112
|
+
description: string;
|
|
113
|
+
};
|
|
114
|
+
format: {
|
|
115
|
+
type: string;
|
|
116
|
+
enum: string[];
|
|
117
|
+
description: string;
|
|
118
|
+
};
|
|
119
|
+
query?: undefined;
|
|
120
|
+
kind?: undefined;
|
|
121
|
+
limit?: undefined;
|
|
122
|
+
directory?: undefined;
|
|
123
|
+
direct?: undefined;
|
|
124
|
+
order?: undefined;
|
|
125
|
+
after?: undefined;
|
|
126
|
+
file_path?: undefined;
|
|
127
|
+
anchors?: undefined;
|
|
128
|
+
before?: undefined;
|
|
129
|
+
node_id?: undefined;
|
|
130
|
+
path_prefix?: undefined;
|
|
131
|
+
direction?: undefined;
|
|
132
|
+
dir?: undefined;
|
|
133
|
+
};
|
|
134
|
+
required: string[];
|
|
135
|
+
additionalProperties: boolean;
|
|
136
|
+
};
|
|
137
|
+
} | {
|
|
138
|
+
name: string;
|
|
139
|
+
description: string;
|
|
140
|
+
inputSchema: {
|
|
141
|
+
type: string;
|
|
142
|
+
properties: {
|
|
143
|
+
project_id: {
|
|
144
|
+
type: string;
|
|
145
|
+
description: string;
|
|
146
|
+
};
|
|
147
|
+
directory: {
|
|
148
|
+
type: string;
|
|
149
|
+
maxLength: number;
|
|
150
|
+
description: string;
|
|
151
|
+
};
|
|
152
|
+
direct: {
|
|
153
|
+
type: string;
|
|
154
|
+
description: string;
|
|
155
|
+
};
|
|
156
|
+
branch: {
|
|
157
|
+
type: string;
|
|
158
|
+
description: string;
|
|
159
|
+
};
|
|
160
|
+
limit: {
|
|
161
|
+
type: string;
|
|
162
|
+
minimum: number;
|
|
163
|
+
description: string;
|
|
164
|
+
};
|
|
165
|
+
order: {
|
|
166
|
+
type: string;
|
|
167
|
+
enum: string[];
|
|
168
|
+
description: string;
|
|
169
|
+
};
|
|
170
|
+
after: {
|
|
171
|
+
type: string;
|
|
172
|
+
minLength: number;
|
|
173
|
+
maxLength: number;
|
|
174
|
+
description: string;
|
|
175
|
+
minimum?: undefined;
|
|
176
|
+
};
|
|
177
|
+
format: {
|
|
178
|
+
type: string;
|
|
179
|
+
enum: string[];
|
|
180
|
+
description: string;
|
|
181
|
+
};
|
|
182
|
+
query?: undefined;
|
|
183
|
+
kind?: undefined;
|
|
184
|
+
depth?: undefined;
|
|
185
|
+
file_path?: undefined;
|
|
186
|
+
anchors?: undefined;
|
|
187
|
+
before?: undefined;
|
|
188
|
+
node_id?: undefined;
|
|
189
|
+
path_prefix?: undefined;
|
|
190
|
+
direction?: undefined;
|
|
191
|
+
dir?: undefined;
|
|
192
|
+
};
|
|
193
|
+
required: string[];
|
|
194
|
+
additionalProperties: boolean;
|
|
195
|
+
};
|
|
196
|
+
} | {
|
|
197
|
+
name: string;
|
|
198
|
+
description: string;
|
|
199
|
+
inputSchema: {
|
|
200
|
+
type: string;
|
|
201
|
+
properties: {
|
|
202
|
+
project_id: {
|
|
203
|
+
type: string;
|
|
204
|
+
description: string;
|
|
205
|
+
};
|
|
206
|
+
file_path: {
|
|
207
|
+
type: string;
|
|
208
|
+
minLength: number;
|
|
209
|
+
maxLength: number;
|
|
210
|
+
description: string;
|
|
211
|
+
};
|
|
212
|
+
branch: {
|
|
213
|
+
type: string;
|
|
214
|
+
description: string;
|
|
215
|
+
};
|
|
216
|
+
limit: {
|
|
217
|
+
type: string;
|
|
218
|
+
minimum: number;
|
|
219
|
+
description: string;
|
|
220
|
+
};
|
|
221
|
+
format: {
|
|
222
|
+
type: string;
|
|
223
|
+
enum: string[];
|
|
224
|
+
description: string;
|
|
225
|
+
};
|
|
226
|
+
query?: undefined;
|
|
227
|
+
kind?: undefined;
|
|
228
|
+
depth?: undefined;
|
|
229
|
+
directory?: undefined;
|
|
230
|
+
direct?: undefined;
|
|
231
|
+
order?: undefined;
|
|
232
|
+
after?: undefined;
|
|
233
|
+
anchors?: undefined;
|
|
234
|
+
before?: undefined;
|
|
235
|
+
node_id?: undefined;
|
|
236
|
+
path_prefix?: undefined;
|
|
237
|
+
direction?: undefined;
|
|
238
|
+
dir?: undefined;
|
|
239
|
+
};
|
|
240
|
+
required: string[];
|
|
241
|
+
additionalProperties: boolean;
|
|
242
|
+
};
|
|
243
|
+
} | {
|
|
244
|
+
name: string;
|
|
245
|
+
description: string;
|
|
246
|
+
inputSchema: {
|
|
247
|
+
type: string;
|
|
248
|
+
properties: {
|
|
249
|
+
project_id: {
|
|
250
|
+
type: string;
|
|
251
|
+
description: string;
|
|
252
|
+
};
|
|
253
|
+
anchors: {
|
|
254
|
+
type: string;
|
|
255
|
+
items: {
|
|
256
|
+
type: string;
|
|
257
|
+
};
|
|
258
|
+
maxItems: number;
|
|
259
|
+
description: string;
|
|
260
|
+
};
|
|
261
|
+
format: {
|
|
262
|
+
type: string;
|
|
263
|
+
enum: string[];
|
|
264
|
+
description: string;
|
|
265
|
+
};
|
|
266
|
+
query?: undefined;
|
|
267
|
+
kind?: undefined;
|
|
268
|
+
branch?: undefined;
|
|
269
|
+
limit?: undefined;
|
|
270
|
+
depth?: undefined;
|
|
271
|
+
directory?: undefined;
|
|
272
|
+
direct?: undefined;
|
|
273
|
+
order?: undefined;
|
|
274
|
+
after?: undefined;
|
|
275
|
+
file_path?: undefined;
|
|
276
|
+
before?: undefined;
|
|
277
|
+
node_id?: undefined;
|
|
278
|
+
path_prefix?: undefined;
|
|
279
|
+
direction?: undefined;
|
|
280
|
+
dir?: undefined;
|
|
281
|
+
};
|
|
282
|
+
required: string[];
|
|
283
|
+
additionalProperties: boolean;
|
|
284
|
+
};
|
|
285
|
+
} | {
|
|
286
|
+
name: string;
|
|
287
|
+
description: string;
|
|
288
|
+
inputSchema: {
|
|
289
|
+
type: string;
|
|
290
|
+
properties: {
|
|
291
|
+
project_id: {
|
|
292
|
+
type: string;
|
|
293
|
+
description: string;
|
|
294
|
+
};
|
|
295
|
+
order: {
|
|
296
|
+
type: string;
|
|
297
|
+
enum: string[];
|
|
298
|
+
description: string;
|
|
299
|
+
};
|
|
300
|
+
before: {
|
|
301
|
+
type: string;
|
|
302
|
+
minimum: number;
|
|
303
|
+
description: string;
|
|
304
|
+
};
|
|
305
|
+
after: {
|
|
306
|
+
type: string;
|
|
307
|
+
minimum: number;
|
|
308
|
+
description: string;
|
|
309
|
+
minLength?: undefined;
|
|
310
|
+
maxLength?: undefined;
|
|
311
|
+
};
|
|
312
|
+
node_id: {
|
|
313
|
+
type: string;
|
|
314
|
+
items: {
|
|
315
|
+
type: string;
|
|
316
|
+
};
|
|
317
|
+
maxItems: number;
|
|
318
|
+
description: string;
|
|
319
|
+
};
|
|
320
|
+
path_prefix: {
|
|
321
|
+
type: string;
|
|
322
|
+
maxLength: number;
|
|
323
|
+
description: string;
|
|
324
|
+
};
|
|
325
|
+
limit: {
|
|
326
|
+
type: string;
|
|
327
|
+
minimum: number;
|
|
328
|
+
description: string;
|
|
329
|
+
};
|
|
330
|
+
format: {
|
|
331
|
+
type: string;
|
|
332
|
+
enum: string[];
|
|
333
|
+
description: string;
|
|
334
|
+
};
|
|
335
|
+
query?: undefined;
|
|
336
|
+
kind?: undefined;
|
|
337
|
+
branch?: undefined;
|
|
338
|
+
depth?: undefined;
|
|
339
|
+
directory?: undefined;
|
|
340
|
+
direct?: undefined;
|
|
341
|
+
file_path?: undefined;
|
|
342
|
+
anchors?: undefined;
|
|
343
|
+
direction?: undefined;
|
|
344
|
+
dir?: undefined;
|
|
345
|
+
};
|
|
346
|
+
required: string[];
|
|
347
|
+
additionalProperties: boolean;
|
|
348
|
+
};
|
|
349
|
+
} | {
|
|
350
|
+
name: string;
|
|
351
|
+
description: string;
|
|
352
|
+
inputSchema: {
|
|
353
|
+
type: string;
|
|
354
|
+
properties: {
|
|
355
|
+
project_id: {
|
|
356
|
+
type: string;
|
|
357
|
+
description: string;
|
|
358
|
+
};
|
|
359
|
+
node_id: {
|
|
360
|
+
type: string;
|
|
361
|
+
description: string;
|
|
362
|
+
items?: undefined;
|
|
363
|
+
maxItems?: undefined;
|
|
364
|
+
};
|
|
365
|
+
direction: {
|
|
366
|
+
type: string;
|
|
367
|
+
enum: string[];
|
|
368
|
+
description: string;
|
|
369
|
+
};
|
|
370
|
+
depth: {
|
|
371
|
+
type: string;
|
|
372
|
+
minimum: number;
|
|
373
|
+
maximum: number;
|
|
374
|
+
description: string;
|
|
375
|
+
};
|
|
376
|
+
limit: {
|
|
377
|
+
type: string;
|
|
378
|
+
minimum: number;
|
|
379
|
+
description: string;
|
|
380
|
+
};
|
|
381
|
+
branch: {
|
|
382
|
+
type: string;
|
|
383
|
+
description: string;
|
|
384
|
+
};
|
|
385
|
+
format: {
|
|
386
|
+
type: string;
|
|
387
|
+
enum: string[];
|
|
388
|
+
description: string;
|
|
389
|
+
};
|
|
390
|
+
query?: undefined;
|
|
391
|
+
kind?: undefined;
|
|
392
|
+
directory?: undefined;
|
|
393
|
+
direct?: undefined;
|
|
394
|
+
order?: undefined;
|
|
395
|
+
after?: undefined;
|
|
396
|
+
file_path?: undefined;
|
|
397
|
+
anchors?: undefined;
|
|
398
|
+
before?: undefined;
|
|
399
|
+
path_prefix?: undefined;
|
|
400
|
+
dir?: undefined;
|
|
401
|
+
};
|
|
402
|
+
required: string[];
|
|
403
|
+
additionalProperties: boolean;
|
|
404
|
+
};
|
|
405
|
+
} | {
|
|
406
|
+
name: string;
|
|
407
|
+
description: string;
|
|
408
|
+
inputSchema: {
|
|
409
|
+
type: string;
|
|
410
|
+
properties: {
|
|
411
|
+
project_id: {
|
|
412
|
+
type: string;
|
|
413
|
+
description: string;
|
|
414
|
+
};
|
|
415
|
+
dir: {
|
|
416
|
+
type: string;
|
|
417
|
+
maxLength: number;
|
|
418
|
+
description: string;
|
|
419
|
+
};
|
|
420
|
+
depth: {
|
|
421
|
+
type: string;
|
|
422
|
+
minimum: number;
|
|
423
|
+
maximum: number;
|
|
424
|
+
description: string;
|
|
425
|
+
};
|
|
426
|
+
limit: {
|
|
427
|
+
type: string;
|
|
428
|
+
minimum: number;
|
|
429
|
+
description: string;
|
|
430
|
+
};
|
|
431
|
+
branch: {
|
|
432
|
+
type: string;
|
|
433
|
+
description: string;
|
|
434
|
+
};
|
|
435
|
+
format: {
|
|
436
|
+
type: string;
|
|
437
|
+
enum: string[];
|
|
438
|
+
description: string;
|
|
439
|
+
};
|
|
440
|
+
query?: undefined;
|
|
441
|
+
kind?: undefined;
|
|
442
|
+
directory?: undefined;
|
|
443
|
+
direct?: undefined;
|
|
444
|
+
order?: undefined;
|
|
445
|
+
after?: undefined;
|
|
446
|
+
file_path?: undefined;
|
|
447
|
+
anchors?: undefined;
|
|
448
|
+
before?: undefined;
|
|
449
|
+
node_id?: undefined;
|
|
450
|
+
path_prefix?: undefined;
|
|
451
|
+
direction?: undefined;
|
|
452
|
+
};
|
|
453
|
+
required: string[];
|
|
454
|
+
additionalProperties: boolean;
|
|
455
|
+
};
|
|
456
|
+
})[];
|
|
457
|
+
export declare function handleCodeContext(args: Args): Promise<ToolResult>;
|
|
458
|
+
export declare function handleCodeSummary(args: Args): Promise<ToolResult>;
|
|
459
|
+
export declare function handleCodeTree(args: Args): Promise<ToolResult>;
|
|
460
|
+
export declare function handleCodeFiles(args: Args): Promise<ToolResult>;
|
|
461
|
+
export declare function handleCodeSymbols(args: Args): Promise<ToolResult>;
|
|
462
|
+
export declare function handleCodeResolve(args: Args): Promise<ToolResult>;
|
|
463
|
+
export declare function handleCodeChanges(args: Args): Promise<ToolResult>;
|
|
464
|
+
export declare function handleCodeGraph(args: Args): Promise<ToolResult>;
|
|
465
|
+
export declare function handleCodeGraphFolders(args: Args): Promise<ToolResult>;
|
|
466
|
+
export {};
|