Check requirements
- Devin Desktop installed on your computer. Devin Desktop is the new name for Windsurf.
- A NeetoCal account.
Connect NeetoCal to Devin
Add the server to ~/.config/devin/mcp_config.json:
{
"mcpServers": {
"neetocal": {
"url": "https://connect.neetocal.com/mcp/messages"
}
}
}
Then run devin mcp login neetocal in your terminal and sign in to NeetoCal in your browser. Run devin mcp list to check that neetocal is listed. The devin command ships with Devin Desktop at /Applications/Devin.app/Contents/Resources/app/extensions/windsurf/devin/bin/devin.
Then ask Devin in a Local session. Devin asks before each NeetoCal tool call. Choose Allow, or pick the option that allows every NeetoCal tool for the session:

Connect with an API key
An API key is not tied to a person. Every tool call reaches the whole workspace, and role checks do not run. Use a key for automation that must see every booking. Do not use one on a machine where the person should see only their own bookings.
It is the same key the REST API uses. Learn how to generate your API key. Create it in the workspace you want the assistant to reach. Every client sends it in this header:
Authorization: Bearer YOUR_API_KEY
Add the server to ~/.config/devin/mcp_config.json. Devin uses the key on its next session.
{
"mcpServers": {
"neetocal": {
"url": "https://connect.neetocal.com/mcp/messages",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Try these prompts
Look things up:
What NeetoCal bookings do I have this week?
Show me open slots for my Product Demo meeting on May 15 in America/New_York.
List the meetings I host.
Book outside your working hours. Only a host of the meeting or an admin can do this:
Book Oliver Smith into my demo meeting on May 15 at 8pm America/New_York, even though it's outside my hours.
Set up a meeting and your calendar:
Create a 30-minute meeting called Product Demo, hosted by me, over Zoom.
Add bookings of my Product Demo meeting to my Work Google calendar, and check only that calendar for conflicts.
Troubleshooting
Devin or Antigravity connects but the tools are missing
Enable the server after you save the config. In Devin, open the ... menu at the top of a Devin chat in the IDE view and turn the server on, then run devin mcp login <name>. In Antigravity, go to Settings → Customizations.
Your AI assistant shows no NeetoCal tools
Restart the client first. Every client reads its MCP config at startup. On Claude or ChatGPT, confirm that you added the connector and finished the sign-in. In ChatGPT, the plugin is created only after you tick I understand and want to continue.
On clients that read a config file, check these:
- The config key. Claude Code, Cursor, Devin, Antigravity, and Antigravity CLI use
mcpServers. VS Code usesservers. Codex uses a[mcp_servers.<name>]section in TOML. A server under the wrong key is ignored silently. - The URL key. Antigravity and Antigravity CLI expect
serverUrl. Claude Code, Codex, Cursor, Devin, and VS Code expecturl. - The endpoint. It is
https://connect.neetocal.com/mcp/messages, with no trailing slash. - The syntax. In JSON, a trailing comma or an unclosed brace makes the whole file unreadable.
The connection is refused or unauthorized
With an API key, the header must read Bearer YOUR_API_KEY, with the word Bearer and one space before the key. Check that the key is not revoked and belongs to the workspace you expect. A key from one workspace does not work in another. With OAuth, remove the connector and add it again to start the sign-in over.
More fixes are in the NeetoCal MCP troubleshooting guide.
Use NeetoCal in other AI assistants
| AI assistant | Setup guide |
|---|---|
| Claude | Use NeetoCal in Claude |
| ChatGPT | Use NeetoCal in ChatGPT |
| Claude Code | Use NeetoCal in Claude Code |
| Cursor | Use NeetoCal in Cursor |
| Codex | Use NeetoCal in Codex |
| VS Code | Use NeetoCal in VS Code |
| Antigravity CLI | Use NeetoCal in Antigravity CLI |
| Antigravity | Use NeetoCal in Antigravity |
| Any other MCP client | NeetoCal MCP server |
Prefer the terminal? The NeetoCal CLI reaches the same data from your shell, your scripts and your coding agent.