tokrepo-mcp-server 2.2.0 → 2.3.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 +3 -0
- package/bin/server.js +34 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,6 +41,7 @@ Once connected, your AI assistant can:
|
|
|
41
41
|
- **Plan before install** — get install plan v2 with policy decisions, rollback, and verification
|
|
42
42
|
- **Safe Codex install** — dry-run by default; risky assets must be staged or explicitly approved
|
|
43
43
|
- **Lifecycle control** — list installed assets, uninstall managed files, and roll back install sessions
|
|
44
|
+
- **Agent eval** — run TokRepo's agent-native search/plan/install/rollback contract checks
|
|
44
45
|
|
|
45
46
|
## Available Tools
|
|
46
47
|
|
|
@@ -54,6 +55,7 @@ Once connected, your AI assistant can:
|
|
|
54
55
|
| `tokrepo_installed` | List TokRepo-managed Codex installs |
|
|
55
56
|
| `tokrepo_uninstall` | Dry-run or remove a managed Codex install |
|
|
56
57
|
| `tokrepo_rollback` | Dry-run or roll back a prior Codex install session |
|
|
58
|
+
| `tokrepo_eval_agent` | Run agent-native CLI contract and lifecycle evals |
|
|
57
59
|
| `tokrepo_install` | Get raw installable content |
|
|
58
60
|
| `tokrepo_trending` | Browse popular/latest assets |
|
|
59
61
|
|
|
@@ -70,6 +72,7 @@ You: "Install that cursor rules asset"
|
|
|
70
72
|
AI: [calls tokrepo_install_plan] → Reviews policy and actions
|
|
71
73
|
AI: [calls tokrepo_codex_install with dry_run=false, confirm=true] → Writes only after explicit confirmation
|
|
72
74
|
AI: [calls tokrepo_rollback with dry_run=true] → Shows exactly what would be removed before rollback
|
|
75
|
+
AI: [calls tokrepo_eval_agent] → Verifies TokRepo's agent-facing flow end to end
|
|
73
76
|
```
|
|
74
77
|
|
|
75
78
|
## Why TokRepo?
|
package/bin/server.js
CHANGED
|
@@ -19,7 +19,7 @@ const API_BASE = process.env.TOKREPO_API || 'https://api.tokrepo.com';
|
|
|
19
19
|
const TOKREPO_URL = 'https://tokrepo.com';
|
|
20
20
|
const TOKREPO_TOKEN = process.env.TOKREPO_TOKEN || '';
|
|
21
21
|
const TOKREPO_CLI = process.env.TOKREPO_CLI || '';
|
|
22
|
-
const SERVER_VERSION = '2.
|
|
22
|
+
const SERVER_VERSION = '2.3.0';
|
|
23
23
|
|
|
24
24
|
// ─── MCP Protocol (JSON-RPC over stdio) ───
|
|
25
25
|
|
|
@@ -245,6 +245,23 @@ const TOOLS = [
|
|
|
245
245
|
},
|
|
246
246
|
},
|
|
247
247
|
},
|
|
248
|
+
{
|
|
249
|
+
name: 'tokrepo_eval_agent',
|
|
250
|
+
description: 'Run TokRepo agent-native evals through the CLI. Verifies filtered search, install-plan contracts, metadata quality reporting, Codex install verification, manifest state, and rollback using temporary local state.',
|
|
251
|
+
inputSchema: {
|
|
252
|
+
type: 'object',
|
|
253
|
+
properties: {
|
|
254
|
+
uuid: {
|
|
255
|
+
type: 'string',
|
|
256
|
+
description: 'Optional sample asset UUID for install-plan and lifecycle tests.',
|
|
257
|
+
},
|
|
258
|
+
keyword: {
|
|
259
|
+
type: 'string',
|
|
260
|
+
description: 'Optional search keyword for filtered search eval. Default video.',
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
248
265
|
{
|
|
249
266
|
name: 'tokrepo_trending',
|
|
250
267
|
description: 'Get trending/popular AI assets on TokRepo. Use when user asks for recommended or popular AI tools.',
|
|
@@ -803,6 +820,21 @@ async function handleRollback(args) {
|
|
|
803
820
|
return { content: [{ type: 'text', text: jsonText(dry_run === false ? 'TokRepo Codex rollback result' : 'TokRepo Codex rollback dry-run', data) }] };
|
|
804
821
|
}
|
|
805
822
|
|
|
823
|
+
async function handleEvalAgent(args) {
|
|
824
|
+
const { uuid = '', keyword = '' } = args || {};
|
|
825
|
+
const cliArgs = ['eval-agent', '--json'];
|
|
826
|
+
if (uuid) cliArgs.push('--uuid', uuid);
|
|
827
|
+
if (keyword) cliArgs.push('--keyword', keyword);
|
|
828
|
+
const { stdout, stderr } = await runTokrepoCli(cliArgs);
|
|
829
|
+
let data;
|
|
830
|
+
try {
|
|
831
|
+
data = JSON.parse(stdout);
|
|
832
|
+
} catch {
|
|
833
|
+
data = { stdout, stderr };
|
|
834
|
+
}
|
|
835
|
+
return { content: [{ type: 'text', text: jsonText('TokRepo agent eval result', data) }] };
|
|
836
|
+
}
|
|
837
|
+
|
|
806
838
|
async function handleTrending(args) {
|
|
807
839
|
const { sort = 'popular', limit = 10 } = args;
|
|
808
840
|
const params = new URLSearchParams({
|
|
@@ -957,6 +989,7 @@ async function handleRequest(msg) {
|
|
|
957
989
|
case 'tokrepo_installed': result = await handleInstalled(args || {}); break;
|
|
958
990
|
case 'tokrepo_uninstall': result = await handleUninstall(args || {}); break;
|
|
959
991
|
case 'tokrepo_rollback': result = await handleRollback(args || {}); break;
|
|
992
|
+
case 'tokrepo_eval_agent': result = await handleEvalAgent(args || {}); break;
|
|
960
993
|
case 'tokrepo_trending': result = await handleTrending(args || {}); break;
|
|
961
994
|
case 'tokrepo_push': result = await handlePush(args || {}); break;
|
|
962
995
|
case 'tokrepo_status': result = await handleStatus(args || {}); break;
|
package/package.json
CHANGED