Skip to content

Symbia-Labs/mcpops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mcpops

Universal MCP operations CLI — manage any MCP gateway from one control plane.

mcpops is the Terraform of the MCP ecosystem. Instead of building another gateway, it manages them all through a provider-agnostic plugin architecture.

mcpops status                              # unified status across all backends
mcpops tools list                          # discover tools across all instances
mcpops connect factory edge --mode bridge  # federate between gateways
mcpops discover factory mqtt               # discover IoT devices

Why mcpops

The MCP gateway space is crowded — MetaMCP, Microsoft MCP Gateway, mcp-iot-gateway, and dozens more. Each has its own CLI, API, and management model. mcpops unifies them behind a single control plane.

  • Provider-agnostic: One CLI for all your MCP infrastructure
  • Config-as-code: YAML config for your entire MCP topology
  • Federation: Connect instances across providers (peer or bridge mode)
  • Discovery: Find tools and devices across all backends
  • Extensible: Add new providers with a simple TypeScript interface

Install

npm install -g mcpops

Or run directly:

npx mcpops --help

Quick Start

1. Add your gateways

# Add an IoT gateway
mcpops provider add iot-gateway factory http://192.168.1.100:45678/mcp \
  --auth-type api-key --auth-key igt_xxxx

# Add a MetaMCP instance
mcpops provider add metamcp staging http://localhost:12008 \
  --auth-type api-key --auth-key sk_mt_xxxx

2. Check status

mcpops status
mcpops status

INSTANCE  PROVIDER     STATUS       TOOLS     PEERS
──────────────────────────────────────────────────────
factory   iot-gateway  ● connected  42 tools  3 peers
staging   metamcp      ● connected  18 tools  5 peers

3. Discover tools

mcpops tools list
mcpops tools list --instance factory
mcpops tools call factory iot_discover '{"connection":"mqtt"}'

4. Federate instances

mcpops connect factory staging --mode bridge --live

5. Discover devices

mcpops discover factory mqtt

Commands

Command Description
mcpops status [instance] Unified status across all instances
mcpops provider list List providers and configured instances
mcpops provider add <provider> <name> <url> Add a gateway instance
mcpops provider remove <name> Remove an instance
mcpops tools list [-i instance] List tools across instances
mcpops tools call <instance> <tool> [args] Call a tool
mcpops connect <from> <to> [--mode] Federate two instances
mcpops disconnect <from> <to> Remove federation
mcpops discover <instance> [scope] Discover devices/services
mcpops config show Display configuration
mcpops config export Export config as YAML
mcpops config validate Validate config file

Configuration

Config lives at ~/.config/mcpops/config.yaml:

version: 1
instances:
  factory:
    provider: iot-gateway
    url: http://192.168.1.100:45678/mcp
    auth:
      type: api-key
      key: igt_xxxx
  staging:
    provider: metamcp
    url: http://localhost:12008
    auth:
      type: api-key
      key: sk_mt_xxxx

federations:
  - from: factory
    to: staging
    mode: bridge

Override the config path:

MCPOPS_CONFIG=./my-config.yaml mcpops status

Providers

Built-in

Provider Description Federation Discovery
iot-gateway mcp-iot-gateway ✅ peer + bridge ✅ IoT devices
metamcp MetaMCP aggregator

Writing a Provider

Implement the Provider abstract class:

import { Provider } from "mcpops";

export class MyGatewayProvider extends Provider {
  readonly name = "my-gateway";
  readonly version = "1.0.0";
  readonly capabilities = {
    canFederate: false,
    canBridge: false,
    canDiscover: false,
    supportsAuth: true,
    supportsNamespaces: false,
  };

  async connect(config) { /* ... */ }
  async disconnect(instanceId) { /* ... */ }
  async healthCheck(instanceId) { /* ... */ }
  async status(instanceId) { /* ... */ }
  listInstances() { /* ... */ }
  async listTools(instanceId) { /* ... */ }
  async callTool(instanceId, tool, args) { /* ... */ }
  async shutdown() { /* ... */ }
}

License

MIT — Symbia Labs

About

Universal MCP operations CLI — manage any MCP gateway from one control plane

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors