Integrations · Visual Studio Code (GitHub Copilot)
VS Code reads MCP servers from .vscode/mcp.json, under a servers key rather than Claude's mcpServers, and can prompt for the API key instead of storing it. That makes the RichAPI server the one enrichment integration you can commit to the repo and hand to the whole team without handing them a key.
Last updated September 22, 2026
Create a RichAPI account at app.richapi.ai/signup and copy your API key.
25 free credits, no card.
Create .vscode/mcp.json in the repo.
VS Code uses a servers object, not Claude's mcpServers, and supports an inputs array so the key is prompted for and stored by VS Code rather than written into the file.
Reload the window.
Copilot Chat in agent mode lists the RichAPI tools; the first call asks you to approve the tool.
Commit .vscode/mcp.json.
Every teammate who opens the repo gets the server and is prompted for their own key on first use.
Reference a tool directly in chat when you want a specific one rather than whatever the model picks.
Copy, paste, edit the brackets, run.
Why it matters
Every other MCP client stores your key in a file on your machine. VS Code can prompt for it and keep it out of the config, so the config becomes a repo artifact like a launch task, reviewed in a pull request and shared with the team.
RichAPI runs a hosted MCP server, and VS Code is the client where connecting it is a team decision rather than a personal one. The config lives in the repo. The key does not.
Create an account at `app.richapi.ai/signup` and copy your key. Then create `.vscode/mcp.json`: ```json { "inputs": [ { "type": "promptString", "id": "richapi-key", "description": "RichAPI API key", "password": true } ], "servers": { "richapi": { "type": "http", "url": "https://mcp.richapi.ai/mcp", "headers": { "x-api-key": "${input:richapi-key}" } } } } ``` Two differences from the [Claude config](/integrations/claude) that cost people twenty minutes if they copy the wrong one. VS Code uses `servers`, not `mcpServers`. And it can talk to a remote server directly, so there is no `npx mcp-remote` shim in the picture. The `inputs` block is what keeps the key out of the file. VS Code prompts for the key the first time the server starts and stores it itself, so `${input:richapi-key}` is what sits in the file. That file is then safe to commit, review in a pull request, and hand to everyone with clone access. Each person supplies their own key, and because usage attributes per key you can see who spent what. The `type` field name has moved across VS Code releases (`http`, `sse`, and earlier variants). If the direct form refuses to start, the `mcp-remote` shim block from the Claude page works here too, under `servers` rather than `mcpServers`. Reload the window, open Copilot Chat, switch to agent mode, and the RichAPI tools appear in the tool picker. The first call asks for approval.
The tools are the REST endpoints under their own names: - `email_finder` and [`email_verifier`](/api/email-verifier) - `phone_finder` - [`enrich_company`](/api/company-enrichment) and `enrich_profile`, both taking a LinkedIn URL rather than a domain - `people_search`, priced per result - `web_tech_stack` The use that earns its place in an editor is test data. Seed files and fixtures are where fake enrichment data does the most damage: `jane@example.com` verifies as nothing in particular, so your handling of a risky address never runs until a customer hits it. > Run `email_verifier` over `db/seeds/contacts.sql` and replace the invented addresses with real ones, keeping the same row count. > Call `phone_finder` twice with input you expect to miss, then write the retry branch against what actually came back. The second prompt is the one that matters. A miss on a multi-provider waterfall endpoint is a 2xx with `success: false`, not an error status. Code that branches on HTTP status alone treats it as a success and writes an empty phone number into your database. Seeing the real shape once in the editor is cheaper than finding it in a report.
On waterfall responses, `execution_log` shows who ran and what each returned. The response also carries a `billed` field. We do not publish a provider list, because it changes. The log is the per-call version of that answer, and it is machine-readable, so you can log it alongside your own request id. Billing is prepaid credits from one pool shared between MCP and REST: each endpoint bills its published per-call rate, with `people_search` billed per result. Tiers are on [/pricing](/pricing), and the [waterfall cost calculator](/tools/waterfall-cost-calculator) will do the arithmetic for a list. A miss costs zero on `email_finder`, `email_verifier` and `phone_finder`. Every other endpoint bills on a 2xx, empty results included. One warning is specific to agent mode. Approve a tool for the session, then ask for something list-shaped, and the agent will loop through the list. Nothing here sends email or writes to a CRM, so the damage is credits rather than a mail-merge disaster, but approve per call until you have a feel for it, and put bulk work in [n8n](/integrations/n8n) or code where the iteration count is visible.
**Does this need Copilot?** You need an MCP-capable chat client in VS Code, and Copilot agent mode is the one most people have. The server itself does not care who calls it. **Can I configure it once for every workspace?** Yes, through user settings rather than `.vscode/mcp.json`. The repo-level file is the version worth committing, because it travels with the project. **Is the key safe in a committed config?** The key is never in the config. `${input:richapi-key}` is, and VS Code prompts each person for their own. **Is this an official GitHub or Microsoft integration?** No. Standard MCP server, standard client, no marketplace listing. **Same key as my backend?** Yes, and the same credit pool. `https://api.richapi.ai/api/v1/{endpoint}` with an `x-api-key` header.
25 free credits, no card. Drop the config in, commit it, and let the next person on the team enrich a fixture without filing a ticket for a key. Other clients on the [integrations hub](/integrations): [Claude](/integrations/claude) and [Windsurf](/integrations/windsurf).