# MCP quickstart > Connect an AI assistant to Harny's MCP server in four steps, then store and recall your first memory. ## Step 1: Get a key You need a key before the assistant can reach Harny. There are two ways to get one: - **No-account setup.** If your coding agent can run commands, have it follow https://harny.ai/auth.md. One command makes the app, saves its key in `.env`, and prints a claim link you open later to take ownership. - **Console.** The console creates app keys. Keys have two kinds. An app key starts with `fsa_` and belongs to you, the developer: it makes people and manages the app. A person's key starts with `fsk_` and opens the memory of one person only. The table below says which one each tool needs. ## Step 2: Add the server to your assistant The MCP server address is `https://api.harny.ai/v1/mcp/mcp`. It uses Streamable HTTP. Without an `Authorization` header, it lists only `provision_app`. Add your key to see the other tools. The key goes in the `Authorization` header shown in the lines below, after the word `Bearer`. Replace `$HARNY_USER_KEY` with the person's key you saved. **Claude Code** ``` claude mcp add --transport http harny https://api.harny.ai/v1/mcp/mcp --header "Authorization: Bearer $HARNY_USER_KEY" ``` **Cursor** Add this to `mcp.json`: ```json {"mcpServers": {"harny": {"url": "https://api.harny.ai/v1/mcp/mcp", "headers": {"Authorization": "Bearer ${env:HARNY_USER_KEY}"}}}} ``` The server accepts bearer keys and sign-in tokens. This quickstart uses a key; [how it works](/docs/mcp/how-it-works) explains sign-in. ## Step 3: Ask the assistant to call describe Ask the assistant: "Call `describe`." This is the first call an assistant should make. It returns what Harny is and the tools this key may call, with their schemas. `describe` needs any key. ## Step 4: Store and recall a first memory Use the example cast: Nadia at Acme, user id `demo-user`. Use a person's key (`fsk_`) for both calls. Calls are scoped to the key's user. 1. Ask the assistant to call `ingest_text` with a note such as "Nadia at Acme is on the Acme pilot. Her budget is 32k, raised to 40k on March 14." This writes the note into that person's memory. 2. Ask the assistant to call `assemble_context` with the question "What is Nadia's budget?" This returns ranked context from that person's memory and connected sources. It is read-only. Check that the returned context mentions the budget. For dated recall and the other Memory API routes, see the Memory API docs. ## Which key each tool needs | Tool | Key | |---|---| | `provision_app` | none | | `describe`, `get_snippet`, `diagnose` | any key | | `provision_user`, `get_claim_link`, `get_setup_bundle` | app key (`fsa_`) | | `ingest_text`, `assemble_context`, `action_history`, `list_tools`, `configure_oauth` | person's key (`fsk_`) | Calls follow the same limits and refusals as the REST routes they wrap. A call over the per-minute limit returns 429 with a `Retry-After` header. ## Next - [MCP tools](/docs/mcp/tools) - [Keys and access](/docs/mcp/keys-and-access) - [Memory API overview](/docs/memory-api/overview)