← All integrations

Cursor + moodspec

Project-level MCP config so every teammate opening the repo inherits the same taste.

Setup · about 2 minutes

  1. Copy your endpointConnect agent on the canvas, then copy the MCP URL.
  2. Create .cursor/mcp.jsonAdd the block below at the repo root, or use Settings → MCP → Add new server.
  3. Enable the serverCursor lists moodspec under available tools; toggle it on for Composer and Chat.
  4. Prompt normallyCursor pulls the canvas when a request touches UI, copy or brand.
.cursor/mcp.json
{
  "mcpServers": {
    "moodspec": {
      "url": "https://mcp.moodspec.app/c/brand-soul",
      "headers": { "Authorization": "Bearer msk_live_••••" }
    }
  }
}

Team tip

Commit .cursor/mcp.json with a shared canvas and every Composer session in that repo starts from the same fonts, palette and voice.

Confirm it is connected

In Cursor
Settings → Cursor Settings → MCP & Integrations

moodspec is listed with its tools expanded beneath it. A pending state means the config parsed and the handshake has not finished; an error state means the URL or the token was rejected.

When it does not work

The server never appears in the MCP list

Cursor only reads .cursor/mcp.json from the folder opened as the workspace root. In a monorepo, opening a subfolder hides a config that sits above it. Move the file to the folder Cursor actually has open, or put the server in the user-scope config so the workspace root stops mattering.

The server is connected, but Composer never uses the canvas

The tools are registered and nothing is calling them. Cursor decides per request whether a tool is relevant. Put the instruction in a .mdc rules file — "before writing UI, call get_canvas" — so it is in context on every request rather than only when you remember to say it.

403 locked on get_history or propose_change

Those two need history:read and canvas:write, which are Business scopes. A Pro token carries canvas:read only. Use the read tools on Pro, or move the workspace to Business if you want agents proposing canvas changes.

Teammates see the server, but their calls fail

The committed config carries one token, and tokens are per canvas and revocable per person. Reference an environment variable in the committed file and have each teammate set their own, rather than sharing one bearer token through git.

Questions

Is .cursor/mcp.json the same thing as a .mdc rules file?

No, and they do different jobs. mcp.json says which servers Cursor may call; a .mdc rules file says what Cursor should do. The canvas holds the design decisions, and the rules file is where you tell Cursor to go and read them.

Should I commit .cursor/mcp.json?

Yes for the server definition — that is what project scope is for, and every teammate opening the repo inherits it. Keep the token itself out of the file.

Project scope or user scope?

Project scope for a team canvas, so the repo and the taste travel together. User scope for a personal canvas you want across every side project.

Does it work in Chat as well as Composer?

Yes. Enabling the server applies to both. The difference is that Composer touches UI code more often, so it reaches for the canvas more.

What does Cursor actually receive?

Structured data rather than a prompt blob — type stack, palette with usage rules, marks, references and voice. The exact response shape is published in the tools reference.