Skip to main content
Glama
danielrosehill

MetaMCP Admin MCP

README.md
# MetaMCP Admin MCP

An MCP server for **administering MetaMCP instances** — manage servers, namespaces, endpoints, and API keys across multiple MetaMCP deployments from any MCP client.

This is **not** the MetaMCP proxy (which aggregates tools). This is an **admin tool** that lets AI agents manage MetaMCP itself: add/remove servers, create namespaces, toggle tools, compare instances, and more.

## Features

- **Multi-instance**: Manage multiple MetaMCP deployments from a single MCP server
- **Full CRUD**: Create, read, update, delete servers, namespaces, endpoints, and API keys
- **Bulk import**: Import servers in Claude Desktop JSON format
- **Cross-instance ops**: Compare servers across instances, clone server configs between instances
- **Health checks**: Verify connectivity to all instances
- **Tool management**: Inspect tools per server, toggle tools/servers within namespaces

## Available Tools (22)

| Tool | Description |
|------|-------------|
| `list_instances` | List all configured MetaMCP instances |
| `health_check` | Check connectivity to all instances |
| `compare_instances` | Compare servers/namespaces/endpoints across instances |
| `list_servers` | List all MCP servers on an instance |
| `get_server` | Get server details by UUID |
| `create_server` | Create a new MCP server |
| `update_server` | Update an existing server |
| `delete_server` | Delete a server |
| `bulk_import_servers` | Import servers from Claude Desktop JSON format |
| `clone_server` | Copy a server config from one instance to another |
| `list_namespaces` | List all namespaces |
| `get_namespace` | Get namespace details with servers |
| `create_namespace` | Create a new namespace |
| `update_namespace` | Update a namespace |
| `delete_namespace` | Delete a namespace |
| `get_namespace_tools` | List tools in a namespace |
| `toggle_server_in_namespace` | Enable/disable a server in a namespace |
| `toggle_tool_in_namespace` | Enable/disable a specific tool in a namespace |
| `list_endpoints` | List all endpoints |
| `get_endpoint` | Get endpoint details |
| `create_endpoint` | Create a new endpoint |
| `delete_endpoint` | Delete an endpoint |
| `list_api_keys` | List all API keys |
| `create_api_key` | Create a new API key |
| `delete_api_key` | Delete an API key |
| `get_server_tools` | List tools for a specific server |

## Installation

```bash
npm install -g metamcp-admin-mcp
```

Or clone and build:

```bash
git clone https://github.com/danielrosehill/metamcp-admin-mcp.git
cd metamcp-admin-mcp
npm install
npm run build
```

## Configuration

### Single instance

```bash
export METAMCP_BASE_URL="http://localhost:12008"
export METAMCP_INSTANCE_NAME="desktop"          # optional
export METAMCP_SESSION_COOKIE="better-auth.session_token=..."  # from browser
```

### Multiple instances

```bash
export METAMCP_INSTANCES='[
  {
    "name": "desktop",
    "baseUrl": "http://localhost:12008",
    "sessionCookie": "better-auth.session_token=..."
  },
  {
    "name": "vm",
    "baseUrl": "https://mcp.example.com",
    "sessionCookie": "better-auth.session_token=..."
  }
]'
```

### Getting the session cookie

MetaMCP uses Better Auth for session management. To get your session cookie:

1. Open MetaMCP in your browser
2. Open DevTools (F12) → Application → Cookies
3. Copy the `better-auth.session_token` value
4. Use it as `sessionCookie` in config (prefix with `better-auth.session_token=`)

### Claude Desktop / Claude Code config

```json
{
  "mcpServers": {
    "metamcp-admin": {
      "command": "node",
      "args": ["/path/to/metamcp-admin-mcp/dist/index.js"],
      "env": {
        "METAMCP_INSTANCES": "[{\"name\":\"desktop\",\"baseUrl\":\"http://localhost:12008\",\"sessionCookie\":\"better-auth.session_token=...\"}]"
      }
    }
  }
}
```

## How it works

MetaMCP exposes a tRPC API for its admin frontend. This MCP server acts as a tRPC client, calling those same endpoints with session cookie authentication. This means you get the same capabilities as the MetaMCP web UI, but accessible from any MCP client.

## API Coverage

Built against the MetaMCP tRPC API:
- `frontend.mcpServers.*` — Full CRUD + bulk import
- `frontend.namespaces.*` — Full CRUD + tool/server status management
- `frontend.endpoints.*` — Full CRUD
- `frontend.apiKeys.*` — Create, list, delete
- `frontend.tools.*` — Query by server

## License

MIT

TDQS

B3/5.0

Scored across 26 tools

Disambiguation4/5

Tools are clearly partitioned by resource type (servers, namespaces, endpoints, api_keys, instances) with distinct action verbs preventing overlap. Minor density exists between get_namespace and list_namespaces, but descriptions clarify that one retrieves detailed server membership while the other provides a simple listing.

Naming Consistency5/5

Excellent adherence to snake_case with a strict verb_noun pattern throughout all 26 tools (create_server, delete_namespace, list_api_keys, etc.). Compound verbs like bulk_import_servers and health_check follow the same convention without mixing styles or cases.

Tool Count3/5

With 26 tools, the surface exceeds the typical ideal range (3-15) and enters the heavy category (16-25+). While each tool earns its place covering full CRUD for four distinct resource types plus specialized operations (clone, toggle, import), the breadth creates a dense interface that approaches cognitive overload.

Completeness4/5

Provides comprehensive lifecycle coverage for servers and namespaces, including granular controls like toggling specific tools. Minor gaps exist for endpoints (missing update_endpoint) and API keys (lacking get single key), though these can be worked around via list operations.