Content
# MCP-Compose-Proxy-Shim
A bridge that connects local LLM clients (such as Claude Desktop) to remote MCP-Compose servers running in Docker containers.
## 🚀 Overview
MCP-Compose-Proxy-Shim allows you to use containerized MCP servers with LLM clients that expect to run MCP servers locally. It acts as a transparent bridge, intercepting local MCP server calls and redirecting them to a remote MCP-Compose proxy.
**Key benefits:**
- Use Claude Desktop with MCP servers running in Docker containers
- Avoid limitations and costs of paid remote MCP servers
- Leverage all the power and flexibility of Docker-based MCP servers
- Works with filesystem, memory, weather and other MCP servers
This project is designed to integrate with [MCP-Compose](https://github.com/phildougherty/mcp-compose), a tool for running Model Context Protocol (MCP) servers in Docker containers.
## 📋 Requirements
- Node.js v14 or later
- Claude Desktop or another MCP-compatible LLM client
- MCP-Compose running with a proxy (see [MCP-Compose](https://github.com/phildougherty/mcp-compose))
## 🔧 Installation
1. Clone this repository:
```bash
git clone https://github.com/phildougherty/mcp-compose-proxy-shim.git
cd mcp-compose-proxy-shim
```
2. Install dependencies:
```bash
npm install
```
3. Make scripts executable:
```bash
chmod +x bin/npx lib/mcp-shim.js
```
## 🔌 Configuration
### Claude Desktop Configuration
Since the "Import Servers" feature requires a Claude Max plan, you need to manually edit Claude's configuration file:
1. Locate Claude Desktop's configuration directory:
- **macOS**: `~/Library/Application Support/Claude`
- **Windows**: `%APPDATA%\Claude`
- **Linux**: `~/.config/Claude`
2. Create or edit the MCP servers configuration file:
- Create a file called `claude_desktop_config.json` in the configuration directory
- Add the following content (adjust paths to your environment):
```json
{
"mcpServers": {
"filesystem": {
"command": "/absolute/path/to/mcp-compose-proxy-shim/bin/npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/phildougherty/Documents",
"/Users/phildougherty/Downloads"
]
},
"memory": {
"command": "/absolute/path/to/mcp-compose-proxy-shim/bin/npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
```
3. **Important**: Restart Claude Desktop after editing the configuration file.
## 🚀 Usage
### Set Up MCP-Compose First
1. First, make sure [MCP-Compose](https://github.com/phildougherty/mcp-compose) is installed and running:
```bash
cd /path/to/mcp-compose
./mcp-compose up
./mcp-compose proxy
```
This starts the MCP servers in Docker containers and the proxy on port 9876.
### Environment Variables
Before running Claude Desktop, set these environment variables:
| Variable | Description | Default |
|----------|-------------|---------|
| `MCP_PROXY_URL` | URL of the MCP-Compose proxy | `http://localhost:9876` |
| `MCP_API_KEY` | API key for authentication | `""` |
| `MCP_DEBUG` | Enable debug output | `false` |
| `MCP_LOG_LEVEL` | Log level (trace, debug, info, warn, error) | `info` |
| `MCP_CACHE` | Enable response caching | `true` |
| `MCP_CACHE_TTL_MS` | Cache TTL in milliseconds | `300000` (5 min) |
| `MCP_MAX_RETRIES` | Maximum retry attempts | `3` |
| `MCP_LOG_FILE` | Enable logging to file | `false` |
## 🔍 How It Works
1. The `bin/npx` script intercepts calls to MCP servers that Claude would normally make locally
2. Instead of running the actual server, it starts our `lib/mcp-shim.js` script
3. The shim communicates with Claude via stdin/stdout as expected
4. Behind the scenes, it forwards all requests to your MCP-Compose proxy
5. The proxy handles the actual communication with Docker containers
6. Results flow back through the proxy to the shim and then to Claude
## 📝 Logging
Logs are written to:
- Console (stderr) when `MCP_DEBUG=true`
- File at `/tmp/mcp-shim-[server].log` when `MCP_LOG_FILE=true`
## 🔒 Security Features
- Path sanitization to prevent directory traversal
- Rate limiting to prevent abuse
- Request size limiting
- Authentication via API keys
- Secure error handling
## 📚 Related Projects
- [MCP-Compose](https://github.com/phildougherty/mcp-compose): Docker orchestration for MCP servers
- [Model Context Protocol](https://modelcontextprotocol.ai): Official MCP documentation
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a pull request.
## 📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
You Might Also Like
Ollama
Ollama enables easy access to large language models on various platforms.

n8n
n8n is a secure workflow automation platform for technical teams with 400+...
OpenWebUI
Open WebUI is an extensible web interface for customizable applications.

Dify
Dify is a platform for AI workflows, enabling file uploads and self-hosting.

Zed
Zed is a high-performance multiplayer code editor from the creators of Atom.
MarkItDown MCP
markitdown-mcp is a lightweight MCP server for converting various URIs to Markdown.