Skip to main content
Glama
varunk61

MCP-Native Enterprise Integration Hub

by varunk61

MCP-Native Enterprise Integration Hub

Обзор

Управляемая платформа AI-агентов, которая предоставляет GitHub Issues, Jira и Slack в виде MCP-серверов (Model Context Protocol). Оркестрационный агент на LangGraph маршрутизирует запросы на естественном языке через Pydantic-валидируемые схемы инструментов с обязательной точкой контроля HITL (human-in-the-loop), блокирующей все операции записи до их выполнения. Каждое решение агента, вызов инструмента и результат действия сохраняются в PostgreSQL для полного аудита, а семантический поиск PGVector выводит релевантные исторические действия перед планированием каждого нового действия.

Related MCP server: GitHub Flow MCP

Архитектура

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 --> PostgreSQL

Требуемые OAuth-области

Slack: channels:read, channels:history, chat:write GitHub: repo (для приватных репозиториев) или public_repo Jira: read:jira-work, write:jira-work

Настройка

# 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/

Примечание о конфликте портов: если у вас уже запущен локальный экземпляр Postgres на порту 5432 (часто встречается на macOS через Homebrew или Postgres.app), проброс порта Docker может молча проиграть гонку за этот порт — docker compose up -d сообщит, что контейнер здоров, но localhost:5432 на самом деле будет маршрутизироваться к вашему нативному Postgres, в котором нет роли/базы данных mcp_enterprise_hub, и завершится ошибкой FATAL: role "postgres" does not exist или подобной. Либо остановите локальный сервис Postgres, либо переназначьте контейнер на свободный порт с помощью docker-compose.override.yml:

services:
  postgres:
    ports:
      - "5433:5432"

и обновите DATABASE_URL / TEST_DATABASE_URL в .env, указав порт 5433.

Примеры вызовов API

1. Операция чтения (список GitHub issues) — выполняется немедленно:

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. Операция записи (создание тикета Jira) — возвращает pending_approval:

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. Одобрение записи — выполняется и возвращает результат:

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"
}

Результаты тестирования

$ 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.92s

Доля блокировок HITL (измерено по сохранённой тестовой базе данных после полного прогона набора тестов, до усечения по каждому тесту):

Метрика

Количество

Запуски с намерением записи, достигшие hitl_gate

9

Запуски, где hitl_gate корректно создал запись HITLApproval

9 / 9 (100%)

Реальные выполнения MCP-инструментов, записанные в AuditLog

4

Из них выполнено без предварительного одобрения APPROVED

0

Записи отклонены и не выполнены

2

Каждый тестовый запуск операции записи был перехвачен шлюзом HITL до того, как мог сработать любой вызов MCP-инструмента; ни одно выполнение не попало в AuditLog без соответствующей строки APPROVED в HITLApproval.

Сводные метрики (для справки)

  • 19 запусков агента сохранено в PostgreSQL во время тестирования

  • Покрытие тестами 85%+ на уровнях MCP-серверов, агента и API

  • HITL заблокировал 100% операций записи в тестовом наборе (0 нерассмотренных записей выполнено)

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    C
    quality
    B
    maintenance
    A 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.
    18
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    An 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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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