如何将VSCode集成MCP Server实现高效开发?

摘要:本文介绍如何在 VS Code 中集成自行开发的 MCP (Model Context Protocol) Server
前言 本文介绍如何在 VS Code 中集成自行开发的 MCP (Model Context Protocol) Server。通过配置 .vscode/mcp.json 文件,可以将自定义的 MCP Server 注册到 VS Code 的 GitHub Copilot 中,从而让 AI 助手能够调用用户开发的工具函数。整个过程包括:编写 MCP Server 代码、配置服务器启动参数、启动服务并测试调用。 注意,Copilot不是必须的,只是vscode 官方对copilot集成更好,其它第三方的模型也能使用MCP Server。 使用Copilot 编写数学工具的mcp server. math.py from fastmcp import FastMCP from typing import TypeAlias, Union from datetime import datetime mcp = FastMCP("math") Number: TypeAlias = Union[int, float] @mcp.tool() def add(a: Number, b: Number) -> Number: """Add two numbers Args: a (Number): The first number b (Number): The second number Returns: Number: The sum of a and b """ return a + b @mcp.tool() def subtract(a: Number, b: Number) -> Number: """Subtract two numbers Args: a (Number): The first number b (Number): The second number Returns: Number: The difference of a and b """ return a - b @mcp.tool() def multiply(a: Number, b: Number) -> Number: """Multiply two numbers Args: a (Number): The first number b (Number): The second number Returns: Number: The product of a and b """ return a * b @mcp.tool() def divide(a: Number, b: Number) -> Number: """Divide two numbers Args: a (Number): The numerator b (Number): The denominator Returns: Number: The quotient of a and b Raises: ValueError: If b is zero """ if b == 0: raise ValueError("Cannot divide by zero") return a / b @mcp.tool() def is_greater_than(a: Number, b: Number) -> bool: """Check if a is greater than b Args: a (Number): The first number b (Number): The second number Returns: bool: True if a is greater than b, False otherwise """ return a > b @mcp.tool() async def get_weather(city: str) -> str: """Get weather for a given city. Args: city (str): The city name Returns: str: A string describing the weather in the given city """ return f"It's always sunny in {city}!" @mcp.tool() async def get_current_datetime() -> str: """Get current date and time. Returns: str: The current date and time in YYYY-MM-DD HH:MM:SS %z format """ return datetime.now().strftime("%Y-%m-%d %H:%M:%S %z") if __name__ == "__main__": # mcp.run(transport="http", host="localhost", port=8001, show_banner=False) mcp.run(transport="stdio", show_banner=False) 创建.vscode/mcp.json { "servers": { "math": { "command": "uv", "args": [ "--directory", "/home/rainux/Documents/workspace/py-dev/mcp-local", "run", "math.py" ] } } } 在mcp.json文件中会显示一个启动的图标,点击启动。 在copilot 聊天窗口中,右下角有一个"配置工具"的图标,点击后在弹出的菜单中可以看到一个math server. 提问测试。如果没调用到mcp tool,可以尝试按Ctrl + Shift + P,输入Reload Window 来重新加载窗口,或者在mcp.json文件中重启mcp server,或者重启vscode. 非Copilot, 以通义灵码为例 在通义灵码的聊天窗口中按提示添加MCP Server 的配置,在手动添加的配置文件中填写如下内容。保存后通义灵码会自动启动MCP Server,然后测试能否调用MCP Tool即可。 { "mcpServers": { "math": { "type": "stdio", "command": "uv", "args": [ "--directory", "/home/rainux/Documents/workspace/py-dev/mcp-local", "run", "math.py" ], "env": { "ROOT_DIR": "/home/rainux/Documents/workspace/py-dev/mcp-local" } } } } 参考 VS Code 官方文档 - Use MCP servers in VS Code