Skip to main content
Glama
README.md
# obot-admin-mcp

An MCP server that lets an MCP client (claude.ai, Claude Desktop, etc.) manage a self-hosted [obot](https://github.com/obot-platform/obot) MCP gateway via its REST API. Use it to install, list, inspect, and remove MCP servers in obot from inside the chat client.

## Why

obot exposes each registered MCP server as `https://<obot-host>/mcp-connect/<id>`. To install a new MCP server you normally hit obot's REST API or its admin UI. This package wraps the relevant endpoints as MCP tools, so once you register `obot-admin-mcp` in obot itself and wire its `connectURL` into claude.ai, you can ask Claude to "install the n8n MCP" or "list everything obot has" and it just works.

## Tools

- `list_mcp_servers` — id, name, runtime, configured-state, `connectURL`.
- `get_mcp_server(id)` — full manifest, env, missing required vars.
- `add_npx_mcp(name, package, env?, sensitiveKeys?, shortDescription?, alias?)` — install an npm-published stdio MCP. Auto-calls `/configure` if env is supplied.
- `add_remote_mcp(name, url, shortDescription?, alias?)` — register a remote HTTP/SSE MCP.
- `delete_mcp_server(id)` — remove an MCP from obot.
- `configure_mcp_server(id, env)` — set runtime env values on an existing server (fills `missingRequiredEnvVars`).
- `list_catalog_entries(search?)` — browse obot's catalog (default 81 entries).

## Configuration

Two env vars:

| Var | Required | Notes |
| --- | --- | --- |
| `OBOT_URL` | yes | Base URL of your obot, e.g. `https://obot.example.com` |
| `OBOT_TOKEN` | yes | obot bootstrap or admin token |

## Run locally (Claude Desktop / dev)

Install direct from this repo (no npm publish required — built `dist/` is committed):

```jsonc
{
  "mcpServers": {
    "obot-admin": {
      "command": "npx",
      "args": ["-y", "github:kiarashedraki/obot-admin-mcp"],
      "env": {
        "OBOT_URL": "https://obot.example.com",
        "OBOT_TOKEN": "<your-token>"
      }
    }
  }
}
```

## Register inside obot (the meta loop)

```bash
curl -X POST "$OBOT_URL/api/mcp-servers" \
  -H "Authorization: Bearer $OBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "manifest": {
      "name": "obot-admin",
      "shortDescription": "Manage obot itself",
      "runtime": "npx",
      "npxConfig": { "package": "github:kiarashedraki/obot-admin-mcp" },
      "env": [
        { "key": "OBOT_URL",   "value": "https://obot.example.com", "required": true,  "sensitive": false },
        { "key": "OBOT_TOKEN", "value": "<token>",                  "required": true,  "sensitive": true  }
      ]
    },
    "alias": "obot-admin"
  }'
```

The response includes `connectURL` — paste that into claude.ai → Settings → Connectors → Add custom connector.

## Security

The bootstrap/admin token gives full control of obot, which mounts the host docker socket. Treat the token like a root credential. Do not register `obot-admin-mcp` on a shared/multi-tenant obot without an additional auth wall (e.g., Cloudflare Access in front of `obot-connect/<id>`).

## License

MIT

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: adding (two types), deleting, getting details, listing servers, and listing catalog. No overlap in purpose.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., add_npx_mcp, delete_mcp_server, list_mcp_servers).

Tool Count5/5

6 tools cover the essential CRUD and listing operations for an MCP admin server without being excessive or insufficient.

Completeness4/5

Covers create, read, delete operations but lacks an update/modify tool (e.g., to change environment variables or configuration).

Maintenance

ActivityInactive
ResponsivenessNo issues