Claude Code Manager WAN
Enables ISLI agents and MCP clients to dispatch natural-language coding and terminal tasks to a locally-installed Claude Code CLI, supporting both one-shot execution and persistent sessions with workspace and security controls.
README
Claude Code Manager WAN
An ISLI v2.0 skill that lets ISLI agents (Hermes, OpenClaw, ISLI Core) dispatch natural-language coding and terminal tasks to a locally-installed Claude Code CLI. It also exposes those capabilities through an MCP bridge so any MCP client can list and invoke the tools.
What it does
- One-shot execution — run a single task in a workspace directory.
- Persistent sessions — start a long-lived Claude Code process, send follow-up tasks, and inspect its output.
- MCP bridge — expose
tools/listandtools/callendpoints compatible with mcp-cli-adapter / MCPShell.
ISLI v2.0 endpoints
| Method | Path | Tool name |
|---|---|---|
| GET | /health |
health check |
| GET | /.well-known/isli-manifest |
manifest |
| POST | /execute |
claude_code_execute |
| POST | /session/start |
claude_code_session_start |
| POST | /session/send |
claude_code_session_send |
| POST | /session/status |
claude_code_session_status |
| POST | /session/stop |
claude_code_session_stop |
| POST | /mcp/v1/tools/list |
mcp_tools_list |
| POST | /mcp/v1/tools/call |
mcp_tools_call |
All endpoints except /health and /.well-known/isli-manifest require a valid X-Internal-Auth JWT signed with JWT_SECRET.
Quick start
1. Install Claude Code locally
This skill assumes the claude binary is available on the host. Install or locate it, then note the path.
2. Build and run the skill
docker build -t claude-code-manager-wan .
docker run -d \
--name claude-code-manager-wan \
--network isli_default \
-p 8000:8000 \
-e JWT_SECRET=your-jwt-secret \
-e CLAUDE_CODE_PATH=/usr/local/bin/claude \
-e CLAUDE_CODE_TIMEOUT_SECONDS=120 \
-v /path/to/claude:/usr/local/bin/claude:ro \
-v /path/to/your/workspaces:/workspaces:rw \
claude-code-manager-wan
3. Test health
curl http://localhost:8000/health
4. Execute a task
curl -X POST http://localhost:8000/execute \
-H "Content-Type: application/json" \
-H "X-Internal-Auth: $(python -c "import jwt; print(jwt.encode({}, 'your-jwt-secret', algorithm='HS256'))")" \
-d '{
"workspace": "/workspaces/my-project",
"task": "List the files in this directory",
"allow_write": false,
"timeout_seconds": 60
}'
Docker notes
- Claude Code binary: The image does not include Claude Code. Mount a Linux-compatible
claudebinary (or a wrapper script) into the container and setCLAUDE_CODE_PATH. A Windows.exewill not run inside the Linux container. - Port conflicts: If
localhost:8000is already in use, map a different host port (e.g.,-p 8001:8000) and adjust your test URLs. - Workspaces: Mount the directories you want Claude Code to operate on as volumes. The skill validates that the workspace exists and, if
ALLOWED_WORKSPACESis set, that it is within an allowed prefix. - Integration test fixtures: The
tests/mock-claude*files provide a minimal fake Claude CLI for validating the skill in CI/Docker without a real Anthropic account. - Custom launch command: Use
CLAUDE_CODE_LAUNCH_COMMANDto wrap or proxy the binary. The skill splits the command with shlex and appends its own arguments (--dangerously-skip-permissionsifallow_write=true,-p <task>for one-shot mode). Examples:ollama launch claude --model glm-5.2:cloud/usr/local/bin/claude-wrapper --agent hermes
Environment variables
| Variable | Default | Description |
|---|---|---|
JWT_SECRET |
— | Required. Secret used to verify X-Internal-Auth JWTs from ISLI Core. |
CLAUDE_CODE_PATH |
claude |
Path to the Claude Code binary. Used when CLAUDE_CODE_LAUNCH_COMMAND is not set. |
CLAUDE_CODE_LAUNCH_COMMAND |
— | Optional full launcher command. Overrides CLAUDE_CODE_PATH and lets you wrap or replace the binary invocation, e.g. ollama launch claude --model glm-5.2:cloud. |
CLAUDE_CODE_TIMEOUT_SECONDS |
120 |
Default subprocess timeout. |
ALLOWED_WORKSPACES |
— | Optional comma-separated list of allowed workspace directory prefixes. Empty = no restriction. |
MAX_CONCURRENT_SESSIONS |
10 |
Maximum number of persistent Claude Code sessions. |
LOG_LEVEL |
INFO |
Logging level. |
Persistent sessions
Start a session:
curl -X POST http://localhost:8000/session/start \
-H "Content-Type: application/json" \
-H "X-Internal-Auth: ..." \
-d '{"session_id":"proj-a","workspace":"/workspaces/my-project","allow_write":true}'
Send follow-up tasks:
curl -X POST http://localhost:8000/session/send \
-H "Content-Type: application/json" \
-H "X-Internal-Auth: ..." \
-d '{"session_id":"proj-a","task":"Create a README.md"}'
Check status:
curl -X POST http://localhost:8000/session/status \
-H "Content-Type: application/json" \
-H "X-Internal-Auth: ..." \
-d '{"session_id":"proj-a","tail_lines":50}'
Stop:
curl -X POST http://localhost:8000/session/stop \
-H "Content-Type: application/json" \
-H "X-Internal-Auth: ..." \
-d '{"session_id":"proj-a","force":false}'
MCP bridge
The /mcp/v1/tools/list and /mcp/v1/tools/call endpoints follow the Model Context Protocol shape. Configure Hermes or OpenClaw with mcp-cli-adapter pointing to this skill's HTTP endpoint and passing the X-Internal-Auth header.
Example tools/list response:
{
"tools": [
{
"name": "claude_code_execute",
"description": "Run a one-shot natural-language task through Claude Code...",
"inputSchema": { "type": "object", "required": ["workspace", "task"], "properties": { ... } }
}
]
}
Example tools/call:
curl -X POST http://localhost:8000/mcp/v1/tools/call \
-H "Content-Type: application/json" \
-H "X-Internal-Auth: ..." \
-d '{
"name": "claude_code_execute",
"arguments": {
"workspace": "/workspaces/my-project",
"task": "Show git status",
"allow_write": false
}
}'
Security
allow_writedefaults tofalse; set it totrueonly when the agent needs to edit files or run git commands.- Use
ALLOWED_WORKSPACESto restrict which directories Claude Code can touch. - Never expose
JWT_SECRETor the skill port publicly. - The
--dangerously-skip-permissionsClaude Code flag is used only whenallow_write=true.
Registering in ISLI
Add this entry to medelmouhajir/isli-skills-registry/index.json:
{
"id": "claude-code-manager-wan",
"name": "Claude Code Manager WAN",
"description": "Control Claude Code from ISLI agents. Dispatch one-shot and persistent terminal/coding tasks, and expose them via an MCP bridge.",
"author": "ISLI AI",
"git_url": "https://github.com/medelmouhajir/claude-code-manager-wan",
"tags": ["automation", "claude-code", "mcp", "terminal", "coding"],
"version": "v1.0.0"
}
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.