Skip to main content
Glama
sancovp

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 issues