Chapter 10 · Connecting your assistant
VS Code and Copilot
GitHub Copilot's agent mode inside VS Code. One JSON file — with a different root key from every other tool in this chapter.
The one difference that matters. VS Code uses
servers, where Cursor, Claude Desktop, Windsurf and the rest usemcpServers. A config pasted from another tool's instructions silently does nothing: VS Code sees an unrecognised block and never connects. This is the single most common reason a working config appears not to work.
Before you start#
You need: VS Code with GitHub Copilot, in agent mode.
You will know it worked when: The entry in mcp.json shows a running state rather
than a Start action.
Your workspace address is your app's address with /api/mcp on the end. The block on
Settings → Research Access has yours already filled in, with a copy button — use that
rather than typing it.
The guided way — no file editing#
1. Open the Command Palette (Cmd/Ctrl + Shift + P) and run MCP: Add Server.
2. Choose HTTP as the type.
3. Paste your workspace's MCP address:
https://gradworkbench.vercel.app/api/mcp
4. Name it gradworkbench.
5. Choose Global when it asks where to store it, so it applies to every project rather than only this one.
6. VS Code opens a browser to sign in. Approve the connection.
Edit the file instead#
1. For one project, create .vscode/mcp.json in it. For every project, run
MCP: Open User Configuration from the Command Palette, which opens the file VS Code
reads globally.
2. Add the entry — note the root key:
{
"servers": {
"gradworkbench": {
"type": "http",
"url": "https://gradworkbench.vercel.app/api/mcp"
}
}
}
3. To use a key instead of signing in, issue one in Settings → Research Access with Read your workspace and Submit research ticked, and add a headers line:
{
"servers": {
"gradworkbench": {
"type": "http",
"url": "https://gradworkbench.vercel.app/api/mcp",
"headers": { "Authorization": "Bearer sk_your_key_here" }
}
}
}
A key in .vscode/mcp.json inside a repository will be committed if you are not careful.
Either put it in the user configuration instead, or use VS Code's input variables so the
file holds a placeholder and VS Code prompts you for the value.
4. VS Code shows a Start action above the entry. Click it.
Connect the second one, so research gets checked#
Whatever submits a finding is refused when it tries to confirm that same finding. Add a second entry, with a second key that has Read your workspace and Check research ticked — and not Submit research:
{
"servers": {
"gradworkbench": {
"type": "http",
"url": "https://gradworkbench.vercel.app/api/mcp",
"headers": { "Authorization": "Bearer sk_your_first_key" }
},
"gradworkbench-verify": {
"type": "http",
"url": "https://gradworkbench.vercel.app/api/mcp",
"headers": { "Authorization": "Bearer sk_your_second_key" }
}
}
}
Try it#
Open Copilot Chat, switch it to Agent mode, and say:
What's in my GradWorkbench workspace? Just summarise it — don't research anything.
If it comes back with your universities and professor counts, you are connected. Go to what to actually say.
When it doesn't work#
Absolutely nothing happens — the root key is mcpServers instead of servers. See
the box at the top.
"Cannot find command" or the server tries to launch a program — VS Code defaults to a
local command server when "type": "http" is missing, and then tries to run your URL as a
command. Add the type line.
Tools are listed but never used — Copilot only calls MCP tools in Agent mode. Ask mode ignores them.
It works in one project only — you put it in .vscode/mcp.json. Move it to the user
configuration (MCP: Open User Configuration).