Claude Code Manager WAN

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.

Category
Visit Server

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/list and tools/call endpoints 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 claude binary (or a wrapper script) into the container and set CLAUDE_CODE_PATH. A Windows .exe will not run inside the Linux container.
  • Port conflicts: If localhost:8000 is 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_WORKSPACES is 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_COMMAND to wrap or proxy the binary. The skill splits the command with shlex and appends its own arguments (--dangerously-skip-permissions if allow_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_write defaults to false; set it to true only when the agent needs to edit files or run git commands.
  • Use ALLOWED_WORKSPACES to restrict which directories Claude Code can touch.
  • Never expose JWT_SECRET or the skill port publicly.
  • The --dangerously-skip-permissions Claude Code flag is used only when allow_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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured