
# GitHub Copilot astrology MCP, agent mode setup

> One `mcp.json` block hands Copilot 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.

[GitHub Copilot](https://github.com/features/copilot) in agent mode calls MCP tools while it writes. RoxyAPI runs as a Remote MCP server over Streamable HTTP, so the keyless docs server answers every question about endpoints, fields and SDK methods, and a per-domain server pulls a real natal chart, horoscope or tarot spread mid-build. MCP has been generally available since VS Code 1.102, and the tools appear in **Agent** mode, not Ask mode.

## Step 1, the docs server (keyless)

Create `.vscode/mcp.json` in your workspace, or run **MCP: Open User Configuration** from the command palette to add it for every project. The top-level key is `servers`:

```json
{
  "servers": {
    "roxy-docs": {
      "type": "http",
      "url": "https://roxyapi.com/mcp/docs"
    }
  }
}
```

That is 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.

Open the Chat view, switch to **Agent**, and 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. Define an input variable so VS Code prompts for the key once and stores it securely, instead of writing it into the file:

```json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "roxy-api-key",
      "description": "RoxyAPI key",
      "password": true
    }
  ],
  "servers": {
    "roxy-docs": {
      "type": "http",
      "url": "https://roxyapi.com/mcp/docs"
    },
    "roxy-astrology": {
      "type": "http",
      "url": "https://roxyapi.com/mcp/astrology",
      "headers": { "X-API-Key": "${input:roxy-api-key}" }
    }
  }
}
```

Add a `roxy-<domain>` block for any other domain, reusing the same `${input:roxy-api-key}` so VS Code asks once: `vedic-astrology`, `forecast`, `human-design`, `chinese-astrology`, `feng-shui`, `mesoamerican-astrology`, `vastu`, `numerology`, `kabbalah`, `tarot`, `biorhythm`, `ayurveda`, `iching`, `crystals`, `dreams`, `angel-numbers`, `location`. Get a key on the [pricing page](/pricing), or mint another at [your account](/account).

Run **MCP: List Servers** to confirm each one is running with its tool count, then use **Configure Tools** in the Chat view to switch the RoxyAPI tools on.

## Step 3, point Copilot at the truth sources

Copilot reads `.github/copilot-instructions.md` on every request in the workspace, and it reads an `AGENTS.md` in the workspace root the same way. Either file takes this block:

```markdown
## 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/{domain}/openapi.json before using an endpoint. 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 }, 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.
```

Every [SDK](/docs/sdk "RoxyAPI TypeScript, Python, PHP, C#, and Go SDKs") ships the same playbook inside the installed package, so Copilot picks it up the moment you install one.

## Step 4, copy the prompt for what you are building

Every app prompt lives on one page: [AI prompts](/docs/prompts). Adding a feature to a repo you already have is the [Add RoxyAPI to an existing app](/docs/prompts#add-roxyapi-to-an-existing-app) prompt; a whole app from a blank workspace is [Astrology Birth Chart App](/docs/prompts#astrology-birth-chart-app) or the domain prompt beside it.

## Frequently asked questions


### Why is my RoxyAPI server missing from MCP: List Servers?
The top-level key in `mcp.json` is `servers`, not `mcpServers`, so a config pasted from another MCP client loads nothing. A remote RoxyAPI server also needs `"type": "http"` beside its `url`; `command` is for local stdio servers only.

### How do I keep the RoxyAPI key out of mcp.json?
Declare it in the `inputs` array as a `promptString` with `"password": true`, then reference it as `${input:roxy-api-key}` in `headers`. VS Code prompts for the value the first time the server starts and stores it securely, so the key never appears in the file and the file stays safe to commit.

### Which config file works across every Copilot surface?
`.vscode/mcp.json` is read by VS Code itself, and sessions running on Agent Host get the configuration forwarded, except servers that need interactive input such as `${input:...}` variables. For a config that is portable across Agent Host and the other Copilot tools, put the same servers in a workspace `.mcp.json` or a user `~/.copilot/mcp-config.json`, which Agent Host reads natively.

### Where do standing RoxyAPI instructions go?
`.github/copilot-instructions.md` in the repository, applied to every chat request in that workspace. An `AGENTS.md` in the workspace root is applied the same way and is read by other agents too, so it is the better choice on a repo more than one tool touches.

### Is RoxyAPI free to try with GitHub Copilot?
The docs server at https://roxyapi.com/mcp/docs needs no key and returns documentation, so Copilot writes correct code from the first prompt. Live calculations across the domains need a key from the [pricing page](/pricing), billed flat, 1 request to 1 quota unit, every domain included.
