Skip to main content
Glama
varunk61

MCP-Native Enterprise Integration Hub

by varunk61

MCP 네이티브 엔터프라이즈 통합 허브

개요

GitHub Issues, Jira, Slack을 MCP(Model Context Protocol) 서버로 노출하는 관리형 AI 에이전트 플랫폼입니다. 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 포트에서 실행 중인 경우(Homebrew 또는 Postgres.app을 통한 macOS에서 흔함), 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"

그리고 .envDATABASE_URL / TEST_DATABASE_URL을 5433 포트를 사용하도록 업데이트하세요.

예시 API 호출

1. 읽기 작업(GitHub 이슈 목록 조회) — 즉시 완료:

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_gateHITLApproval 레코드를 올바르게 생성한 실행

9 / 9 (100%)

AuditLog에 기록된 실제 MCP 도구 실행

4

그중 사전 APPROVED 승인 없이 실행된 경우

0

거부되어 실행되지 않은 쓰기

2

모든 쓰기 작업 테스트 실행은 MCP 도구 호출이 발생하기 전에 HITL 게이트가 차단했습니다. 일치하는 APPROVED HITLApproval 행 없이 AuditLog에 도달한 실행은 없었습니다.

참고 지표

  • 테스트 중 PostgreSQL에 19개의 에이전트 실행이 저장됨

  • MCP 서버, 에이전트, API 레이어에 걸쳐 85% 이상의 테스트 커버리지

  • 테스트 스위트의 모든 쓰기 작업이 HITL 게이트를 통과함(검토되지 않은 쓰기 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