# 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. 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 ` | 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](/docs/mcp/tools). ## 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](/docs/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](/docs/mcp/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`. ## Next - [Quickstart](/docs/mcp/quickstart) - [Tools](/docs/mcp/tools) - [Keys and access](/docs/mcp/keys-and-access)