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 listvitrina: not loaded (needs approval)cursor-agent mcp enable vitrina✓ Enabled and approved MCP server: vitrinaIn the application, the same step is the server's toggle under Settings → Tools & Integrations.
Signing in
cursor-agent mcp login vitrinaMCP '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 listvitrina: readySeeing what ended up connected
cursor-agent mcp list-tools vitrinaTools 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.