Conductor By Thealxlabs
LocalAbout Conductor By Thealxlabs
Conductor is a plugin-based MCP server for MCP-compatible clients and AI agents. It brings tools from multiple plugins behind one connection, with a CLI for setup and features for auditing and handling failures.
Key features
- 01Plugin-based tool integrations
- 02CLI setup and configuration
- 03Secrets stored in OS keychain
- 04Retries and circuit breakers
- 05Tamper-evident audit log
- 06Create custom plugins
Use cases
- 01Access multiple plugins through one MCP connection
- 02Configure Claude Desktop or Cursor
- 03Review and verify tool-call records
- 04Extend the server with custom tools
MCP support
Provides an MCP server over stdio and HTTP/SSE for compatible clients to call plugin tools. Its CLI can start, inspect, and configure the server.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEConductor
One MCP server. 100+ tools. Every AI agent.
Conductor is a single Model Context Protocol server that gives any AI agent — Claude, Cursor, Cline, Copilot, and more — instant access to your entire toolkit through one connection. Install once, configure once, use everywhere.
npm install -g @useconductor/conductor
conductor init
Why Conductor
Most MCP setups mean one server per tool — one for GitHub, one for Slack, one for your database. That's a dozen processes, a dozen configs, and a dozen things to break.
Conductor collapses all of that into a single server with a plugin system, security built in from the start, and a CLI that actually works.
- 100+ tools across 35+ plugins, all in one process
- Zero-config plugins work instantly — no API keys, no setup
- Secrets in the OS keychain — never stored in config files
- Circuit breakers + retry on every tool call — failures don't cascade
- SHA-256 chained audit log — every action recorded, tamper-evident
- One config block in your AI client — that's the whole integration
Quick start
# Install
npm install -g @useconductor/conductor
# First-run wizard — AI provider, plugins, client config
conductor init
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"conductor": {
"command": "conductor",
"args": ["mcp", "start"]
}
}
}
Or skip the manual editing: conductor mcp setup
Cursor / Windsurf / Cline / Continue
Same config block — drop it in .cursor/mcp.json, .codeium/windsurf/mcp_config.json, or your client's MCP config file.
No global install
{
"mcpServers": {
"conductor": {
"command": "npx",
"args": ["-y", "@useconductor/conductor", "mcp", "start"]
}
}
}
Plugins
Needs setup
| Plugin | What it does | Setup |
|---|---|---|
github | Repos, issues, PRs, code search (20 tools) | GITHUB_TOKEN env var |
gmail | Read, compose, send, search, label email | conductor google |
gcal | Events, availability, scheduling | conductor google |
gdrive | Search, read, upload files | conductor google |
notion | Pages, databases, blocks, search | API key |
slack | Messages, channels, search | conductor slack setup |
linear | Issues, projects, cycles | API key |
jira | Issues, projects, sprints | Domain + API token |
stripe | Payments, customers, invoices | Secret key |
docker | Containers, images, volumes, networks | Local Docker socket |
database | Postgres, MySQL queries | Connection URL |
github-actions | Trigger and monitor CI workflows | GITHUB_TOKEN |
vercel | Deployments, logs, projects | API token |
n8n | Trigger workflows, list executions | Base URL + API key |
spotify | Playback, search, playlists | Client ID + secret |
x | Post, search, timeline | API credentials |
homekit | Lights, locks, thermostats via Homebridge | Base URL |
lumen | Smart lighting control | Local setup |
todoist | Tasks, projects, labels | API token |
shell | Run allowlisted shell commands | Enabled by default |
Zero-config (works instantly)
| Plugin | What it does |
|---|---|
calculator | Math expressions, unit conversions, date arithmetic |
colors | Convert hex/RGB/HSL, generate palettes, WCAG contrast |
crypto | Encrypt, decrypt, sign, verify |
hash | SHA-256/MD5/SHA-512, base64, UUID, passwords |
text-tools | JSON format, word count, regex test, case transform |
timezone | Current time in any city, timezone conversion |
url-tools | Expand short links, check status, inspect headers |
network | Ping, DNS lookup, port check, IP info |
system | CPU, memory, disk usage |
weather | Current conditions and forecast by city |
translate | Translate text between languages |
fun | Jokes, trivia, quotes |
notes | Local markdown notes |
memory | Persistent key-value memory across sessions |
cron | Schedule recurring tasks |
CLI reference
Setup
conductor init # First-run wizard
conductor mcp setup # Auto-configure Claude Desktop / Cursor
conductor mcp start # Start MCP server (stdio)
conductor mcp status # Show MCP server status
conductor doctor # Diagnose common issues
conductor health # System health report
conductor health --json # Machine-readable health output
Plugins
conductor plugins list # List all plugins (enabled/disabled)
conductor plugins enable <name> # Enable a plugin
conductor plugins disable <name> # Disable a plugin
conductor onboard # Interactive TUI plugin picker
conductor install <plugin> # Install from marketplace
conductor marketplace # Browse marketplace
conductor marketplace info <plugin> # Plugin details
conductor plugin create <name> # Scaffold a new plugin with tests
Authentication
conductor google # Browser-based Google OAuth (Gmail, Calendar, Drive)
conductor slack setup # Configure Slack bot + app tokens
conductor slack start # Start the Slack bot
conductor telegram setup # Configure Telegram bot token
conductor telegram start # Start the Telegram bot
conductor ai setup # Configure AI provider
conductor ai test # Test current AI provider
Configuration
conductor config list # Show all config keys and values
conductor config get <key> # Get a specific key (e.g. ai.provider)
conductor config set <key> <value> # Set a key (JSON or string)
conductor config path # Print config file path
conductor config export # Dump config as JSON
conductor config validate # Check config structure
conductor config reset # Reset to defaults
Audit log
conductor audit list # List recent entries
conductor audit list --actor user1 # Filter by actor
conductor audit list --result failure # Filter by result
conductor audit verify # Verify SHA-256 chain integrity
conductor audit tail # Stream in real time
conductor audit stats # Summary statistics
conductor audit export -o out.json # Export to file
conductor audit rotate # Manually rotate log file
Circuit breakers
conductor circuit list # Show state of all circuit breakers
conductor circuit reset <tool> # Reset a specific circuit to closed
Autonomous + other
conductor proactive start # Start autonomous reasoning loop
conductor dashboard # Open web dashboard (--port <n>)
conductor release # Bump version and publish to npm
Security model
Every tool call passes through a stack before reaching the handler:
Request
→ Zod input validation (schema-level type safety)
→ RBAC permission check (role-based access control)
→ Circuit breaker (opens after 5 failures, recovers in 30s)
→ Retry with exponential backoff
→ Handler
→ Audit log entry (SHA-256 chained, append-only)
→ Metrics
Secrets are stored in the OS keychain (macOS Keychain, Linux Secret Service, Windows Credential Manager) via @useconductor/conductor's keychain module — never in config.json.
Shell commands go through a strict allowlist. No eval(), no exec() with arbitrary input, no wildcards. The list covers standard dev tools: git, docker, node, npm, curl, psql, and ~50 others.
Destructive tools set requiresApproval: true — the AI agent must explicitly confirm before execution.
Audit log at ~/.conductor/audit/audit.log is JSONL with a SHA-256 chain. Each entry hashes the previous entry's hash + its own content. Verify integrity anytime with conductor audit verify.
Rate limiting on all HTTP endpoints via express-rate-limit.
Architecture
src/
├── cli/ Commander CLI — commands in src/cli/commands/
│ └── commands/ init, mcp, plugins, audit, config, circuit, auth, ...
├── core/ Conductor orchestrator, config, database, audit, retry, circuit-breaker
├── mcp/ MCP server — stdio + HTTP/SSE transports
├── plugins/ Plugin manager, validation, 35 builtin plugins
│ └── builtin/ calculator, github, slack, gmail, docker, shell, ...
├── ai/ Multi-provider AI (Claude, OpenAI, Gemini, Ollama, OpenRouter)
├── bot/ Telegram + Slack bot runtimes
├── dashboard/ Express web dashboard + REST API
└── security/ Keychain, RBAC, auth
Config storage at ~/.conductor/:
| Path | Contents |
|---|---|
config.json | Non-secret settings |
conductor.db | SQLite history + activity log |
audit/audit.log | Tamper-evident audit chain (JSONL) |
plugins/ | External plugin .js files |
.key | Machine-bound AES-256-GCM encryption key |
Writing plugins
Install the SDK for types:
npm install @useconductor/sdk
import type { Plugin, PluginTool } from '@useconductor/sdk';
class MyPlugin implements Plugin {
name = 'my-plugin';
description = 'Does something useful';
version = '1.0.0';
async initialize(): Promise<void> {}
isConfigured(): boolean { return true; }
getTools(): PluginTool[] {
return [
{
name: 'my_tool',
description: 'Explain what this does in one sentence',
inputSchema: {
type: 'object',
properties: {
query: { type: 'string', description: 'The query to process' },
},
required: ['query'],
},
handler: async ({ query }) => {
return { result: `Processed: ${query}` };
},
},
];
}
}
export default new MyPlugin();
Compile to ~/.conductor/plugins/my-plugin.js and it's immediately available.
Scaffold with tests:
conductor plugin create my-plugin
For plugins needing secrets, add a configSchema with secret: true fields — they get stored in the OS keychain automatically.
Programmatic use
import { ConductorClient } from '@useconductor/sdk';
// stdio (local)
const client = new ConductorClient({ transport: 'stdio' });
await client.connect();
const tools = await client.listTools();
const result = await client.callText('calc_math', { expression: 'sqrt(144) + 8' });
console.log(result); // "20"
await client.disconnect();
// HTTP/SSE (remote)
const remote = new ConductorClient({
transport: 'http',
url: 'http://your-conductor-host:3000',
});
Supported clients
Works with any MCP-compatible client:
- Claude Desktop
- Cursor
- Cline (VS Code)
- Windsurf
- Continue.dev
- Zed
- Aider
- Roo Code
- VS Code (GitHub Copilot)
- Any client supporting MCP stdio transport
Contributing
git clone https://github.com/useconductor/conductor
cd conductor
npm install
npm run dev # Watch mode
npm test # Run tests (Vitest)
npm run typecheck # Type check
npm run lint # ESLint (requires Node >= 20.12)
Requirements: Node >= 20.12, npm >= 9.
License
Apache 2.0 — see LICENSE
Built by Alexander Wondwossen and contributors.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.