使用说明
Copilot - 构建你自己的MCP服务器
学习如何创建并集成模型上下文协议(MCP)服务器与GitHub Copilot,以通过自定义工具和数据源扩展其功能。
先决条件
- 首选集成开发环境(IDE): Visual Studio Code 或 JetBrains 集成开发环境(IntelliJ IDEA、PyCharm、WebStorm)
- GitHub Copilot: 已安装Copilot和Copilot Chat扩展
- 终端: 在集成开发环境(IDE)中打开终端窗口
- 容器运行时: 已安装Docker或Podman
- 运行时间: 已安装 Python 3.10+ 或 Node.js 18+
- 紫外线 已安装(针对规格套件)
MCP简介与路径选择
目的: 了解MCP服务器的工作原理以及它们如何扩展Copilot的功能。
集成开发环境(IDE)支持: 在Visual Studio Code的Copilot Chat中已普遍可用(GA), 在Visual Studio、JetBrains、Eclipse和Xcode中,Copilot已进入公开预览阶段。
MCP 概述:
- MCP(模型上下文协议)服务器提供了一种标准化的交互方式 配备各种工具、服务和系统。
- 一个MCP服务器在开发人员的工作站上本地运行,例如作为 Docker 容器(也可以通过 HTTP 使用远程服务器)。
- 开发者可以直接在他们的集成开发环境(IDE)中初始化和管理MCP服务器,或者 命令行工具。
- MCP允许外部工具和数据源与(系统/平台)实现无缝集成 Copilot。它们支持多种类型的集成,包括数据库, 应用程序编程接口(APIs)和云服务。
- MCP服务器支持实时探索、执行和交互 连接的资源。
- 已经提供了多种多样的MCP服务器。 必须谨慎行事 在运行MCP服务器时 在网络上被发现,因为可能存在安全隐患 或者恶意的实现(方式)。
选择你的道路
- 路径A:新加入MCP? → 以……开始 了解MCP服务器 学习 通过使用现有的MCP服务器
- 路径B:熟悉MCP吗? → 跳至 构建您自己的MCP服务器 以创建一个 从零开始定制服务器
路径A:了解MCP服务器
PostgreSQL MCP 服务器设置
目的: 学习如何设置和使用现有的MCP服务器。
VS Code 安装设置
- 打开命令面板:
Shift+Control+P(Windows) 或Shift+CMD+P(Mac) - 选择
> MCP: Add server... - 选择
Docker image => mcp/postgres - 当提示“是否从 MCP 安装 MCP/PostgreSQL?”时,请选择“允许”
- 输入适用于您系统的Postgres URL:
- Mac:
postgresql://postgres:postgres@host.docker.internal:5432/mydb - 代码空间 / Linux:
postgresql://postgres:postgres@172.17.0.1:5432/mydb
- Mac:
- 如果提示输入单个连接详情,请使用:
- 端口: 五十四三二
- 数据库名称: mydb(可译为“我的数据库”,但具体翻译可能根据上下文有所调整,这里提供一个通用的翻译)
- 用户名: PostgreSQL(简称Postgres)
- 密码: PostgreSQL(通常简称为Postgres)
- 输入服务器ID:“Postgres”
- 选择保存配置的位置:选择“工作区设置”
- 集成开发环境(IDE)应该会打开
mcp.json - 通过点击播放按钮来启动服务器
mcp.json - 点击扳手图标,验证工具是否在代理模式下可用
JetBrains 安装程序
-
打开设置 → 工具 → MCP 服务器,并启用 MCP 服务器
-
打开GitHub Copilot Chat并切换到Agent模式
-
确保Docker正在运行
-
点击模型选择旁边的扳手图标以打开工具菜单
-
点击“+ 添加更多工具”
-
A.
mcp.json文件将被创建 -
为您的系统添加适当的配置:
Mac/Windows:
{ "servers": { "postgres": { "command": "docker", "args": [ "run", "-i", "--rm", "mcp/postgres", "postgresql://postgres:postgres@host.docker.internal:5432/mydb" ] } } }Linux:
{ "servers": { "postgres": { "command": "docker", "args": [ "run", "-i", "--rm", "mcp/postgres", "postgresql://postgres:postgres@172.17.0.1:5432/mydb" ] } } } -
再次点击工具图标——你应该会看到
query被列为新(类别/项目)下的 创建了PostgreSQL MCP服务器 -
GitHub Copilot 将自动启动已配置的服务器。请检查 GitHub Copilot MCP 状态消息日志窗口
PostgreSQL MCP 故障排除
连接到 PostgreSQL MCP 服务器时遇到问题?请尝试以下解决方案:
-
验证您的
mcp.json配置 与您的操作系统匹配:Mac/Windows:
{ "servers": { "postgres": { "command": "docker", "args": [ "run", "-i", "--rm", "mcp/postgres", "postgresql://postgres:postgres@host.docker.internal:5432/mydb" ] } } }Linux:
{ "servers": { "postgres": { "command": "docker", "args": [ "run", "-i", "--rm", "mcp/postgres", "postgresql://postgres:postgres@172.17.0.1:5432/mydb" ] } } } -
停止所有正在运行的MCP容器 在启动服务器之前:
# Check for running MCP containers docker ps | grep mcp # Stop the container (replace container_id with actual ID) docker stop <container_id> -
备选方案:在不使用 Docker 的情况下运行如果Docker不可用,您可以使用npm来运行服务器:
{ "servers": { "postgres": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb" ] } } }数据库替代方案:
- 使用 Podman 与
docker-compose.yml文件 - 使用官方 PostgreSQL 安装程序在本地安装 PostgreSQL
- 使用您工作环境中现有的任何测试数据库
- 使用 Podman 与
测试 PostgreSQL MCP 服务器
目的: 对PostgreSQL MCP服务器进行样本数据库测试。
先决条件: Docker 已安装并正在运行。
步骤:
-
导航至练习目录并启动数据库:
cd mcp-exercise docker compose up db -
在Copilot Chat中,确保已选择代理模式
-
在工具菜单中确认Postgres MCP服务器及其“查询”工具已启用
-
使用以下示例查询进行测试:
#query what's the schema of my database?#query List all tables in the database#query Show all book loans#query Show all users who have at least one loan
反思: 考虑MCP服务器提供的信息如何能够 在提示中加以利用。它如何有助于构建完整、由人工智能驱动的开发流程?
使用带有提示文件的 PostgreSQL MCP 服务器
目的: 使用提示文件自动化从数据库模式生成ER图。
步骤:
-
创建一个新的提示文件
-
添加以下内容:
--- mode: 'agent' tools: ['query'] description: 'Generate or update the ER diagram of the database using Mermaid syntax.' --- Use the #query tool to get a description of the PostgreSQL database schema. Then generate an Entity Relationship diagram based on the schema. Use Mermaid syntax to create the diagram. Create the diagram in a file called ER.md. Create the file if it doesn't exist yet or update the existing file. -
通过输入来测试提示文件
/er在代理模式下。如果需要,请优化提示语 Copilot无法满足提示的目的 -
要查看生成的Mermaid图表,请将文件推送到GitHub仓库 并在那里打开文件
下一步
- 思考一下,与使用传统方法相比,使用现有的MCP服务器的感受如何 Copilot的使用
- 考虑探索其他现有的MCP服务器(参见 探索其他MCP服务器)
- 继续按照路径B,从零开始构建你自己的MCP服务器
路径B:构建您自己的MCP服务器
目的: 通过从零开始构建一台MCP服务器来学习其工作原理。这 揭开MCP工具的神秘面纱,了解它们的实际功能及如何扩展Copilot的能力。
先决条件:
- 安装 Python 3.10+ 或 Node.js 18+
步骤
1. 学习基础知识
阅读官方文档: MCP 文档 - 构建服务器. 该 文档为Python和TypeScript/Node.js提供了完整的示例。
2. 选择你的项目创意
- 项目文件分析器: 统计代码行数,查找待办事项(TODOs),列出最近更改
- 模拟数据生成器: 为用户、产品、交易生成测试数据
- 开发助手: 检查依赖项、环境变量、系统状态
- 自定义计算器: 单位换算、时区转换、专业计算
- 定制解决方案: 根据你的日常发展需求,创造一些东西
3. 选择您的实施路径
构建服务器时,您有两个选择。您可以使用Spec Kit来进行结构化、有指导的流程,或者手动构建以获得更多的控制权。
选项A:使用规范套件以实现结构化方法
使用Spec Kit是定义服务器规格并生成技术方案的推荐方法。了解更多关于 GitHub上的规范套件(或:规格工具包)。
-
安装Spec Kit CLI:
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git -
初始化您的项目:
specify init . --ai copilot -
定义服务器的规格: 使用
/speckit.specify在聊天中输入命令来描述你希望你的MCP服务器执行的操作。例如:/speckit.specify Build an MCP server that acts as a project file analyzer. It should have tools to count lines of code, find TODO comments, and list recent git changes. -
制定技术计划: 使用
/speckit.plan命令以指定您将使用的技术。/speckit.plan The server will be built using Python and the `mcp` library. It will have three tools: `count_lines`, `find_todos`, and `recent_changes`. -
将工作分解为任务: 使用
/speckit.tasks生成实现服务器所需各个任务的命令。/speckit.tasks -
执行实施: 使用
/speckit.implement执行实施的命令。/speckit.implement
选项B:手动搭建您的服务器
如果你更倾向于自己搭建服务器,请遵循官方的MCP文档。你可以使用以下库:
- python
mcp图书馆 - TypeScript/Node.js:
@modelcontextprotocol/sdk
4. 添加到集成开发环境(IDE)
VS Code 集成
- 打开命令面板:
Shift+Cmd+P(Mac) /Shift+Ctrl+P(Windows) - 类型
MCP: Add server... - 选择
Custom command - 输入您的服务器命令:
- Python(uv): 命令:
uv,参数:--directory /PATH/TO/your-server run server.py - Node.js: 命令:
node论点:/PATH/TO/your-server/dist/index.js
- Python(uv): 命令:
- 输入服务器ID(例如,“my-tools”)
- 选择“工作区设置”
- 使用生成的播放按钮启动服务器
mcp.json
JetBrains 集成
-
打开设置 → 工具 → MCP 服务器,并启用 MCP 服务器
-
打开GitHub Copilot Chat并切换到代理模式
-
点击模型选择旁边的扳手图标以打开工具菜单
-
点击“+ 添加更多工具”
-
A.
mcp.json文件将被创建 -
添加您的服务器配置:
{ "servers": { "my-python-server": { "command": "uv", "args": [ "--directory", "/PATH/TO/YOUR-SERVER-DIRECTORY", "run", "server.py" ] } } }
6. 测试您的服务器
-
重新加载您的集成开发环境(IDE):
- VS Code:
Cmd+Shift+P→ “开发者:重新加载窗口” - JetBrains(公司名,可译为“杰特布瑞恩斯”或直接保留原名): 如有需要,请重启IDE
- VS Code:
-
验证集成:
- 以代理模式打开Copilot聊天
- 点击扳手图标(🔧)并确认您的工具已显示
- 启用您的自定义工具
- 根据你的实现,使用相关提示进行测试
7. 故障排除
- 确保路径中的(内容/设置等,具体根据上下文确定)
mcp.json使用绝对路径 - VS Code: 检查输出面板(查看 → 输出 → GitHub Copilot)中的错误
- JetBrains: 检查“GitHub Copilot MCP 日志”工具窗口
- 验证服务器在手动启动时能够无错误运行
- 确保服务器已启动(界面上的绿色播放按钮表示
mcp.json)
讨论要点
- 构建MCP服务器与常规功能开发有何不同?
- 贵公司内部有哪些工具可以通过MCP集成而受益?
- 您会在什么时候选择MCP服务器,而不是自定义聊天模式或提示文件?
探索其他MCP服务器(可选)
剧作家MCP
目的: 在代理模式下启用浏览器自动化。
步骤:
- 阅读 Playwright MCP 文档
- 将 Playwright MCP 添加到您的项目中
- 创建浏览器自动化查询:
GitHub MCP(注:MCP在此处可能代表特定的项目、组织或概念,但根据上下文无法确定具体含义,因此直接保留原样翻译)
目的: 将AI工具直接连接到GitHub以进行仓库管理, 问题/拉取请求(PR)自动化,以及代码分析。
步骤:
- 阅读 GitHub MCP 文档
- 将GitHub MCP添加到您的项目中
- 根据您的需求配置工具集:仓库、问题、拉取请求、操作, 代码安全等。
- 带提示的测试:
- “列出我最近的存储库”
- “显示此仓库中的未解决问题”
- “分析最近的提交”
- 考虑如何通过GitHub集成来优化您的开发工作流程 通过人工智能驱动的存储库洞察
其他MCP服务器
目的: 探索用于各种集成的额外MCP服务器。
步骤:
- 浏览至 mcp.so(注:在中文语境中,通常不会直接翻译文件扩展名如“.so”,因为它代表的是特定编程语言(如C/C++)的共享库文件格式,且在不同操作系统中含义一致。此处保留原样以体现技术准确性。) 发现可用的MCP服务器
- 探索可与您的开发工具集成的服务器: