MCP Server
What the Harny MCP server does
The Harny MCP server lets a coding agent or assistant set up Harny and use it for one person's memory and actions.
Copy page
Harny's MCP server sits at one address. Your assistant connects to it over Streamable HTTP. What it can do depends on whether the request carries a key.
The address and the two doors
The server address is https://api.harny.ai/v1/mcp/mcp.
| Request | What you get |
|---|---|
No Authorization header | Only provision_app, which makes a new app and its key |
Authorization: Bearer <key> | The tools that key may call |
A person's key starts with fsk_. The app key starts with fsa_. Calls are scoped to the key's user.
Any key gives you describe, get_snippet and diagnose. The app key adds provision_user, get_claim_link and get_setup_bundle. A person's key adds ingest_text, assemble_context, list_tools, configure_oauth and action_history. The full list, with what each tool reads or writes, is on the tools page.
Who it is for
The server is for a coding agent or assistant that sets up and uses Harny for you. Your app's own code calls the Memory API directly. See the Memory API overview. Your assistant uses the MCP server to create the app, add people, write and read memory, and check the connection.
Connect your assistant
Claude Code:
claude mcp add --transport http harny https://api.harny.ai/v1/mcp/mcp --header "Authorization: Bearer $HARNY_USER_KEY"Cursor, in mcp.json:
{"mcpServers": {"harny": {"url": "https://api.harny.ai/v1/mcp/mcp", "headers": {"Authorization": "Bearer ${env:HARNY_USER_KEY}"}}}}A coding agent that can run commands should follow https://harny.ai/auth.md instead of provision_app. That command never shows the key. The server accepts bearer keys and sign-in tokens; how it works explains sign-in.
What to check first
Start with describe. It lists the tools your key may call, with their schemas. Then use diagnose to see the state of the connection. Calls follow the same limits and refusals as the REST routes they wrap. A call over the per-minute limit returns 429 with Retry-After.