MCP Hub
Back to servers

Git-Fabric Gateway

A central tool aggregator that routes and orchestrates multiple fabric apps through a single MCP surface. It enables users to access a combined suite of specialized tools from various registered apps via a unified server connection.

Updated
Feb 21, 2026

@git-fabric/gateway

@git-fabric/gateway

The connective tissue for git-fabric. Routes, connects, and orchestrates fabric apps through a single MCP surface.

What It Does

The gateway is a tool aggregator. Register any number of fabric apps (like @git-fabric/cve), and the gateway exposes all their tools through one MCP server. Consumers connect once, access everything.

┌──────────────────────────┐
│  Consumer (git-steer,    │
│  Claude Desktop, etc.)   │
└────────────┬─────────────┘
             │ MCP (stdio)
    ┌────────▼────────┐
    │     gateway     │
    │  registry       │
    │  router         │
    │  health check   │
    └──┬─────┬─────┬──┘
       │     │     │
   ┌───▼──┐ ┌▼──┐ ┌▼───┐
   │ cve  │ │...│ │... │
   └──────┘ └───┘ └────┘

Quick Start

1. Create a gateway config

# gateway.yaml
apps:
  - name: "@git-fabric/cve"
    enabled: true
    env:
      GITHUB_TOKEN: "ghp_..."
      STATE_REPO: "ry-ops/git-steer-state"
      MANAGED_REPOS: "ry-ops/git-steer,ry-ops/blog"

2. Start the gateway

fabric-gateway start --config gateway.yaml

3. Connect from Claude Desktop

{
  "mcpServers": {
    "git-fabric": {
      "command": "npx",
      "args": ["@git-fabric/gateway", "start"],
      "env": {
        "GITHUB_TOKEN": "ghp_..."
      }
    }
  }
}

Now every fabric app's tools appear as native MCP tools.

Built-in Tools

ToolDescription
fabric_healthHealth check across all registered fabric apps
fabric_appsList registered apps and their tools
fabric_routeExplicitly route a call to a specific app (for name collisions)

All registered app tools are also exposed directly by their name (e.g. cve_scan, cve_triage).

CLI

# Start gateway MCP server
fabric-gateway start

# Health check all apps
fabric-gateway health

# List registered apps and tools
fabric-gateway apps

Creating a Fabric App

Any npm package can be a fabric app. Export a createApp() function that returns a FabricApp:

import type { FabricApp } from "@git-fabric/gateway";

export async function createApp(): Promise<FabricApp> {
  return {
    name: "@git-fabric/my-app",
    version: "0.1.0",
    description: "What my app does",
    tools: [
      {
        name: "my_tool",
        description: "What my tool does",
        inputSchema: { type: "object", properties: { ... } },
        execute: async (args) => { ... },
      },
    ],
    health: async () => ({
      app: "@git-fabric/my-app",
      status: "healthy",
    }),
  };
}

Architecture

src/
├── types.ts        # FabricApp, FabricTool, AppRegistry interfaces
├── registry.ts     # In-memory app registry
├── router.ts       # Tool routing + health checks
├── loader.ts       # Dynamic app loading from gateway.yaml
├── index.ts        # Barrel export
└── mcp/
    └── server.ts   # MCP server aggregating all app tools

License

MIT

Reviews

No reviews yet

Sign in to write a review