← All materials
Demo 1

MCP Aggregator

GitLab + YouTrack through one Streamable HTTP endpoint

MCP URL

Public workshop endpoint — no client credentials needed:

GitLab demo

URL
gitlab-demo.infiano.app
User
root
Pass
94dc3248a25c8e4af33159e1361d7cd7418dd940e2d0d3d7

YouTrack demo

URL
youtrack-demo.infiano.app
User
admin
Pass
sabnod-5tomwa-pUmhob
How to connect

Claude (UI)

  1. Customize → Connectors → Add URL
  2. Paste MCP URL above

Claude Code (CLI)

Add:

claude mcp add --transport http workshop https://mcp-demo.infiano.app/mcp

Remove:

claude mcp remove workshop

Verify: claude mcp list or run /mcp in Claude Code

ChatGPT

  1. Settings → Connectors → Add connector
  2. Paste MCP URL above

Codex (CLI)

codex mcp add workshop --url https://mcp-demo.infiano.app/mcp

Try: "Find bugs in the projects"

Documentation — aggregator, setup & deployment

MCP aggregator

This project exposes GitLab and YouTrack through one MCP connector. Clients register a single Streamable HTTP endpoint and receive the combined tool catalog:

  • GitLab tools are named gitlab__<tool>
  • YouTrack tools are named youtrack__<tool>

Prefixes prevent collisions and let the aggregator route each tools/call request to the correct upstream. Tokens stay in .env and are never exposed to MCP clients.

Architecture

Service Address Purpose
Public gateway https://mcp-demo.infiano.app/mcp Combined GitLab + YouTrack MCP endpoint for the workshop
mcp-connectors 127.0.0.1:9100/mcp Combined endpoint (local)
mcp-connectors 127.0.0.1:9100/health Upstream health status
gitlab-mcp Docker network only GitLab MCP upstream
YouTrack Server https://youtrack-demo.infiano.app/mcp Native YouTrack MCP upstream

The public virtual host exposes only /mcp and /health. Internal upstream proxy and diagnostic routes are not published.

Configuration

Start from .env.example. Required settings:

  • MCP_AGGREGATOR_PORT — localhost port; defaults to 9100
  • GITLAB_API_URL and GITLAB_PERSONAL_ACCESS_TOKEN
  • GITLAB_READ_ONLY_MODE, USE_PIPELINE, USE_GITLAB_WIKI, USE_MILESTONE
  • YOUTRACK_BASE_URL and YOUTRACK_PERMANENT_TOKEN
  • INTERNAL_YOUTRACK_MCP_URL — normally ${YOUTRACK_BASE_URL}/mcp

Run locally

Code + README in workshop/mcp

docker compose up -d --build

Check the stack:

curl http://127.0.0.1:9100/health curl http://127.0.0.1:9100/mcp/summary curl http://127.0.0.1:9100/mcp/servers/public

Deployment

Deployment manifests are kept separately:

  • deployment/gitlab/docker-compose.yml — pinned GitLab CE. HTTP at 127.0.0.1:8086, Git SSH on port 2224. Data under /opt/gitlab.
  • deployment/youtrack/docker-compose.yml — pinned YouTrack Server. Native MCP requires YouTrack Server 2025.3+ and a permanent token with the YouTrack scope.

Start from the deployment directory:

cd deployment/gitlab docker compose up -d