- Docs
- Build With RoxyAPI
- Windsurf
Windsurf astrology MCP setup
One config block hands the agent the whole RoxyAPI reference as a searchable tool. Add your key and it runs live calculations while it writes the code. Five minutes, no local process.
Windsurf is now Devin Desktop, and which file you edit depends on which agent the tab is running. Devin Local is the default agent in a new tab and reads the Devin CLI config. The legacy Cascade agent reads ~/.codeium/windsurf/mcp_config.json. The two use different field names, so pick your tab first.
Step 1, the docs server (keyless)
devin mcp add -s user roxy-docs https://roxyapi.com/mcp/docs
The transport is inferred: a URL means Streamable HTTP. -s user writes ~/.config/devin/mcp_config.json for every project, -s project writes the committed .devin/mcp_config.json, and the default scope writes the gitignored .devin/mcp_config.local.json. Check it with devin mcp list.
Open ~/.codeium/windsurf/mcp_config.json from the MCPs icon at the top right of the Cascade panel, or from Devin Settings then Cascade then MCP Servers, and add:
{
"mcpServers": {
"roxy-docs": {
"serverUrl": "https://roxyapi.com/mcp/docs"
}
}
}
Remote servers in this file use serverUrl, not url.
Either way you get one tool, search_docs, over the entire reference: endpoints, request and response fields, SDK methods, auth, integration steps. No API key, documentation only, never a live calculation. Then ask in plain language:
Using roxy-docs, find the natal chart endpoint and show me how to call it with the TypeScript SDK.
Step 2, a domain server for live calls
Live calculations take your key in the X-API-Key header, one server per domain.
Put the keyed server in .devin/mcp_config.local.json, which git ignores, so the key never reaches a shared config:
{
"mcpServers": {
"roxy-astrology": {
"url": "https://roxyapi.com/mcp/astrology",
"headers": { "X-API-Key": "your-key-from-roxyapi.com/account?tab=keys" }
}
}
}
Cascade interpolates ${env:VAR} inside command, args, env, serverUrl, url and headers, so export the key and reference it:
export ROXY_API_KEY="your-key-from-roxyapi.com/account?tab=keys"
{
"mcpServers": {
"roxy-docs": {
"serverUrl": "https://roxyapi.com/mcp/docs"
},
"roxy-astrology": {
"serverUrl": "https://roxyapi.com/mcp/astrology",
"headers": { "X-API-Key": "${env:ROXY_API_KEY}" }
}
}
}
Swap the last path segment for any other domain: vedic-astrology, forecast, human-design, chinese-astrology, feng-shui, mesoamerican-astrology, vastu, numerology, kabbalah, tarot, biorhythm, ayurveda, iching, crystals, dreams, angel-numbers, location. Get your API key, or mint another there.
Cascade caps at 100 tools at any time and the full RoxyAPI surface is larger, so connect the two or three domains you are building on rather than all 18, and toggle off the tools you do not need on each server settings page.
Step 3, point the agent at the truth sources
Both agents run AGENTS.md in the workspace root through the same rules engine, always on, so one file covers Devin Local, Cascade and every other agent on the repo:
## RoxyAPI
- Search https://roxyapi.com/mcp/docs (tool: search_docs) before writing any RoxyAPI call. No MCP in this context? Fetch https://roxyapi.com/llms.txt instead.
- Read https://roxyapi.com/AGENTS.md in full before the first call: auth, the location rule, request body shapes, the error contract, the SDK for this language.
- Print request and response fields with jq from https://roxyapi.com/api/v2/openapi.json before using an endpoint, with the jq recipe in https://roxyapi.com/AGENTS.md. Generate types from that spec, never by hand.
- Base URL https://roxyapi.com/api/v2. Auth is the X-API-Key header read from ROXY_API_KEY, server side only.
- Every chart, horoscope, panchang, dasha and compatibility call needs latitude, longitude and timezone from GET /location/search?q={city}. Never ask a person for coordinates.
- A 200 is clean JSON with no wrapper. Errors are { error, code, doc_url }, and a 400 carries issues[]. Retry only 429 and 5xx.
- Add ?lang= for en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant.
Prefer a scoped rule file? The same body works as .devin/rules/roxyapi.md, with .windsurf/rules/ still read as a fallback. Rule files cap at 12,000 characters each.
Step 4, copy the prompt for what you are building
Every app prompt lives on one page: AI prompts. Adding a feature to a repo you already have is the Add RoxyAPI to an existing app prompt; a whole app from a blank project is Astrology Birth Chart App or the domain prompt beside it.
Frequently asked questions
Which config file does Windsurf read for MCP servers?
It depends on the agent in the tab. A new tab defaults to the Devin Local agent, which reads the Devin CLI config files: ~/.config/devin/mcp_config.json at user scope, .devin/mcp_config.json at project scope, and the gitignored .devin/mcp_config.local.json locally. The legacy Cascade agent reads ~/.codeium/windsurf/mcp_config.json and ignores the Devin files.
serverUrl or url for the RoxyAPI server?
Cascade remote servers use serverUrl. The Devin Local config uses url and infers Streamable HTTP from it. Putting the wrong key in either file leaves the server configured and never connected, so match the field to the file you are editing.
Why can the agent only see some of the RoxyAPI tools?
Cascade limits itself to 100 tools at any time, and RoxyAPI exposes 258+ tools across 18 domains. Connect only the domain servers you are building with, and toggle off unused tools on each server settings page, reached from the MCPs icon at the top right of the Cascade panel.
Is RoxyAPI free to try with Windsurf?
The docs server at https://roxyapi.com/mcp/docs needs no key and returns documentation, so the agent writes correct code from the first prompt. Live calculations across the domains need your API key, billed flat, 1 request to 1 quota unit, every domain included.