Connecting Claude Code, Claude Desktop, Cursor and others
Create a token, add the Kelta MCP server to your client, choose admin or user, and verify the connection.
1. Create a token#
In the app, Profile → API tokens → New, or:
kelta token create --name agent --expires-in 90
For an agent that should only read, mint the token for a service user whose profile grants API_ACCESS and
canRead on the relevant collections (recipe).
2. Add the server#
Claude Code
claude mcp add --transport http kelta-admin \
https://api.example.com/acme/mcp/admin \
--header "Authorization: Bearer klt_..."
Claude Desktop, Cursor and other JSON-configured clients
{
"mcpServers": {
"kelta-admin": {
"type": "http",
"url": "https://api.example.com/acme/mcp/admin",
"headers": { "Authorization": "Bearer klt_..." }
},
"kelta-user": {
"type": "http",
"url": "https://api.example.com/acme/mcp/user",
"headers": { "Authorization": "Bearer klt_..." }
}
}
}
Through the CLI (no token in the client config) — kelta mcp install claude-code|claude-desktop|cursor|generic
prints a stdio configuration that uses your saved profile and adds the local-only tools
(Local MCP bridge).
3. Choose admin, user or both#
Add …/mcp/admin to build and change metadata; …/mcp/user to work with records. Many agents want both.
4. Verify#
Ask the agent to call ping, then list_collections. A 401 means the token is not a klt_ PAT or has
expired; a 403 on an admin tool means the token’s owner lacks the permission.
Tips for agents#
- Read
kelta://docs/page-layouts,kelta://docs/list-views,kelta://docs/ui-pages,kelta://docs/ui-menusandkelta://docs/dashboardsbefore authoring those objects by hand — they are the same documents as the authoring reference. - Prefer the
apply_*tools; re-running them is safe. execute_flowinput is double-wrapped:{ "input": { "input": { … } } }(why).- Validation-rule formulas are error conditions —
TRUErejects.