Resources
Guides
Step-by-step tutorials for common Conductor use cases.
Setting up your first MCP client
BeginnerConnect Claude Code, Cursor, or any MCP client to Conductor in under 5 minutes.
Writing a custom plugin
AdvancedBuild your own plugin with the Plugin interface, configSchema, and tool definitions.
Deploying Conductor on a server
IntermediateRun Conductor as a remote MCP server with HTTP transport for shared team access.
Webhook integrations
IntermediateConnect GitHub, Slack, and other services to trigger Conductor automations.
Database plugin setup
BeginnerConnect to PostgreSQL, SQLite, MySQL, and other databases with full schema access.
Shell plugin security hardening
IntermediateConfigure the command allowlist, approval gates, and sandboxing for production use.
Setting up your first MCP client
Connect any MCP-compatible AI client to Conductor in minutes.
1. Claude Code (CLI)
The fastest way — one command registers Conductor as an MCP server:
claude mcp add conductor -- npx -y @useconductor/conductor2. Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"conductor": {
"command": "npx",
"args": ["-y", "@useconductor/conductor"]
}
}
}3. Cursor
Open Cursor → Settings → Features → MCP Servers and paste:
{
"conductor": {
"command": "npx",
"args": ["-y", "@useconductor/conductor"]
}
}Verify it's working
Ask your AI: “List the files in my current directory using Conductor.” If it uses the filesystem.list tool and returns a result, you're connected.
Writing a custom plugin
Build a Jira integration as an example of the full plugin API.
External plugins live in ~/.conductor/plugins/. Each file exports a default class implementing the Plugin interface. Below is a full Jira plugin example:
// ~/.conductor/plugins/jira.js
export default class JiraPlugin {
name = "jira";
description = "Jira issue management";
version = "1.0.0";
configSchema = {
fields: [
{ key: "baseUrl", label: "Jira base URL", type: "string", required: true },
{ key: "email", label: "Email", type: "string", required: true },
{ key: "apiToken", label: "API Token", type: "string", secret: true, required: true },
],
};
async initialize(conductor) {
const config = await conductor.config.get("jira");
this.client = new JiraClient(config);
}
isConfigured() {
return !!this.client;
}
getTools() {
return [
{
name: "jira.create_issue",
description: "Create a new Jira issue",
inputSchema: {
type: "object",
properties: {
summary: { type: "string", description: "Issue title" },
description: { type: "string", description: "Issue body" },
project: { type: "string", description: "Project key (e.g. ENG)" },
type: { type: "string", enum: ["Bug", "Story", "Task"], default: "Task" },
},
required: ["summary", "project"],
},
handler: async ({ summary, description, project, type }) => {
const issue = await this.client.createIssue({ summary, description, project, type });
return {
content: [{ type: "text", text: `Created: ${issue.key} — ${issue.url}` }],
};
},
},
];
}
}Enable and configure the plugin:
conductor plugins enable jiraEnable the plugin
conductor config setup jiraConfigure credentials (stored in keychain)
conductor plugins status jiraVerify it's active
Deploying on a server
Run Conductor as a shared MCP server accessible over the network.
Start Conductor with HTTP transport. AI clients connect via Server-Sent Events (SSE) instead of stdio.
# Start with HTTP transport
conductor mcp start --transport http --port 3000
# Or as a systemd service
# /etc/systemd/system/conductor.service
[Unit]
Description=Conductor MCP Server
After=network.target
[Service]
ExecStart=/usr/local/bin/conductor mcp start --transport http --port 3000
Restart=always
User=conductor
Environment=CONDUCTOR_LOG_LEVEL=info
[Install]
WantedBy=multi-user.targetConfigure your AI client to connect remotely:
{
"mcpServers": {
"conductor": {
"url": "http://your-server:3000/sse",
"transport": "sse"
}
}
}Security note
When running over HTTP, use a reverse proxy (nginx, Caddy) with TLS and add authentication. Conductor's HTTP endpoints are not authenticated by default.