@orcalang/orca-mcp-server 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/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +85 -0
- package/dist/server.js.map +1 -0
- package/package.json +28 -0
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":""}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import { parseSkill, verifySkill, compileSkill, generateActionsSkill, refineSkill, generateOrcaSkill, generateOrcaMultiSkill, } from '@orcalang/orca-lang/skills';
|
|
6
|
+
import { ORCA_TOOLS } from '@orcalang/orca-lang/tools';
|
|
7
|
+
const TOOLS = ORCA_TOOLS;
|
|
8
|
+
// ── Tool dispatch ─────────────────────────────────────────────────────────────
|
|
9
|
+
async function callTool(name, args) {
|
|
10
|
+
switch (name) {
|
|
11
|
+
case 'parse_machine': {
|
|
12
|
+
const source = args.source;
|
|
13
|
+
return parseSkill({ source });
|
|
14
|
+
}
|
|
15
|
+
case 'verify_machine': {
|
|
16
|
+
const source = args.source;
|
|
17
|
+
return verifySkill({ source });
|
|
18
|
+
}
|
|
19
|
+
case 'compile_machine': {
|
|
20
|
+
const source = args.source;
|
|
21
|
+
const target = args.target ?? 'xstate';
|
|
22
|
+
return compileSkill({ source }, target);
|
|
23
|
+
}
|
|
24
|
+
case 'generate_machine': {
|
|
25
|
+
const spec = args.spec;
|
|
26
|
+
const maxIterations = args.max_iterations ?? 3;
|
|
27
|
+
return generateOrcaSkill(spec, undefined, maxIterations);
|
|
28
|
+
}
|
|
29
|
+
case 'generate_multi_machine': {
|
|
30
|
+
const spec = args.spec;
|
|
31
|
+
const maxIterations = args.max_iterations ?? 3;
|
|
32
|
+
return generateOrcaMultiSkill(spec, undefined, maxIterations);
|
|
33
|
+
}
|
|
34
|
+
case 'generate_actions': {
|
|
35
|
+
const source = args.source;
|
|
36
|
+
const lang = args.lang ?? 'typescript';
|
|
37
|
+
const useLLM = args.use_llm ?? false;
|
|
38
|
+
const generateTests = args.generate_tests ?? false;
|
|
39
|
+
return generateActionsSkill({ source }, lang, useLLM, undefined, generateTests);
|
|
40
|
+
}
|
|
41
|
+
case 'refine_machine': {
|
|
42
|
+
const source = args.source;
|
|
43
|
+
const maxIterations = args.max_iterations ?? 3;
|
|
44
|
+
let errors = args.errors;
|
|
45
|
+
if (!errors) {
|
|
46
|
+
// Auto-verify if errors not provided
|
|
47
|
+
const verification = await verifySkill({ source });
|
|
48
|
+
if (verification.status === 'valid') {
|
|
49
|
+
return { status: 'success', corrected: source, iterations: 0, changes: ['Machine already valid — no refinement needed'] };
|
|
50
|
+
}
|
|
51
|
+
errors = verification.errors.filter(e => e.severity === 'error');
|
|
52
|
+
}
|
|
53
|
+
return refineSkill({ source }, errors, undefined, maxIterations);
|
|
54
|
+
}
|
|
55
|
+
default:
|
|
56
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ── Server setup ──────────────────────────────────────────────────────────────
|
|
60
|
+
const server = new Server({ name: 'orca', version: '0.1.0' }, { capabilities: { tools: {} } });
|
|
61
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
|
62
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
63
|
+
const { name, arguments: args = {} } = request.params;
|
|
64
|
+
try {
|
|
65
|
+
const result = await callTool(name, args);
|
|
66
|
+
return {
|
|
67
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
return {
|
|
72
|
+
isError: true,
|
|
73
|
+
content: [
|
|
74
|
+
{
|
|
75
|
+
type: 'text',
|
|
76
|
+
text: err instanceof Error ? err.message : String(err),
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
// ── Start ─────────────────────────────────────────────────────────────────────
|
|
83
|
+
const transport = new StdioServerTransport();
|
|
84
|
+
await server.connect(transport);
|
|
85
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@orcalang/orca-mcp-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server exposing Orca state machine tools — parse, verify, compile, generate, refine",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/server.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"orca-mcp-server": "dist/server.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"prepublishOnly": "npm run build",
|
|
16
|
+
"start": "node dist/server.js"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@modelcontextprotocol/sdk": "^1.28.0",
|
|
20
|
+
"@orcalang/orca-lang": "workspace:*"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/node": "^20.10.0",
|
|
24
|
+
"typescript": "^5.3.0"
|
|
25
|
+
},
|
|
26
|
+
"keywords": ["orca", "mcp", "state-machine", "llm"],
|
|
27
|
+
"license": "Apache-2.0"
|
|
28
|
+
}
|