Skip to main content
Glama
varunk61

MCP-Native Enterprise Integration Hub

by varunk61

MCP-Native Enterprise Integration Hub

概要

GitHub Issues、Jira、Slack を MCP(Model Context Protocol)サーバーとして公開する、管理された AI エージェントプラットフォームです。LangGraph オーケストレーションエージェントは、平文のリクエストを Pydantic で検証されたツールスキーマにルーティングし、すべての書き込み操作の実行前に必須の HITL 承認チェックポイントでゲートします。エージェントのすべての決定、ツール呼び出し、アクションの結果は 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:readchannels:historychat:write GitHub: repo(プライベートリポジトリ用)または public_repo Jira: read:jira-workwrite: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"

そして .envDATABASE_URL / TEST_DATABASE_URL をポート 5433 を使用するように更新します。

API 呼び出しの例

1. 読み取り操作(GitHub の issue 一覧)— 即座に完了します:

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%)

AuditLog に記録された実際の MCP ツール実行

4

そのうち、事前の APPROVED 承認 なし で実行されたもの

0

拒否され、実行されなかった書き込み

2

すべての書き込み操作テスト実行は、MCP ツール呼び出しが発火する前に HITL ゲートによって遮られました。一致する APPROVEDHITLApproval 行なしに AuditLog に到達した実行はありません。

概要メトリクス(参考用)

  • テスト中に 19 件のエージェント実行が PostgreSQL に永続化されました

  • MCP サーバー、エージェント、API レイヤー全体で 85% 以上のテストカバレッジ

  • 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