MetaMCP Admin MCP
# 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
Scored across 26 tools
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.
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.
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.
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.