An MCP (Model Context Protocol) server that exposes Claude Code's file and shell manipulation tools over HTTP, allowing any MCP client to use these tools remotely.
This server provides the following tools:
- bash: Execute shell commands with timeout support and background execution
- bash_output: Retrieve output from background shell processes
- kill_shell: Terminate background shell processes
- read: Read files with line offset/limit support
- write: Write files to disk
- edit: Perform exact string replacements in files
- glob: Find files using glob patterns
- grep: Search file contents using ripgrep (regex support, multiple output modes)
go build -o claude-tools-mcp ./cmd/claude-tools-mcpdocker build -t claude-tools-mcp .
docker run -p 8080:8080 claude-tools-mcpThe Docker image uses a pre-built runtime base image (Dockerfile.runtime) that contains all development tools and dependencies. This runtime image is automatically built and published to GitHub Container Registry (GHCR) whenever Dockerfile.runtime or the workflow file changes.
Benefits:
- Significantly faster builds (only compiles Go binary, not installing all tools)
- Consistent runtime environment across deployments
Building the runtime image locally:
# Build the runtime base image
docker build -f Dockerfile.runtime -t claude-tools-runtime .
# Build the main image using local runtime
docker build -t claude-tools-mcp .The published runtime image is available at: ghcr.io/brwse/claude-tools-mcp-runtime:latest
# Default (localhost:8080)
./claude-tools-mcp
# Custom address
./claude-tools-mcp --addr localhost:9000# Default port (8080)
docker run -p 8080:8080 claude-tools-mcp
# Custom port
docker run -e PORT=9000 -p 9000:9000 claude-tools-mcpThe server runs in stateless mode, allowing each HTTP request to be handled independently. This enables horizontal scaling and simpler deployment.
- Timeout protection: Prevents slowloris attacks with ReadHeaderTimeout and IdleTimeout
- Graceful shutdown: Responds to SIGINT/SIGTERM, allowing in-flight requests to complete
- Path validation: Rejects relative paths to prevent directory traversal
- File size limits: 10MB max file size, ~100k token max output
- Result limits: Maximum 1000 lines for grep/glob results
The server uses the MCP Go SDK to expose tools over HTTP. All tools are stateless except for:
- File modification tracking: Detects when files are edited externally
- Background shell management: Tracks long-running bash processes
See CLAUDE.md for detailed architecture documentation.
# All tests
go test ./...
# Specific package
go test ./internal/tools
# Specific test
go test -run TestFunctionName ./internal/tools- Go 1.25.1+
- MCP Go SDK
- Cobra for CLI
- mimetype for file type detection
- ripgrep (
rg) must be installed for the grep tool
Part of the brwse third-party tools collection.