MCP server for coordinating Claude Code instances across multiple projects
Project description
Claude Control
MCP server that lets a Claude Code session coordinate with Claude Code instances running in other project directories.
How It Works
Claude Control is an MCP server (stdio transport) that exposes tools for dispatching prompts to Claude Code instances in configured project directories. Each remote instance:
- Runs as a persistent subprocess with conversation context preserved across calls
- Loads the target project's own
CLAUDE.md,.mcp.json, hooks, and settings - Runs with
bypassPermissionsfor fully autonomous operation
Installation
From PyPI
pip install claude-control
Or with uv:
uv tool install claude-control
From Source
git clone https://github.com/redducklabs/claude-control.git
cd claude-control
pip install .
Setup
1. Configure Projects
Create a projects.json file (see projects.json.example):
{
"projects": [
{
"name": "my-backend",
"path": "D:\\repos\\my-backend",
"description": "Backend API service"
},
{
"name": "my-frontend",
"path": "D:\\repos\\my-frontend",
"description": "Frontend web application"
}
]
}
2. Register as an MCP Server
Add to the .mcp.json of the project where you want coordination tools available.
Using uvx (recommended — no global install needed):
{
"mcpServers": {
"claude_control": {
"command": "uvx",
"args": ["claude-control"],
"env": {
"CLAUDE_CONTROL_PROJECTS": "/path/to/your/projects.json"
}
}
}
}
Using a pip install:
{
"mcpServers": {
"claude_control": {
"command": "claude-control",
"env": {
"CLAUDE_CONTROL_PROJECTS": "/path/to/your/projects.json"
}
}
}
}
Using python -m:
{
"mcpServers": {
"claude_control": {
"command": "python",
"args": ["-m", "claude_control"],
"env": {
"CLAUDE_CONTROL_PROJECTS": "/path/to/your/projects.json"
}
}
}
}
3. Restart Claude Code
The tools will appear as mcp__claude_control__send_command, mcp__claude_control__list_projects, etc.
Tools
send_command
Send a prompt to a Claude Code instance in the specified project directory.
| Parameter | Type | Description |
|---|---|---|
project |
string | Project name (from projects.json) |
prompt |
string | The prompt to send |
Returns the full text response from the remote instance. Sessions persist across calls — follow-up prompts have access to prior context.
list_projects
List all configured projects with their paths, descriptions, and session status.
reset_session
Tear down a project's Claude Code session. The next send_command call creates a fresh session with no prior context.
| Parameter | Type | Description |
|---|---|---|
project |
string | Project name to reset |
get_session_status
Check whether a project has an active session, its ID, and turn count.
| Parameter | Type | Description |
|---|---|---|
project |
string | Project name to check |
Dependencies
- Python >= 3.11
claude-code-sdk >= 0.0.25mcp >= 1.12.0- Claude Code CLI installed and on PATH
Configuration
The CLAUDE_CONTROL_PROJECTS environment variable points to your projects.json. If unset, defaults to projects.json in the package's parent directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claude_control-0.2.1.tar.gz.
File metadata
- Download URL: claude_control-0.2.1.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c266bcb963ea86ab07f1e84519cd51801eee1e40cf73d89a0ef0b1e9bc67346
|
|
| MD5 |
ed7e98caf83eac1780617b2bd71c74fd
|
|
| BLAKE2b-256 |
da9efbdcf2030b6827b0b0e5d85620a84938378f23aa7b740ba774a0d0ccc777
|
Provenance
The following attestation bundles were made for claude_control-0.2.1.tar.gz:
Publisher:
publish-python.yml on redducklabs/claude-control
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claude_control-0.2.1.tar.gz -
Subject digest:
0c266bcb963ea86ab07f1e84519cd51801eee1e40cf73d89a0ef0b1e9bc67346 - Sigstore transparency entry: 1353671689
- Sigstore integration time:
-
Permalink:
redducklabs/claude-control@656f268a78195237ea5508e4ea237f89500a7771 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/redducklabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
self-hosted -
Publication workflow:
publish-python.yml@656f268a78195237ea5508e4ea237f89500a7771 -
Trigger Event:
release
-
Statement type:
File details
Details for the file claude_control-0.2.1-py3-none-any.whl.
File metadata
- Download URL: claude_control-0.2.1-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
488ec7a5e4f098204f0accfbce98fbec92465c2a4240e546fb5e812e3d6240de
|
|
| MD5 |
0b8e1d0995ab17f5fd45f4f492c956c7
|
|
| BLAKE2b-256 |
79816d20b595b8aee7c8ebf9023d338d84e8dc7b900561172d80781817e5543a
|
Provenance
The following attestation bundles were made for claude_control-0.2.1-py3-none-any.whl:
Publisher:
publish-python.yml on redducklabs/claude-control
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claude_control-0.2.1-py3-none-any.whl -
Subject digest:
488ec7a5e4f098204f0accfbce98fbec92465c2a4240e546fb5e812e3d6240de - Sigstore transparency entry: 1353671780
- Sigstore integration time:
-
Permalink:
redducklabs/claude-control@656f268a78195237ea5508e4ea237f89500a7771 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/redducklabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
self-hosted -
Publication workflow:
publish-python.yml@656f268a78195237ea5508e4ea237f89500a7771 -
Trigger Event:
release
-
Statement type: