A lightweight deployment configuration for MetaMCP with custom dependencies.
This repository contains a minimal setup for deploying MetaMCP with custom dependencies:
- Dockerfile: Extends the official MetaMCP image (
ghcr.io/metatool-ai/metamcp:latest) with additional tools - docker-compose.yml: Production deployment configuration
- GitHub Actions: Automated builds and pushes to
ghcr.io/drejom/metamcp:latest
This setup adds the following to the base MetaMCP image:
- Tailscale CLI for secure networking
- PostgreSQL client tools for database operations
The core MetaMCP functionality comes from the official upstream image, ensuring you automatically receive updates and improvements.
-
Copy
example.envto.envand configure your environment variables:cp example.env .env
-
Deploy with Docker Compose:
docker-compose up -d
GitHub Actions automatically:
- Builds the custom Dockerfile when you push to
mainor create version tags - Pushes the resulting image to
ghcr.io/drejom/metamcp:latest - Can be deployed via Dokploy or any container orchestration system
This lightweight approach provides several benefits over maintaining a full fork:
- Automatic upstream updates: Base MetaMCP improvements are inherited automatically
- Minimal maintenance: Only need to manage your specific customizations
- Fast builds: Only installing additional dependencies, not rebuilding the entire application
- Clear separation: Your customizations vs upstream MetaMCP code
MetaMCP is a powerful MCP proxy that aggregates multiple MCP servers into a unified interface. For complete documentation, features, and usage instructions, visit:
- Documentation: https://docs.metamcp.com
- Official Repository: https://github.com/metatool-ai/metamcp
- Discord Community: https://discord.gg/mNsyat7mFX
Claude Code stores MCP server configurations in ~/.claude.json. You can configure MetaMCP in several ways:
-
Global configuration (recommended - available across all projects): Edit
~/.claude.jsonand add to themcpServerssection:{ "mcpServers": { "metamcp": { "type": "stdio", "command": "npx", "args": ["@drejom/metamcp", "http://your-metamcp-url:port", "YOUR_API_KEY"] } } } -
Project-level configuration (shared with team): Create a
.mcp.jsonfile in your project root:{ "mcpServers": { "metamcp": { "command": "npx", "args": ["@drejom/metamcp", "http://your-metamcp-url:port", "YOUR_API_KEY"] } } } -
Using Claude Code CLI:
# Add MetaMCP server globally (user scope) claude mcp add metamcp --scope user -- npx @drejom/metamcp http://your-metamcp-url:port YOUR_API_KEY # Or for project scope (creates .mcp.json) claude mcp add metamcp --scope project -- npx @drejom/metamcp http://your-metamcp-url:port YOUR_API_KEY
Note: MetaMCP should use stdio transport, not HTTP transport, for proper tool exposure.
For Claude Desktop, edit the configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Add MetaMCP to the mcpServers section:
{
"mcpServers": {
"metamcp": {
"command": "npx",
"args": ["@drejom/metamcp", "http://your-metamcp-url:port", "YOUR_API_KEY"]
}
}
}For secure API key management:
- Claude Code: Use
--envflag or add to.mcp.json - Claude Desktop: Set in your shell profile or use the
envfield in config
MIT - Same as the upstream MetaMCP project.