Skip to content

Commit 057078e

Browse files
Replace Claude for Desktop with VS Code + Copilot in server quickstart
Claude for Desktop is not available on Linux, making it a stumbling block for the server quickstart. Replace the testing instructions with VS Code + GitHub Copilot, which works on all platforms and is free to use. - Replace `claude_desktop_config.json` setup with `.vscode/mcp.json` - Replace Claude Desktop troubleshooting with VS Code-specific guidance - Generalize "under the hood" section to say "LLM" instead of "Claude" - Update intro references This aligns the Python SDK quickstart with the TypeScript SDK, which made the same change in modelcontextprotocol/typescript-sdk#1557.
1 parent 7e5dbfd commit 057078e

File tree

1 file changed

+46
-132
lines changed

1 file changed

+46
-132
lines changed

docs/server-quickstart.md

Lines changed: 46 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
# Quickstart: Build a weather server
22

3-
In this tutorial, we'll build a simple MCP weather server and connect it to a host, Claude for Desktop.
3+
In this tutorial, we'll build a simple MCP weather server and connect it to a host.
44

55
## What we'll be building
66

7-
We'll build a server that exposes two tools: `get_alerts` and `get_forecast`. Then we'll connect the server to an MCP host (in this case, Claude for Desktop).
8-
9-
!!! note
10-
11-
Servers can connect to any client. We've chosen Claude for Desktop here for simplicity, but we also have guides on [building your own client](client-quickstart.md) as well as a [list of other clients here](https://modelcontextprotocol.io/clients).
7+
We'll build a server that exposes two tools: `get_alerts` and `get_forecast`. Then we'll connect the server to an MCP host (in this case, VS Code with GitHub Copilot).
128

139
## Core MCP concepts
1410

@@ -231,99 +227,50 @@ if __name__ == "__main__":
231227

232228
Always use `print(..., file=sys.stderr)` or the `logging` module instead of plain `print()` in stdio-based MCP servers. Standard output is reserved for JSON-RPC protocol messages, and writing to it with `print()` will corrupt the communication channel.
233229

234-
Your server is complete! Let's now test it from an existing MCP host, Claude for Desktop.
235-
236-
## Testing your server with Claude for Desktop
237-
238-
!!! note
239-
240-
Claude for Desktop is not yet available on Linux. Linux users can proceed to the [Building a client](client-quickstart.md) tutorial to build an MCP client that connects to the server we just built.
241-
242-
First, make sure you have Claude for Desktop installed. [You can install the latest version here.](https://claude.ai/download) If you already have Claude for Desktop, **make sure it's updated to the latest version.**
243-
244-
We'll need to configure Claude for Desktop for whichever MCP servers you want to use. To do this, open your Claude for Desktop App configuration at `~/Library/Application Support/Claude/claude_desktop_config.json` in a text editor. Make sure to create the file if it doesn't exist.
245-
246-
For example, if you have [VS Code](https://code.visualstudio.com/) installed:
247-
248-
=== "macOS/Linux"
249-
250-
```bash
251-
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
252-
```
253-
254-
=== "Windows"
255-
256-
```powershell
257-
code $env:AppData\Claude\claude_desktop_config.json
258-
```
230+
Your server is complete! Let's now test it from an existing MCP host.
259231

260-
You'll then add your servers in the `mcpServers` key. The MCP UI elements will only show up in Claude for Desktop if at least one server is properly configured.
232+
## Testing your server in VS Code
261233

262-
In this case, we'll add our single weather server like so:
263-
264-
=== "macOS/Linux"
265-
266-
```json
267-
{
268-
"mcpServers": {
269-
"weather": {
270-
"command": "uv",
271-
"args": [
272-
"--directory",
273-
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
274-
"run",
275-
"weather.py"
276-
]
277-
}
278-
}
279-
}
280-
```
281-
282-
=== "Windows"
283-
284-
```json
285-
{
286-
"mcpServers": {
287-
"weather": {
288-
"command": "uv",
289-
"args": [
290-
"--directory",
291-
"C:\\ABSOLUTE\\PATH\\TO\\PARENT\\FOLDER\\weather",
292-
"run",
293-
"weather.py"
294-
]
295-
}
296-
}
297-
}
298-
```
299-
300-
!!! warning
301-
302-
You may need to put the full path to the `uv` executable in the `command` field. You can get this by running `which uv` on macOS/Linux or `where uv` on Windows.
234+
[VS Code](https://code.visualstudio.com/) with [GitHub Copilot](https://github.com/features/copilot) can discover and invoke MCP tools via agent mode. [Copilot Free](https://github.com/features/copilot/plans) is sufficient to follow along.
303235

304236
!!! note
305237

306-
Make sure you pass in the absolute path to your server. You can get this by running `pwd` on macOS/Linux or `cd` on Windows Command Prompt. On Windows, remember to use double backslashes (`\\`) or forward slashes (`/`) in the JSON path.
238+
Servers can connect to any client. We've chosen VS Code here for simplicity, but we also have a guide on [building your own client](client-quickstart.md) as well as a [list of other clients here](https://modelcontextprotocol.io/clients).
307239

308-
This tells Claude for Desktop:
240+
### Set up VS Code
309241

310-
1. There's an MCP server named "weather"
311-
2. To launch it by running `uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py`
242+
1. Install [VS Code](https://code.visualstudio.com/) (version 1.99 or later).
243+
2. Install the **GitHub Copilot** extension from the VS Code Extensions marketplace.
244+
3. Sign in to your GitHub account when prompted.
312245

313-
Save the file, and restart **Claude for Desktop**.
246+
### Configure the MCP server
314247

315-
### Test with commands
248+
Open your `weather` project in VS Code, then create a `.vscode/mcp.json` file in the project root:
316249

317-
Let's make sure Claude for Desktop is picking up the two tools we've exposed in our `weather` server. You can do this by looking for the "Add files, connectors, and more" icon.
250+
```json
251+
{
252+
"servers": {
253+
"weather": {
254+
"type": "stdio",
255+
"command": "uv",
256+
"args": ["run", "weather.py"]
257+
}
258+
}
259+
}
260+
```
318261

319-
After clicking on the plus icon, hover over the "Connectors" menu. You should see the `weather` server listed.
262+
VS Code may prompt you to trust the MCP server when it detects this file. If prompted, confirm to start the server.
320263

321-
If your server isn't being picked up by Claude for Desktop, proceed to the [Troubleshooting](#troubleshooting) section for debugging tips.
264+
To verify, run **MCP: List Servers** from the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`). The `weather` server should show a running status.
322265

323-
If the server has shown up in the "Connectors" menu, you can now test your server by running the following commands in Claude for Desktop:
266+
### Use the tools
324267

325-
- What's the weather in Sacramento?
326-
- What are the active weather alerts in Texas?
268+
1. Open **Copilot Chat** (`Ctrl+Alt+I` / `Ctrl+Cmd+I`).
269+
2. Select **Agent** mode from the mode selector at the top of the chat panel.
270+
3. Click the **Tools** button to confirm `get_alerts` and `get_forecast` appear.
271+
4. Try these prompts:
272+
- "What's the weather in Sacramento?"
273+
- "What are the active weather alerts in Texas?"
327274

328275
!!! note
329276

@@ -333,57 +280,28 @@ If the server has shown up in the "Connectors" menu, you can now test your serve
333280

334281
When you ask a question:
335282

336-
1. The client sends your question to Claude
337-
2. Claude analyzes the available tools and decides which one(s) to use
283+
1. The client sends your question to the LLM
284+
2. The LLM analyzes the available tools and decides which one(s) to use
338285
3. The client executes the chosen tool(s) through the MCP server
339-
4. The results are sent back to Claude
340-
5. Claude formulates a natural language response
341-
6. The response is displayed to you!
286+
4. The results are sent back to the LLM
287+
5. The LLM formulates a natural language response
288+
6. The response is displayed to you
342289

343290
## Troubleshooting
344291

345-
??? "Claude for Desktop integration issues"
346-
347-
**Getting logs from Claude for Desktop**
348-
349-
Claude.app logging related to MCP is written to log files in `~/Library/Logs/Claude`:
292+
??? "VS Code integration issues"
350293

351-
- `mcp.log` will contain general logging about MCP connections and connection failures.
352-
- Files named `mcp-server-SERVERNAME.log` will contain error (stderr) logging from the named server.
294+
**Server not appearing or fails to start**
353295

354-
You can run the following command to list recent logs and follow along with any new ones:
355-
356-
```bash
357-
# Check Claude's logs for errors
358-
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
359-
```
296+
1. Verify you have VS Code 1.99 or later (`Help > About`) and that GitHub Copilot is installed.
297+
2. Verify the server runs without errors: run `uv run weather.py` in the `weather` directory — the process should start and wait for input. Press `Ctrl+C` to exit.
298+
3. Check the server logs: in **MCP: List Servers**, select the server and choose **Show Output**.
299+
4. If the `uv` command is not found, use the full path to the `uv` executable in `.vscode/mcp.json`.
360300

361-
**Server not showing up in Claude**
301+
**Tools don't appear in Copilot Chat**
362302

363-
1. Check your `claude_desktop_config.json` file syntax
364-
2. Make sure the path to your project is absolute and not relative
365-
3. Restart Claude for Desktop completely
366-
367-
!!! warning
368-
369-
To properly restart Claude for Desktop, you must fully quit the application:
370-
371-
- **Windows**: Right-click the Claude icon in the system tray (which may be hidden in the "hidden icons" menu) and select "Quit" or "Exit".
372-
- **macOS**: Use Cmd+Q or select "Quit Claude" from the menu bar.
373-
374-
Simply closing the window does not fully quit the application, and your MCP server configuration changes will not take effect.
375-
376-
**Tool calls failing silently**
377-
378-
If Claude attempts to use the tools but they fail:
379-
380-
1. Check Claude's logs for errors
381-
2. Verify your server builds and runs without errors
382-
3. Try restarting Claude for Desktop
383-
384-
**None of this is working. What do I do?**
385-
386-
Please refer to our [debugging guide](https://modelcontextprotocol.io/legacy/tools/debugging) for better debugging tools and more detailed guidance.
303+
1. Confirm you're in **Agent** mode (not Ask or Edit mode).
304+
2. Run **MCP: Reset Cached Tools** from the Command Palette, then recheck the **Tools** list.
387305

388306
??? "Weather API issues"
389307

@@ -405,10 +323,6 @@ When you ask a question:
405323

406324
This isn't an error — it just means there are no current weather alerts for that state. Try a different state or check during severe weather.
407325

408-
!!! note
409-
410-
For more advanced troubleshooting, check out our guide on [Debugging MCP](https://modelcontextprotocol.io/legacy/tools/debugging).
411-
412326
## Next steps
413327

414328
Now that your server is running locally, here are some ways to go further:

0 commit comments

Comments
 (0)