oh-my-claude-sisyphus 3.7.8 → 3.7.10
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/.claude-plugin/marketplace.json +24 -0
- package/.claude-plugin/plugin.json +7 -0
- package/.mcp.json +8 -0
- package/bridge/mcp-server.cjs +19135 -0
- package/dist/mcp/standalone-server.cjs +19135 -0
- package/dist/mcp/standalone-server.d.ts +11 -0
- package/dist/mcp/standalone-server.d.ts.map +1 -0
- package/dist/mcp/standalone-server.js +143 -0
- package/dist/mcp/standalone-server.js.map +1 -0
- package/package.json +5 -3
- package/scripts/build-mcp-server.mjs +35 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Standalone MCP Server for OMC Tools
|
|
4
|
+
*
|
|
5
|
+
* This server exposes LSP, AST, and Python REPL tools via stdio transport
|
|
6
|
+
* for discovery by Claude Code's MCP management system.
|
|
7
|
+
*
|
|
8
|
+
* Usage: node dist/mcp/standalone-server.js
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=standalone-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone-server.d.ts","sourceRoot":"","sources":["../../src/mcp/standalone-server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Standalone MCP Server for OMC Tools
|
|
4
|
+
*
|
|
5
|
+
* This server exposes LSP, AST, and Python REPL tools via stdio transport
|
|
6
|
+
* for discovery by Claude Code's MCP management system.
|
|
7
|
+
*
|
|
8
|
+
* Usage: node dist/mcp/standalone-server.js
|
|
9
|
+
*/
|
|
10
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
11
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
12
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
13
|
+
// Only import LSP tools - no native dependencies
|
|
14
|
+
// AST tools (@ast-grep/napi) and python_repl (better-sqlite3) require native modules
|
|
15
|
+
// which can't be bundled and won't exist in plugin cache
|
|
16
|
+
import { lspTools } from '../tools/lsp-tools.js';
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
// Convert Zod schema to JSON Schema for MCP
|
|
19
|
+
function zodToJsonSchema(schema) {
|
|
20
|
+
// Handle both ZodObject and raw shape
|
|
21
|
+
const rawShape = schema instanceof z.ZodObject ? schema.shape : schema;
|
|
22
|
+
const properties = {};
|
|
23
|
+
const required = [];
|
|
24
|
+
for (const [key, value] of Object.entries(rawShape)) {
|
|
25
|
+
const zodType = value;
|
|
26
|
+
properties[key] = zodTypeToJsonSchema(zodType);
|
|
27
|
+
// Check if required (not optional) - with safety check
|
|
28
|
+
const isOptional = zodType && typeof zodType.isOptional === 'function' && zodType.isOptional();
|
|
29
|
+
if (!isOptional) {
|
|
30
|
+
required.push(key);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties,
|
|
36
|
+
required
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function zodTypeToJsonSchema(zodType) {
|
|
40
|
+
const result = {};
|
|
41
|
+
// Safety check for undefined zodType
|
|
42
|
+
if (!zodType || !zodType._def) {
|
|
43
|
+
return { type: 'string' };
|
|
44
|
+
}
|
|
45
|
+
// Handle optional wrapper
|
|
46
|
+
if (zodType instanceof z.ZodOptional) {
|
|
47
|
+
return zodTypeToJsonSchema(zodType._def.innerType);
|
|
48
|
+
}
|
|
49
|
+
// Handle default wrapper
|
|
50
|
+
if (zodType instanceof z.ZodDefault) {
|
|
51
|
+
const inner = zodTypeToJsonSchema(zodType._def.innerType);
|
|
52
|
+
inner.default = zodType._def.defaultValue();
|
|
53
|
+
return inner;
|
|
54
|
+
}
|
|
55
|
+
// Get description if available
|
|
56
|
+
const description = zodType._def?.description;
|
|
57
|
+
if (description) {
|
|
58
|
+
result.description = description;
|
|
59
|
+
}
|
|
60
|
+
// Handle basic types
|
|
61
|
+
if (zodType instanceof z.ZodString) {
|
|
62
|
+
result.type = 'string';
|
|
63
|
+
}
|
|
64
|
+
else if (zodType instanceof z.ZodNumber) {
|
|
65
|
+
result.type = zodType._def?.checks?.some((c) => c.kind === 'int')
|
|
66
|
+
? 'integer'
|
|
67
|
+
: 'number';
|
|
68
|
+
}
|
|
69
|
+
else if (zodType instanceof z.ZodBoolean) {
|
|
70
|
+
result.type = 'boolean';
|
|
71
|
+
}
|
|
72
|
+
else if (zodType instanceof z.ZodArray) {
|
|
73
|
+
result.type = 'array';
|
|
74
|
+
result.items = zodType._def?.type ? zodTypeToJsonSchema(zodType._def.type) : { type: 'string' };
|
|
75
|
+
}
|
|
76
|
+
else if (zodType instanceof z.ZodEnum) {
|
|
77
|
+
result.type = 'string';
|
|
78
|
+
result.enum = zodType._def?.values;
|
|
79
|
+
}
|
|
80
|
+
else if (zodType instanceof z.ZodObject) {
|
|
81
|
+
return zodToJsonSchema(zodType.shape);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
result.type = 'string';
|
|
85
|
+
}
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
// Create the MCP server
|
|
89
|
+
const server = new Server({
|
|
90
|
+
name: 'omc-tools',
|
|
91
|
+
version: '1.0.0',
|
|
92
|
+
}, {
|
|
93
|
+
capabilities: {
|
|
94
|
+
tools: {},
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
// List available tools
|
|
98
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
99
|
+
return {
|
|
100
|
+
tools: lspTools.map(tool => ({
|
|
101
|
+
name: tool.name,
|
|
102
|
+
description: tool.description,
|
|
103
|
+
inputSchema: zodToJsonSchema(tool.schema),
|
|
104
|
+
})),
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
// Handle tool calls
|
|
108
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
109
|
+
const { name, arguments: args } = request.params;
|
|
110
|
+
const tool = lspTools.find(t => t.name === name);
|
|
111
|
+
if (!tool) {
|
|
112
|
+
return {
|
|
113
|
+
content: [{ type: 'text', text: `Unknown tool: ${name}` }],
|
|
114
|
+
isError: true,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
119
|
+
const result = await tool.handler(args ?? {});
|
|
120
|
+
return {
|
|
121
|
+
content: result.content,
|
|
122
|
+
isError: false,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
127
|
+
return {
|
|
128
|
+
content: [{ type: 'text', text: `Error: ${errorMessage}` }],
|
|
129
|
+
isError: true,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
// Start the server
|
|
134
|
+
async function main() {
|
|
135
|
+
const transport = new StdioServerTransport();
|
|
136
|
+
await server.connect(transport);
|
|
137
|
+
console.error('OMC Tools MCP Server running on stdio');
|
|
138
|
+
}
|
|
139
|
+
main().catch((error) => {
|
|
140
|
+
console.error('Failed to start server:', error);
|
|
141
|
+
process.exit(1);
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=standalone-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone-server.js","sourceRoot":"","sources":["../../src/mcp/standalone-server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,iDAAiD;AACjD,qFAAqF;AACrF,yDAAyD;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,4CAA4C;AAC5C,SAAS,eAAe,CAAC,MAAkD;IAKzE,sCAAsC;IACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAEvE,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,KAAqB,CAAC;QACtC,UAAU,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE/C,uDAAuD;QACvD,MAAM,UAAU,GAAG,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/F,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAqB;IAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,qCAAqC;IACrC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+BAA+B;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;YACjF,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ,CAAC;IACf,CAAC;SAAM,IAAI,OAAO,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;QACtB,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAClG,CAAC;SAAM,IAAI,OAAO,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;IACrC,CAAC;SAAM,IAAI,OAAO,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wBAAwB;AACxB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;SAC1C,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;YAC1D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,OAAsF,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC9H,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,YAAY,EAAE,EAAE,CAAC;YAC3D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,mBAAmB;AACnB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACzD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-claude-sisyphus",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.10",
|
|
4
4
|
"description": "Multi-agent orchestration system for Claude Code - Inspired by oh-my-opencode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,12 +27,13 @@
|
|
|
27
27
|
"skills",
|
|
28
28
|
"templates",
|
|
29
29
|
"docs",
|
|
30
|
-
"plugin
|
|
30
|
+
".claude-plugin",
|
|
31
|
+
".mcp.json",
|
|
31
32
|
"README.md",
|
|
32
33
|
"LICENSE"
|
|
33
34
|
],
|
|
34
35
|
"scripts": {
|
|
35
|
-
"build": "tsc && node scripts/build-skill-bridge.mjs",
|
|
36
|
+
"build": "tsc && node scripts/build-skill-bridge.mjs && node scripts/build-mcp-server.mjs",
|
|
36
37
|
"build:bridge": "node scripts/build-skill-bridge.mjs",
|
|
37
38
|
"dev": "tsc --watch",
|
|
38
39
|
"start": "node dist/index.js",
|
|
@@ -51,6 +52,7 @@
|
|
|
51
52
|
"dependencies": {
|
|
52
53
|
"@anthropic-ai/claude-agent-sdk": "^0.1.0",
|
|
53
54
|
"@ast-grep/napi": "^0.31.0",
|
|
55
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
54
56
|
"@tokscale/core": "^1.0.25",
|
|
55
57
|
"@types/better-sqlite3": "^7.6.13",
|
|
56
58
|
"ajv": "^8.17.1",
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Build script for standalone MCP server bundle
|
|
4
|
+
* Bundles the MCP server into a standalone JS file for plugin distribution
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import * as esbuild from 'esbuild';
|
|
8
|
+
import { mkdir } from 'fs/promises';
|
|
9
|
+
|
|
10
|
+
// Output to bridge/ directory (not gitignored) for plugin distribution
|
|
11
|
+
const outfile = 'bridge/mcp-server.cjs';
|
|
12
|
+
|
|
13
|
+
// Ensure output directory exists
|
|
14
|
+
await mkdir('bridge', { recursive: true });
|
|
15
|
+
|
|
16
|
+
await esbuild.build({
|
|
17
|
+
entryPoints: ['src/mcp/standalone-server.ts'],
|
|
18
|
+
bundle: true,
|
|
19
|
+
platform: 'node',
|
|
20
|
+
target: 'node18',
|
|
21
|
+
format: 'cjs',
|
|
22
|
+
outfile,
|
|
23
|
+
// Externalize Node.js built-ins and native modules
|
|
24
|
+
external: [
|
|
25
|
+
'fs', 'path', 'os', 'util', 'stream', 'events',
|
|
26
|
+
'buffer', 'crypto', 'http', 'https', 'url',
|
|
27
|
+
'child_process', 'assert', 'module', 'net', 'tls',
|
|
28
|
+
'dns', 'readline', 'tty', 'worker_threads',
|
|
29
|
+
// Native modules that can't be bundled
|
|
30
|
+
'@ast-grep/napi',
|
|
31
|
+
'better-sqlite3',
|
|
32
|
+
],
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
console.log(`Built ${outfile}`);
|