MCP server
The Model Context Protocol is the open standard Anthropic published for letting AI agents call tools on your services. Elido ships an MCP server so any compatible client — Claude Desktop, Cursor, ChatGPT, Continue, Zed — can shorten URLs, read click analytics, manage QR codes, and run bulk imports without copy-pasting between tabs.
There are two ways to wire it up:
- Hosted (recommended): point your client at
https://mcp.elido.app/v1/with a personal access token. No install, always up-to-date. - Self-hosted: run the binary or container locally; useful for air-gapped environments and offline work.
1. Get a personal access token
In the dashboard, go to Settings → API keys → New key. Pick
scope mcp:full (or mcp:readonly if you only want analytics, not
mutations). Copy the token — it’s shown once.
ELIDO_MCP_TOKEN="elt_…"The token is workspace-scoped. Switch workspace, switch token.
2. Hosted setup — Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json
on macOS (Windows: %APPDATA%\Claude\claude_desktop_config.json)
and add:
{
"mcpServers": {
"elido": {
"type": "http",
"url": "https://mcp.elido.app/v1/",
"headers": {
"Authorization": "Bearer elt_…"
}
}
}
}Restart Claude. The Elido tool surface should appear in the tool picker.
3. Hosted setup — Cursor
Cursor reads from the same ~/.cursor/mcp.json:
{
"mcpServers": {
"elido": {
"url": "https://mcp.elido.app/v1/",
"headers": { "Authorization": "Bearer elt_…" }
}
}
}Reload the Cursor window. @elido invocation works in chat panels.
4. Hosted setup — ChatGPT
ChatGPT reads MCP servers from Settings → Connectors → Add custom
connector. Paste https://mcp.elido.app/v1/ and set the
authorization header to Bearer elt_…. ChatGPT will surface the
tools in any new conversation.
5. Self-host
The MCP binary ships in the same Docker image as the rest of the self-host bundle:
docker run --rm -p 8765:8765 \
-e ELIDO_API_BASE=https://api.elido.app \
-e ELIDO_MCP_TOKEN=elt_… \
ghcr.io/elidoapp/mcp-server:latestOr with the npm wrapper if you want stdio transport (e.g. for an agent that prefers stdio):
npx -y @elido/mcp-server@latestConfigure the client to launch the local process:
{
"mcpServers": {
"elido-local": {
"command": "npx",
"args": ["-y", "@elido/mcp-server@latest"],
"env": { "ELIDO_MCP_TOKEN": "elt_…" }
}
}
}6. Tool surface
The server exposes 18 tools across 5 namespaces. The most-used:
| Tool | Scope | What it does |
|---|---|---|
links.create | mcp:full | Shorten a URL with optional UTM template + expiry |
links.list | mcp:readonly | Paginated link list with click counts |
links.update | mcp:full | Patch destination, slug, rules, tags |
analytics.summary | mcp:readonly | Top countries / referrers / devices for a link or campaign |
analytics.timeseries | mcp:readonly | Hour / day buckets, returns chart-ready data |
qrs.create | mcp:full | Designer QR with logo + colors |
bulk.import | mcp:full | Upload a CSV; returns per-row status |
webhooks.replay | mcp:full | Re-fire a delivery from the audit log |
Full schema is at the API reference — every MCP tool maps 1:1 to a public REST endpoint, so the docs you read for the API are the docs for the agent.
7. Safety
- Read-only by default: pick
mcp:readonlyif the agent is exploring; bump tomcp:fullonly when you need writes. - Per-tool allow-list: in the dashboard you can restrict a
token to a subset of tools, e.g. allow
links.*but denybulk.import(which can create thousands of links in one call). - Audit log: every MCP call lands in the workspace audit log with the agent identifier, the tool, and the arguments — same surface as a human dashboard action.
- Rate limit: hosted server is capped at 60 calls/minute per token; self-hosted is uncapped.
8. Edge cases
- Long-running calls —
bulk.importfor >5000 rows runs async; the tool returns a job id, and the agent pollsbulk.statusuntil done. No client-side timeouts. - Workspace switching — one token = one workspace. Issue a separate token per workspace; the MCP client’s connector list surfaces each as a distinct server.
- Token rotation — issue a new token, update the config, then revoke the old one. Don’t reuse token slots; the audit log relies on stable token ids.
See also
- API reference — REST + gRPC endpoints
- SDKs — TypeScript / Go / Python wrappers around the same endpoints
- Webhooks — push events out, where MCP pulls them in