VitrinaAPI
MCP

Connect Cursor

Declare Vitrina in mcp.json and authorise Cursor over OAuth.

Cursor reads its MCP servers from an mcp.json file. Vitrina is declared there with a single useful line, the address. The authorisation flow does the rest. Vitrina's own screens are Spanish, so they're quoted here as you'll see them, with the English alongside.

Declaring the server

Pick the file

~/.cursor/mcp.json for all your projects, or .cursor/mcp.json inside a project so it applies only there. If the file does not exist, create it.

Add Vitrina

{
  "mcpServers": {
    "vitrina": {
      "url": "https://api.vitrinadev.com/mcp"
    }
  }
}

No headers and no key: the authorisation comes in the next step. If you already have other servers in the file, add vitrina next to them inside mcpServers.

Approve the server

A newly declared server shows up but does not load until you approve it:

cursor-agent mcp list
vitrina: not loaded (needs approval)
cursor-agent mcp enable vitrina
✓ Enabled and approved MCP server: vitrina

In the application, the same step is the server's toggle under Settings → Tools & Integrations.

Check that it asks for authorisation

cursor-agent mcp list
vitrina: requires_authentication

Signing in

cursor-agent mcp login vitrina
MCP 'vitrina' requires authentication. Opening your browser...
If it doesn't open, navigate to:
  https://api.vitrinadev.com/oauth/authorize?response_type=code&client_id=…

Listening on http://localhost:8787/callback for the OAuth callback...

Vitrina opens in the browser. The permissions screen names the client and says where it is coming from:

Cursor quiere conectarse a Vitrina Una aplicación en este dispositivo (localhost:8787).

Cursor wants to connect to Vitrina. An application on this device (localhost:8787).

Sign in with your account if you weren't already signed in, and review what it will be able to read. Tick the costs-and-margins checkbox if you want it, and press Permitir:

✓ MCP login successful
Received authorization code '5yIk0H...'. You can close the browser. Re-running
 the command should now complete authentication.
cursor-agent mcp list
vitrina: ready

Seeing what ended up connected

cursor-agent mcp list-tools vitrina
Tools for vitrina (49):
- appointment_types_list (kind, active_only, q)
- appointments_get (id)
- appointments_list (status, kind, from, to, vehicle_id, owner_user_id, limit)
- contacts_get (id)
- contacts_search (q, exclude_id, include_merged, limit, offset, lifecycle_stage, channel, lead_source, tag_id, company_id)
…

That 49 is the number from that run: a workspace without the costs checkbox ticked. With the checkbox, six more appear. The complete list, by pack and with what each tool does, is in Connector tools.

Disconnecting

Deleting the block from mcp.json takes Vitrina out of Cursor, but it revokes nothing. The authorisation stays alive until you cut it under Connections → MCP → Aplicaciones conectadas.

Trap

Every «Permitir» leaves a row, even for the same client

Authorising again does not replace the previous authorisation: it adds another one. Two completed sign-ins leave two rows in «Aplicaciones conectadas», both called Cursor, and the old one still has access.

A sign-in you abandoned halfway leaves nothing: the row is created when you press Permitir, not before. If you see more rows than you expected, they really are extra. Look at the «Último uso» column to work out which one is in use and disconnect the rest.

On this page