devhub-mcp
Provides tools for searching and managing code reviews, including viewing changes, diffs, projects, and performing review actions like posting reviews, adding reviewers, and submitting changes.
Provides tools for browsing and searching OpenDev repositories, including listing branches, file contents, commits, and organizations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@devhub-mcpsearch for openstack repos with topic 'network'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DevHub MCP Server
Unified MCP gateway. All developer tools exposed as a single MCP stdio endpoint via Docker.
Architecture
main.py — Master gateway (single MCP stdio process)
mcp_servers/
middleware.py — Aggregates local sub-server tools into hub
proxy.py — Proxies remote MCP servers into hub
gerrit.py — OpenDev/Gerrit (direct API, runs standalone too)
jenkins.py — Jenkins CI (direct API, runs standalone too)Tool Sources
Source | Tools | Method |
Gerrit/Gitea | 21 | Direct API calls |
Jenkins | 17 | Direct API calls |
Confluence | 11 | Proxied from remote MCP server |
Jira | 19 | Proxied from remote MCP server |
Excalidraw | 5 | Proxied from remote MCP server |
healthz | 1 | Built-in |
Total | 74 |
Related MCP server: Gerrit MCP Server
Secrets
All secrets stored in ~/.secrets and sourced into shell:
# ~/.secrets
export GERRIT_USER="your-user"
export GERRIT_HTTP_PASSWORD="your-pass"
export JENKINS_URL="http://jenkins.example.com/"
export JENKINS_USER="your-user"
export JENKINS_API_TOKEN="your-token"Source before use: source ~/.secrets
No secrets needed for Confluence, Jira, or Excalidraw — they're proxied from public MCP endpoints that handle their own auth.
Quick Start
source ~/.secrets
make build
make test-dockerMakefile
make build # Build Docker image
make run # Run gateway (stdio)
make up # docker compose up -d
make down # docker compose down
make test # Tests locally
make test-docker # Tests in container
make healthz # Health check
make lint # Lint all files
make clean # Remove image
make help # Show targetsMCP Client Config
Kiro (~/.kiro/settings/mcp.json)
{
"mcpServers": {
"gateway": {
"command": "docker",
"args": ["compose", "-f", "/path/to/docker-compose.yml", "run", "--rm", "-i", "gateway"],
"env": {
"GERRIT_USER": "${GERRIT_USER}",
"GERRIT_HTTP_PASSWORD": "${GERRIT_HTTP_PASSWORD}",
"JENKINS_URL": "${JENKINS_URL}",
"JENKINS_USER": "${JENKINS_USER}",
"JENKINS_API_TOKEN": "${JENKINS_API_TOKEN}"
},
"type": "stdio",
"timeout": 120000
}
}
}Adding a New Sub-Server
Local (direct API):
Create
mcp_servers/myservice.pywithmcp = FastMCP("myservice")and@mcp.tool()functionsIn
main.py:load_subserver(hub_mcp, myservice_mcp, namespace="myservice")
Remote (proxy from existing MCP server):
In
main.py, add URL toREMOTE_SERVERSdictThat's it — tools are discovered and proxied automatically
Standalone Mode
Each local sub-server runs independently:
python mcp_servers/gerrit.py
python mcp_servers/jenkins.pyThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jabhishek87/devhub-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server