mcp-subagents
Version:
Multi-Agent AI Orchestration via Model Context Protocol - Access specialized CLI AI agents (Aider, Qwen, Gemini, Goose, etc.) with intelligent fallback and configuration
92 lines (87 loc) • 3.34 kB
JavaScript
import { AgentDetector } from './detector.js';
import { AgentRegistry } from './agents/registry.js';
import { AgentManager } from './manager.js';
import { AgentOrchestratorServer } from './server.js';
import { ConfigManager } from './config.js';
import { SERVER_IDENTITY } from './constants.js';
process.title = SERVER_IDENTITY.packageName;
const args = process.argv.slice(2);
// Handle validation command
if (args.includes('--validate')) {
console.log(`🔍 Validating ${SERVER_IDENTITY.displayName} setup...\n`);
const configManager = new ConfigManager();
const detector = new AgentDetector(configManager);
const results = await detector.detectAll();
for (const result of results) {
const icon = result.available ? '✅' : '❌';
console.log(`${icon} ${result.name}`);
if (result.available) {
console.log(` Version: ${result.version || 'unknown'}`);
console.log(` Status: ${result.authStatus}`);
if (result.authStatus !== 'ready') {
console.log(` Setup: ${result.authInstructions}`);
}
}
else {
console.log(` Not installed`);
}
console.log();
}
const readyCount = results.filter(r => r.available && r.authStatus === 'ready').length;
console.log(`\n${readyCount} of ${results.length} agents ready to use.`);
process.exit(0);
}
// Handle help command
if (args.includes('--help') || args.includes('-h')) {
console.log(`
${SERVER_IDENTITY.emoji} ${SERVER_IDENTITY.displayName} v${SERVER_IDENTITY.version}
Orchestrate multiple CLI agents through MCP.
Usage:
${SERVER_IDENTITY.packageName} Start the MCP server
${SERVER_IDENTITY.packageName} --validate Check agent availability
${SERVER_IDENTITY.packageName} --help Show this help message
Environment Variables (automatically passed to all agents):
OPENAI_API_KEY Required for qwen and aider agents
ANTHROPIC_API_KEY Required for aider agent (Claude models)
OPENAI_BASE_URL Optional API base URL for qwen
Note: When used as an MCP server, these can be set in your MCP configuration:
{
"mcpServers": {
"agent-orchestrator": {
"command": "npx",
"args": ["mcp-agent-orchestrator@latest"],
"env": {
"OPENAI_API_KEY": "your-key-here",
"ANTHROPIC_API_KEY": "your-claude-key"
}
}
}
}
For more info: https://github.com/username/${SERVER_IDENTITY.packageName}
`);
process.exit(0);
}
// Start MCP server
async function main() {
try {
// Load configuration first
const configManager = new ConfigManager();
// Detect agents with config access
const detector = new AgentDetector(configManager);
const detectionResults = await detector.detectAll();
// Create registry
const registry = await AgentRegistry.create(detectionResults);
// Create manager
const manager = new AgentManager(registry);
// Create and start server
const server = new AgentOrchestratorServer(manager);
await server.startStdio();
}
catch (error) {
console.error(`Failed to start ${SERVER_IDENTITY.displayName}:`, error);
process.exit(1);
}
}
main().catch(console.error);
//# sourceMappingURL=cli.js.map