Connect DealScore to VS Code
DealScore is a remote MCP server at https://cardealscore.com/api/mcp. VS Code reads .vscode/mcp.json. The entry uses servers, "type": "http", and that URL. Leave headers out. VS Code discovers OAuth from the URL and opens a browser for the email sign-in. After you approve access, Copilot in agent mode can call score_deal.
Add the server
- In the project, create or open
.vscode/mcp.json. The same block works in your user profile. RunMCP: Open User Configurationto open that file. - Paste the config below. Leave headers out. The URL alone is what VS Code uses to start OAuth.
- Save the file. Trust the workspace if VS Code asks. VS Code then opens a browser for the email sign-in.
- Open the email link DealScore sends and approve access. VS Code then calls the server with the access token.
- In Copilot chat, use agent mode and ask it to call
score_dealwith a year, make, model, asking price, and mileage. ZIP is optional.
.vscode/mcp.json
{
"servers": {
"dealscore": {
"type": "http",
"url": "https://cardealscore.com/api/mcp"
}
}
}No headers. VS Code discovers OAuth and opens a browser for the email sign-in. Full setup: /integrations/vs-code.
You can also run MCP: Add Server from the Command Palette. For a new server, that command prefers .mcp.json at the project root. That file uses mcpServers instead of servers. It still offers .vscode/mcp.json. Both files are read. Keep headers off the OAuth entry.
API key, when the browser sign-in is unavailable
VS Code's OAuth path above is the one to use. A client that cannot open a browser can send x-api-key instead. Create the key on /keys. Authorization: Bearer YOUR_KEY works in that header slot too. A header on this block skips the browser sign-in.
MCP config with an API key
{
"servers": {
"dealscore": {
"type": "http",
"url": "https://cardealscore.com/api/mcp",
"headers": { "x-api-key": "YOUR_KEY" }
}
}
}To keep the key out of a file you commit, put ${input:dealscore-key} in the header value. VS Code prompts for it the first time the server starts.
If score_deal is missing
- The OAuth config is
typehttp, aurl, and noheaders. A header on that block skips the browser sign-in. - Finish the email sign-in. An unfinished consent leaves
score_dealunauthorized. - Trust the workspace if VS Code asks. An untrusted server does not start.
coverage: cannot_scorewith a null grade means comps were too thin. The connection worked.score_quota_exceededmeans the monthly cap is spent. The connection worked. Plans: /pricing.
What the agent can call
score_deal grades a deal. Send asking_price and mileage, plus a VIN or year, make, and model. trim and zip are optional. explain_grade maps a delta_pct to a grade without fetching comps. health reports coverage and limits. Free includes 5 scored calls a month and Builder is $19/mo (founding price) for 1,000 scored calls a month. Only coverage: scored counts, and explain_grade and health are never metered. Plans: /pricing. Argument details: /docs/api. Test arguments in the browser first: /try.
Other clients
Cursor, Claude Code, Claude Desktop, Codex, ChatGPT. The REST call and a recorded response are on /used-car-price-api. Every client is also listed on /agents.