@axiomatic-labs/claudeflow 2.9.78 → 2.9.80
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/lib/install.js +54 -38
- package/package.json +1 -1
package/lib/install.js
CHANGED
|
@@ -268,55 +268,71 @@ function installAnalysisTools() {
|
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
-
// 3.
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
271
|
+
// 3. Write MCP servers directly to .mcp.json (more reliable than claude mcp add)
|
|
272
|
+
configureMcpServers(hasUv);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Write Serena and context7 MCP configs directly to .mcp.json.
|
|
276
|
+
// This is more reliable than `claude mcp add` which can misparse flags.
|
|
277
|
+
function configureMcpServers(hasUv) {
|
|
278
|
+
const cwd = process.cwd();
|
|
279
|
+
const mcpPath = path.join(cwd, '.mcp.json');
|
|
280
|
+
|
|
281
|
+
// Read existing .mcp.json or start fresh
|
|
282
|
+
let mcpConfig = { mcpServers: {} };
|
|
283
|
+
try {
|
|
284
|
+
const existing = fs.readFileSync(mcpPath, 'utf8');
|
|
285
|
+
mcpConfig = JSON.parse(existing);
|
|
286
|
+
if (!mcpConfig.mcpServers) mcpConfig.mcpServers = {};
|
|
287
|
+
} catch {
|
|
288
|
+
// File doesn't exist or is invalid — start fresh
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
let changed = false;
|
|
282
292
|
|
|
283
|
-
|
|
293
|
+
// Serena MCP (requires uv)
|
|
294
|
+
if (hasUv) {
|
|
295
|
+
if (mcpConfig.mcpServers.serena) {
|
|
284
296
|
ui.success('Serena MCP already configured');
|
|
285
297
|
} else {
|
|
286
298
|
ui.step('Adding Serena MCP for semantic code analysis...');
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
299
|
+
const uvBin = resolveUvBin();
|
|
300
|
+
mcpConfig.mcpServers.serena = {
|
|
301
|
+
type: 'stdio',
|
|
302
|
+
command: 'uvx',
|
|
303
|
+
args: [
|
|
304
|
+
'--python', '3.13',
|
|
305
|
+
'--from', 'git+https://github.com/oraios/serena',
|
|
306
|
+
'serena', 'start-mcp-server',
|
|
307
|
+
'--context', 'claude-code',
|
|
308
|
+
'--project', cwd,
|
|
309
|
+
],
|
|
310
|
+
};
|
|
311
|
+
changed = true;
|
|
312
|
+
ui.success('Serena MCP configured');
|
|
298
313
|
}
|
|
299
314
|
}
|
|
300
315
|
|
|
301
|
-
//
|
|
302
|
-
|
|
303
|
-
try {
|
|
304
|
-
const mcpList = execSync('claude mcp list', { stdio: 'pipe', encoding: 'utf8', timeout: 10000 });
|
|
305
|
-
context7Configured = mcpList.includes('context7');
|
|
306
|
-
} catch {}
|
|
307
|
-
|
|
308
|
-
if (context7Configured) {
|
|
316
|
+
// context7 MCP
|
|
317
|
+
if (mcpConfig.mcpServers.context7) {
|
|
309
318
|
ui.success('context7 MCP already configured');
|
|
310
319
|
} else {
|
|
311
320
|
ui.step('Adding context7 MCP for library documentation...');
|
|
321
|
+
mcpConfig.mcpServers.context7 = {
|
|
322
|
+
type: 'stdio',
|
|
323
|
+
command: 'npx',
|
|
324
|
+
args: ['-y', '@upstash/context7-mcp@latest'],
|
|
325
|
+
};
|
|
326
|
+
changed = true;
|
|
327
|
+
ui.success('context7 MCP configured');
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// Write .mcp.json if anything changed
|
|
331
|
+
if (changed) {
|
|
312
332
|
try {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
});
|
|
317
|
-
ui.success('context7 MCP configured');
|
|
318
|
-
} catch {
|
|
319
|
-
ui.warn('context7 setup failed — research will use WebSearch fallback');
|
|
333
|
+
fs.writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2) + '\n');
|
|
334
|
+
} catch (e) {
|
|
335
|
+
ui.warn(`Could not write .mcp.json: ${e.message}`);
|
|
320
336
|
}
|
|
321
337
|
}
|
|
322
338
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axiomatic-labs/claudeflow",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.80",
|
|
4
4
|
"description": "Claudeflow — AI-powered development toolkit for Claude Code. Skills, agents, hooks, and quality gates that ship production apps.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"claudeflow": "./bin/cli.js"
|