MCP-Native Enterprise Integration Hub
MCP-Native Enterprise Integration Hub
Überblick
Eine kontrollierte KI-Agentenplattform, die GitHub Issues, Jira und Slack als MCP-Server (Model Context Protocol) bereitstellt. Ein LangGraph-Orchestrierungsagent leitet Anfragen in natürlicher Sprache durch Pydantic-validierte Toolschemas; alle Schreiboperationen müssen vor der Ausführung einen obligatorischen HITL-Genehmigungs-Checkpoint passieren. Jede Agentenentscheidung, jeder Tool-Aufruf und jedes Aktionsergebnis wird für die vollständige Audit-Trail in PostgreSQL gespeichert. Die semantische Suche von PGVector zeigt relevante historische Aktionen, bevor jede neue Aktion geplant wird.
Related MCP server: GitHub Flow MCP
Architektur
graph TD
User -->|POST /agent/run| FastAPI
FastAPI --> LangGraph
LangGraph --> ParseIntent
ParseIntent --> RetrieveSimilar
RetrieveSimilar -->|PGVector| PostgreSQL
RetrieveSimilar --> PlanAction
PlanAction --> HITLGate
HITLGate -->|Write op| HITLApproval[(PostgreSQL HITLApproval)]
HITLGate -->|Read op| ExecuteAction
ExecuteAction --> GitHubMCP
ExecuteAction --> JiraMCP
ExecuteAction --> SlackMCP
ExecuteAction --> LogRun
LogRun --> PostgreSQLErforderliche OAuth-Scopes
Slack: channels:read, channels:history, chat:write
GitHub: repo (für private Repos) oder public_repo
Jira: read:jira-work, write:jira-work
Einrichtung
# 1. Clone and enter the project
git clone <repo-url> mcp-enterprise-hub
cd mcp-enterprise-hub
# 2. Create and activate a virtual environment
python3 -m venv venv
source venv/bin/activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Configure environment variables
cp .env.example .env
# Edit .env and fill in: ANTHROPIC_API_KEY, OPENAI_API_KEY, GITHUB_TOKEN,
# JIRA_API_TOKEN, JIRA_EMAIL, JIRA_BASE_URL, SLACK_BOT_TOKEN
# 5. Start PostgreSQL (with pgvector)
docker compose up -d postgres
# 6. Initialize the database schema
python src/db/init_db.py
# 7. Run the API server
uvicorn src.api.main:app --reload
# 8. (Optional) Run the test suite
docker compose up -d postgres # test DB is created automatically on first run
pytest --cov=src --cov-report=term-missing tests/Hinweis zum Portkonflikt: Wenn Sie bereits eine lokale Postgres-Instanz auf Port 5432 laufen haben (häufig unter macOS über Homebrew oder Postgres.app), kann das Port-Mapping von Docker den Wettlauf um diesen Port stillschweigend verlieren —
docker compose up -dmeldet den Container zwar als gesund, aberlocalhost:5432leitet tatsächlich zu Ihrem nativen Postgres, der nicht über die Rolle/Datenbankmcp_enterprise_hubverfügt und mitFATAL: role "postgres" does not existoder ähnlich fehlschlägt. Stoppen Sie entweder den lokalen Postgres-Dienst oder mappen Sie den Container auf einen freien Port, indem Sie einedocker-compose.override.ymlverwenden:services: postgres: ports: - "5433:5432"und aktualisieren Sie
DATABASE_URL/TEST_DATABASE_URLin.env, um Port5433zu verwenden.
Beispiel-API-Aufrufe
1. Leseoperation (GitHub-Issues auflisten) — wird sofort abgeschlossen:
curl -X POST http://localhost:8000/agent/run \
-H "Content-Type: application/json" \
-d '{"message": "list open issues in octo/hello"}'{
"status": "completed",
"result": {
"issues": [
{"id": 1, "number": 42, "title": "Login button unresponsive", "state": "open", "url": "https://github.com/octo/hello/issues/42"}
],
"metadata": {"is_write": false, "connector": "github", "tool_name": "list_issues"}
},
"run_id": "6a9b1a2e-4c9b-4c1e-9c0e-7a1f2b3c4d5e",
"session_id": "d1e2f3a4-5b6c-7d8e-9f0a-1b2c3d4e5f6a"
}2. Schreiboperation (Jira-Ticket anlegen) — gibt pending_approval zurück:
curl -X POST http://localhost:8000/agent/run \
-H "Content-Type: application/json" \
-d '{"message": "create a Jira ticket in project ABC titled '\''Login button unresponsive on mobile'\''"}'{
"status": "pending_approval",
"approval_id": "9f8e7d6c-5b4a-3c2d-1e0f-a1b2c3d4e5f6",
"action_plan": {
"connector": "jira",
"tool_name": "create_issue",
"validated_params": {
"project_key": "ABC",
"summary": "Login button unresponsive on mobile",
"description": "Login button unresponsive on mobile",
"issue_type": "Bug"
},
"is_write_operation": true,
"risk_level": "medium"
},
"session_id": "d1e2f3a4-5b6c-7d8e-9f0a-1b2c3d4e5f6a"
}3. Schreibvorgang genehmigen — führt den Vorgang aus und gibt das Ergebnis zurück:
curl -X POST http://localhost:8000/agent/approve/9f8e7d6c-5b4a-3c2d-1e0f-a1b2c3d4e5f6 \
-H "Content-Type: application/json" \
-d '{"reviewer_notes": "Looks good, approved"}'{
"status": "approved",
"result": {
"key": "ABC-123",
"url": "https://your-domain.atlassian.net/browse/ABC-123",
"metadata": {"is_write": true, "connector": "jira", "tool_name": "create_issue"}
},
"run_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
}Testergebnisse
$ pytest --cov=src --cov-report=term-missing tests/
collected 52 items
tests/test_agent.py ............. [ 25%]
tests/test_api.py .................. [ 59%]
tests/test_mcp_servers.py ..................... [100%]
================================ tests coverage ================================
Name Stmts Miss Cover Missing
----------------------------------------------------------------
src/__init__.py 0 0 100%
src/agent/__init__.py 0 0 100%
src/agent/hitl.py 29 1 97% 33
src/agent/state.py 13 0 100%
src/agent/workflow.py 189 5 97% 108, 263-266
src/api/__init__.py 0 0 100%
src/api/main.py 209 3 99% 150-152
src/db/__init__.py 0 0 100%
src/db/database.py 16 0 100%
src/db/init_db.py 16 16 0% 1-24
src/db/models.py 60 0 100%
src/db/vector_search.py 7 0 100%
src/mcp_servers/__init__.py 0 0 100%
src/mcp_servers/common.py 11 0 100%
src/mcp_servers/github_server.py 95 3 97% 7, 175-177
src/mcp_servers/jira_server.py 81 3 96% 7, 168-170
src/mcp_servers/slack_server.py 86 4 95% 7, 144, 161-163
----------------------------------------------------------------
TOTAL 812 35 96%
52 passed in 2.92sHITL-Blockrate (gemessen anhand der persistierten Testdatenbank nach einem vollständigen Suite-Lauf, vor der Bereinigung pro Testlauf):
Metrik | Anzahl |
Läufe mit Schreibabsicht, die an | 9 |
Läufe, in denen | 9 / 9 (100%) |
Tatsächliche MCP-Toolausführungen, die in | 4 |
Davon ohne vorherige | 0 |
Abgelehnte und nie ausgeführte Schreibvorgänge | 2 |
Jeder Testlauf mit Schreiboperation wurde vom HITL-Gate abgefangen, bevor ein MCP-Toolaufruf ausgelöst werden konnte; keine Ausführung erreichte AuditLog ohne eine passende APPROVED-HITLApproval-Zeile.
Zusammenfassungs-Metriken (zur Referenz)
19 Agentenläufe wurden während der Tests in PostgreSQL persistiert
Mehr als 85 % Testabdeckung in den Schichten der MCP-Server, der Agenten und der API
HITL hat 100 % der Schreiboperationen in der Test-Suite abgefangen (0 nicht überprüfte Schreibvorgänge ausgeführt)
This 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.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server that equips AI agents with dev workflow tools including GitHub project management, conventional commits, visual regression testing, Jira/Confluence integration, and a persistent memory knowledge graph.25MIT
- AlicenseCqualityBmaintenanceA policy-aware MCP server for GitHub and GitHub Actions that enables safe AI-assisted infrastructure workflows—inspecting repositories, preparing branches and pull requests, and constrained remote mutations behind explicit preview-bound approval tokens.18MIT
- AlicenseNot gradedqualityBmaintenanceA production-grade MCP server that provides LLMs with safe, structured, tool-based access to GitHub repositories, including issue management, semantic search, and guarded write operations.MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP-native agentic platform orchestrating planner/executor/critic agents over hybrid RAG with three-tier memory, budget enforcement, safety guardrails, and full observability. It exposes all capabilities as MCP tools, enabling natural-language control of document ingestion, retrieval-augmented generation, and multi-step AI workflows.MIT
Related MCP Connectors
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/varunk61/mcp-enterprise-hub'
If you have feedback or need assistance with the MCP directory API, please join our Discord server