self-claude-mcp
by sancovp
README.md
# self-claude-mcp
> **Requires [Claude Code](https://claude.ai/download) | [SIGN UP HERE](https://claude.ai/)**
MCP server for Claude Code self-management commands (hot restart, compaction).
## Installation
```bash
pip install self-claude-mcp
```
Add to your Claude MCP config:
```json
{
"mcpServers": {
"self-claude": {
"command": "self-claude-mcp",
"env": {
"AUTOPOIESIS": "1"
}
}
}
}
```
> **Note:** `AUTOPOIESIS=1` is optional. If set, restart messages will remind Claude to enable [autopoiesis-mcp](https://github.com/sancovp/autopoiesis-mcp) (makes Claude loop on purpose). Remove the `env` block if you don't use it.
## Setup
After installing the MCP, Claude needs to install bash scripts for the commands to work.
Ask Claude to run:
```
Use self_claude with setup_only=True and install the scripts
```
Or manually: call `self_claude(cmd="", setup_only=True)` to get the installation instructions.
## Requirements
- **tmux**: Scripts use tmux for session management
- **Claude Code**: Must be running inside a tmux session named "claude"
### Starting Claude in tmux
Use `claude-debug` (installed by setup) or manually:
```bash
tmux -u new-session -d -s claude
tmux send-keys -t claude 'claude --debug' Enter
tmux -u attach -t claude
```
## Usage
Once set up, Claude can use these commands:
| Command | Description |
|---------|-------------|
| `self_claude("self_restart")` | Hot restart with auto-resume |
| `self_claude("self_compact")` | Trigger context compaction |
| `self_claude("", setup_only=True)` | Get installation instructions |
### Hot Restart
Use when MCP configs change and you need to reload without losing conversation:
1. Claude calls `self_claude("self_restart")` → returns `bash self_restart`
2. Claude runs `bash self_restart`
3. Handler sends `/exit`, waits for death, relaunches, sends `/resume`, selects session 1
### Compaction
Use when context is running low:
1. Claude calls `self_claude("self_compact")` → returns `bash self_compact`
2. Claude runs `bash self_compact`
3. Sends `/compact` to the tmux session
## Troubleshooting
### "No tmux session 'claude'"
Make sure Claude Code is running inside a tmux session named "claude":
```bash
tmux -u new-session -s claude
claude --debug
```
### "Handler not found"
Run the setup instructions again:
```
self_claude(cmd="", setup_only=True)
```
Then install the scripts to `/usr/local/bin/`.
### Restart hangs
Check the handler log:
```bash
cat /tmp/claude_restart_handler.log
```
Common issues:
- `pgrep -x "claude"` matches wrong process → verify with `pgrep -x "claude"`
- tmux session died → restart with `claude-debug`
### Docker / Container
If running in a container, make sure:
- tmux is installed: `apt install tmux`
- Scripts are in PATH: `/usr/local/bin/` or `~/.local/bin/`
- Container user can write to `/tmp/`
## Scripts Installed
| Script | Location | Purpose |
|--------|----------|---------|
| `claude-debug` | `/usr/local/bin/` | Start Claude in tmux background |
| `self_restart` | `/usr/local/bin/` | Orchestrator (spawns handler) |
| `claude_restart_handler` | `/usr/local/bin/` | Detached handler (does actual restart) |
| `self_compact` | `/usr/local/bin/` | Trigger compaction |
| `rules` | `/usr/local/bin/` | Manage Claude Code rule files |
### rules command
Manage Claude Code rule files from the command line:
```bash
# Add a rule
rules global my-rules "Always use TypeScript"
rules project api-rules "Use REST conventions"
# List rules
rules show global
rules show project
# Delete a rule
rules delete global my-rules
```
Rules are stored in `~/.claude/rules/` (global) or `./.claude/rules/` (project).
## Environment Variables
| Variable | Description |
|----------|-------------|
| `AUTOPOIESIS=1` | Enable autopoiesis warning in restart message. Requires [autopoiesis-mcp](https://github.com/sancovp/autopoiesis-mcp). |
Set in your shell profile or export before running Claude.
## Security Note
⚠️ **Warning:** You should disallow this MCP on subagents. Subagents running these commands can cause strange interactions.
## License
MIT
TDQS
C2.6/5.0
Scored across 1 tool
Disambiguation5/5
Only one tool exists, so there is no possibility of confusion between tools. The tool's purpose is isolated.
Naming Consistency5/5
With a single tool, naming consistency is trivially perfect. The name 'self_claude' follows a clean snake_case pattern.
Tool Count3/5
A single tool makes for a very thin server, but it could be appropriate if the server is meant to handle a single command. Still, it feels borderline for most practical purposes.
Completeness2/5
The sole tool's description is extremely vague ('Execute self-Claude command'), giving no indication of supported subcommands or operations. Significant gaps likely exist for any meaningful workflow, and agents would struggle to use it effectively.
Maintenance
ActivityInactive
ResponsivenessNo recent community issues