Any MCP client can connect to an entity. How depends on what the client supports:
| Client supports | Use |
|---|---|
| Remote (streamable HTTP) servers with custom headers | An entity key in a header |
| Only local (stdio) servers | The stdio bridge |
| Remote servers with OAuth and a web or loopback callback | OAuth |
Cursor signs in to OAuth servers through a cursor:// callback. Animawake accepts OAuth callbacks only on https:// web hosts it recognizes and on http://localhost loopback addresses, so when Cursor registers itself as an OAuth client, the server rejects the registration with invalid_client_metadata (invalid_redirect_uri) before any browser sign-in starts. Use a key header or the bridge instead.
#Get an entity key
- In the portal, open the entity and go to Connect.
- Under API keys, click Create key. Give it a name that says where it is used, such as "Cursor on work laptop".
- Copy the key. It starts with
ent_and is shown once.
Treat the key like a password. Anyone with it can read and write the entity's memory. See Access tokens and keys.
#An entity key in a header
#Cursor
Add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"my-entity": {
"url": "https://mcp.animawake.com/e/<workspace-slug>/<entity-slug>/",
"headers": {
"Authorization": "Bearer ent_your_key_here"
}
}
}
}Do not commit a project-level file that contains the key. Reload Cursor, then check Settings > MCP for the server and its tools.
#Other clients
Most clients that support remote servers accept the same three things:
- URL:
https://mcp.animawake.com/e/<workspace-slug>/<entity-slug>/ - Transport: streamable HTTP. The endpoint accepts
POSTfor JSON-RPC messages andGETfor the server event stream. The server keeps no sessions, so there is nothing to end: aDELETEgets405 Method Not Allowed. - Header:
Authorization: Bearer ent_your_key_here
The key alone decides which entity you reach, so https://mcp.animawake.com/mcp works as well. Use the per-entity URL anyway: it keeps OAuth discovery and your configuration readable.
#The stdio bridge
The animawake npm package includes a bridge that speaks MCP over stdio and forwards each message to Animawake with your key. It needs Node.js 20.17 or newer (22.13 or newer on Node 22).
{
"mcpServers": {
"my-entity": {
"command": "npx",
"args": ["-y", "animawake", "mcp", "<entity-slug>"],
"env": {
"ANIMAWAKE_API_KEY": "ent_your_key_here"
}
}
}
}The bridge finds the key in this order:
- The
ANIMAWAKE_API_KEYenvironment variable. .animawake.json, searched from the working directory upward.npx animawake setupandnpx animawake addwrite this file.
If neither has a key for the slug, every tool call returns no key configured for entity '<slug>'. To point the bridge at another server, set ANIMAWAKE_MCP_URL (default https://mcp.animawake.com/mcp).
#OAuth
Clients that complete OAuth in a browser and return to a web URL or a loopback address (http://localhost, http://127.0.0.1, or http://[::1], any port) can use OAuth. Add the server URL, and the client discovers the rest from:
https://mcp.animawake.com/.well-known/oauth-protected-resource/e/<workspace-slug>/<entity-slug>Animawake supports dynamic client registration and requires PKCE with S256. Tokens last 30 days.
#Check the connection
Ask the agent to call get_startup. If the client lists tools, look for get_startup, search_memories, and add_moment.
For problems, see Connection troubleshooting.