Principles
Mcpjungle follows minimalism. When implementing a feature or fixing an issue, prefer the least amount of change required to ship something that works well without breaking other behavior. Improvements beyond that should be guided by user feedback, not by the urge to add complexity.Architecture overview
Mcpjungle consists of several main components:- CLI: command-line interface for managing MCP servers and tools in
cmd/ - HTTP API: REST API for management workflows in
internal/api/ - MCP Gateway server: MCP protocol handling in
internal/service/mcp/ - Database layer: SQLite and PostgreSQL persistence in
internal/db/
Codebase entry points
Good places to orient yourself:Building and testing
Local development build
Running tests
Linting
Mcpjungle usesgolangci-lint.
Development environment setup
Prerequisites
- Go 1.21 or later
- Docker and Docker Compose
- SQLite3 for local development
- Node.js if you want to use MCP Inspector
Quick start
Database development
SQLite
When running with SQLite, you can inspect the local database usingsqlite3:
mcp.db files if they exist, but new databases are created as mcpjungle.db.
PostgreSQL
When running with Docker Compose, you can inspect PostgreSQL through pgAdmin:- Open
http://localhost:5050 - Log in with username
admin@admin.comand passwordadmin - Add a database server with:
- Host:
db - Port:
5432 - Username:
mcpjungle - Password:
mcpjungle - Database:
mcpjungle
- Host:
MCP server testing
MCP Inspector is useful when testing and debugging MCP interactions:Docker filesystem access
When running Mcpjungle in Docker, the filesystem MCP server needs special configuration to access the host machine filesystem. The Compose files mount the host filesystem at/host inside the container.
Key points
- The host filesystem is mounted at
/hostinside the container - Use
/hostas the root path in the filesystem MCP server config - The mount is read-only by default for safety
Example filesystem MCP configuration
Mounting specific directories
Instead of mounting everything, you can narrow the volume mounts indocker-compose.yaml:
Release process
Creating a release
- Create and push a tag:
- Release with goreleaser:
Troubleshooting
Common issues:- Build failures: check Go version and dependencies
- Database connection problems: verify PostgreSQL or SQLite access
- MCP registration failures: verify the upstream server is reachable
- Docker filesystem access issues: verify the
/hostmount
Getting help
- Check GitHub Issues
- Join Discord
- Open a GitHub Discussion for design or workflow questions
