Connect Mursa to Claude, Cursor, or any MCP client.
Three steps, sixty seconds. Mint an API key in Mursa, drop it into your client's config, and your agent can read and update your tasks, calendar, goals, notes, habits, projects, and Gmail — using whatever privileges you grant.
Mint an API key
- Open dashboard.mursa.me and sign in.
- Open Settings → API keys.
- Click New key, give it a label (e.g. "claude-code on macbook").
- Choose an expiry (2 / 10 / 15 / 30 / 90 days, or never) and pick the scopes you want this key to have. Grant everything (*) works but per-resource scopes are the right default for production use.
- Copy the key (starts with
mursa_mcp_). You'll only see it once.
Install the MCP server
You don't install anything ahead of time. The MCP server runs via npx on demand — your client downloads it the first time it needs it. Node 18+ is the only requirement.
Add it to your client
Claude Code
Edit: ~/.claude.json
{
"mcpServers": {
"mursa": {
"command": "npx",
"args": ["-y", "mursa-mcp"],
"env": {
"MURSA_API_KEY": "mursa_mcp_…"
}
}
}
}Paste your key into MURSA_API_KEY. Restart Claude Code. Run /mcp to confirm 'mursa' is listed. Try whoami to verify.
Claude Desktop
Edit: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) · %APPDATA%/Claude/claude_desktop_config.json (Windows)
{
"mcpServers": {
"mursa": {
"command": "npx",
"args": ["-y", "mursa-mcp"],
"env": { "MURSA_API_KEY": "mursa_mcp_…" }
}
}
}Paste your key into MURSA_API_KEY. Quit and reopen Claude Desktop. Start a new chat — Mursa tools appear in the tool picker.
Cursor
Edit: Settings → MCP → Add new MCP server
{
"mcpServers": {
"mursa": {
"command": "npx",
"args": ["-y", "mursa-mcp"],
"env": { "MURSA_API_KEY": "mursa_mcp_…" }
}
}
}Paste your key into MURSA_API_KEY. Toggle the server on. Tools show up in agent mode.
What your agent can do
28 tools across 7 resources. Every tool is gated by its scope — keys without the matching scope get a clean 403, never your data.
| Tool | Scope |
|---|---|
whoami Sanity-check the key resolves to your user. | (any key) |
list_inbox / list_myday / list_schedule / search_tasks Read your tasks. | tasks:read |
create_task / update_task / complete_task / defer_task / schedule_task Mutate tasks. | tasks:write |
list_calendar / create_calendar_event Time-blocked tasks. | calendar:read · calendar:write |
list_goals / create_goal / update_goal / delete_goal Your goals. | goals:* |
list_notes / search_notes / create_note / update_note Your notes. | notes:* |
list_habits · list_projects Read-only for now. | habits:read · projects:read |
list_emails / get_email / get_attachment / search_emails Read Gmail (requires Gmail connected in Settings). | email:read |
send_email / reply_email Send Gmail. Rate-limited to 5/min. Attachments ≤3MB each, ≤10MB total. | email:send |
Security
- Hashed at rest — only sha256(key) is stored. Lose the key, mint a new one.
- Per-key scopes + expiry — pick exactly what each key can do and how long it lives.
- Hard revocation — revoke from the dashboard and the next call fails instantly.
- Per-action rate limits — 60/min reads, 30/min writes, 5/min email sends.
- Audit log — every call recorded (action, status, latency, IP) for 90 days, no payload.
- One public URL — the Supabase function is behind a proxy with a shared secret; direct hits get 403.
Prefer to run from source?
git clone https://github.com/Murali1889/Prod-Mursa.git cd Prod-Mursa/mcp-servers/mursa npm install echo 'MURSA_API_KEY=mursa_mcp_…' > .env
Then point your client at the absolute path:
{
"mcpServers": {
"mursa": {
"command": "node",
"args": ["/absolute/path/to/mcp-servers/mursa/server.js"]
}
}
}Ready to wire it up?
Mint your first key in the dashboard.
Open dashboard