feat(omo-codex): embed ast-grep MCP for Codex

This commit is contained in:
YeonGyu-Kim
2026-05-28 15:26:18 +09:00
parent 091550b94d
commit 4f75a56ce5
8 changed files with 220 additions and 17 deletions
+6 -1
View File
@@ -1,8 +1,13 @@
{
"mcpServers": {
"ast_grep": {
"command": "node",
"args": ["../../ast-grep-mcp/dist/cli.js", "mcp"],
"cwd": "."
},
"lsp": {
"command": "node",
"args": ["./components/lsp/packages/lsp-tools-mcp/dist/cli.js", "mcp"],
"args": ["../../lsp-tools-mcp/dist/cli.js", "mcp"],
"cwd": "."
}
}
+1 -2
View File
@@ -9,13 +9,12 @@
"components/comment-checker",
"components/rules",
"components/lsp",
"components/lsp/packages/lsp-tools-mcp",
"components/telemetry",
"components/ultragoal",
"components/ultrawork"
],
"scripts": {
"build": "node scripts/sync-skills.mjs && node ../scripts/sync-telemetry-component.mjs && npm run build --workspaces --if-present",
"build": "bun run --cwd ../../ast-grep-mcp build && node scripts/sync-skills.mjs && node ../scripts/sync-telemetry-component.mjs && npm run build --workspaces --if-present",
"check": "npm run build && npm test",
"sync:skills": "node scripts/sync-skills.mjs",
"test": "node --test test/*.test.mjs"
@@ -71,17 +71,29 @@ test("#given aggregate OMO plugin is enabled #when hooks are inspected #then ult
assert.deepEqual(preToolUseGroups.map((group) => group.matcher), ["^create_goal$"]);
});
test("#given aggregate MCP config #when inspected #then lsp server stays component isolated", async () => {
test("#given aggregate MCP config #when inspected #then code MCP servers reuse root MCP packages", async () => {
// given
const packageJson = await readJson("package.json");
const mcp = await readJson(".mcp.json");
// when
const server = mcp.mcpServers.lsp;
const lspServer = mcp.mcpServers.lsp;
const astGrepServer = mcp.mcpServers.ast_grep;
const codeMcpNames = Object.keys(mcp.mcpServers)
.filter((name) => name === "lsp" || name === "ast_grep")
.sort();
// then
assert.equal(server.command, "node");
assert.deepEqual(server.args, ["./components/lsp/packages/lsp-tools-mcp/dist/cli.js", "mcp"]);
assert.equal(server.cwd, ".");
assert.deepEqual(codeMcpNames, ["ast_grep", "lsp"]);
assert.equal(packageJson.workspaces.includes("components/lsp/packages/lsp-tools-mcp"), false);
assert.equal(packageJson.workspaces.includes("components/ast-grep/packages/ast-grep-mcp"), false);
assert.match(packageJson.scripts.build, /ast-grep-mcp/);
assert.equal(lspServer.command, "node");
assert.deepEqual(lspServer.args, ["../../lsp-tools-mcp/dist/cli.js", "mcp"]);
assert.equal(lspServer.cwd, ".");
assert.equal(astGrepServer.command, "node");
assert.deepEqual(astGrepServer.args, ["../../ast-grep-mcp/dist/cli.js", "mcp"]);
assert.equal(astGrepServer.cwd, ".");
});
test("#given aggregate plugin build script #when inspected #then telemetry sync runs before workspace builds", async () => {
@@ -93,7 +105,10 @@ test("#given aggregate plugin build script #when inspected #then telemetry sync
const buildScript = packageJson.scripts.build;
// then
assert.equal(buildScript, "node scripts/sync-skills.mjs && node ../scripts/sync-telemetry-component.mjs && npm run build --workspaces --if-present");
assert.equal(
buildScript,
"bun run --cwd ../../ast-grep-mcp build && node scripts/sync-skills.mjs && node ../scripts/sync-telemetry-component.mjs && npm run build --workspaces --if-present",
);
assert.match(telemetrySyncScript, /syncTelemetryComponent/);
});