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
- 如果提示输入单个连接详情,请使用:
- 端口: 五十四三二 - 数据库名称: 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 - 备选方案:在不使用 Docker 的情况下运行如果Docker不可用,您可以使用npm来运行服务器:
{
"servers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://localhost/mydb"
]
}
}
}数据库替代方案:
- 使用 Podman 与 docker-compose.yml 文件 - 使用官方 PostgreSQL 安装程序在本地安装 PostgreSQL - 使用您工作环境中现有的任何测试数据库
测试 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服务器(参见
- 继续按照路径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是定义服务器规格并生成技术方案的推荐方法。了解更多关于 。
- 安装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
- 输入服务器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
- 验证集成:
- 以代理模式打开Copilot聊天 - 点击扳手图标(🔧)并确认您的工具已显示 - 启用您的自定义工具 - 根据你的实现,使用相关提示进行测试
7. 故障排除
- 确保路径中的(内容/设置等,具体根据上下文确定)
mcp.json使用绝对路径 - VS Code: 检查输出面板(查看 → 输出 → GitHub Copilot)中的错误
- JetBrains: 检查“GitHub Copilot MCP 日志”工具窗口
- 验证服务器在手动启动时能够无错误运行
- 确保服务器已启动(界面上的绿色播放按钮表示
mcp.json)
讨论要点
- 构建MCP服务器与常规功能开发有何不同?
- 贵公司内部有哪些工具可以通过MCP集成而受益?
- 您会在什么时候选择MCP服务器,而不是自定义聊天模式或提示文件?
探索其他MCP服务器(可选)
剧作家MCP
目的: 在代理模式下启用浏览器自动化。
步骤:
- 阅读 Playwright MCP 文档
- 将 Playwright MCP 添加到您的项目中
- 创建浏览器自动化查询:
- 登录到您的测试环境 - 浏览至 DuckDuckGo(注:这是一个搜索引擎的名称,直接翻译可能无法准确传达其品牌特色,但在此按字面意思翻译为“嘎嘎搜嘎嘎”并不合适,实际使用时应保留原名或采用官方中文译名,如“度娘”虽非官方但常被用来指代搜索引擎,此处为保持翻译形式一致而给出直译示例,实际应用请参考官方或通用译法)进行查询,统计搜索结果
GitHub MCP(注:MCP在此处可能代表特定的项目、组织或概念,但根据上下文无法确定具体含义,因此直接保留原样翻译)
目的: 将AI工具直接连接到GitHub以进行仓库管理, 问题/拉取请求(PR)自动化,以及代码分析。
步骤:
- 阅读
- 将GitHub MCP添加到您的项目中
- 根据您的需求配置工具集:仓库、问题、拉取请求、操作,
代码安全等。
- 带提示的测试:
- “列出我最近的存储库” - “显示此仓库中的未解决问题” - “分析最近的提交”
- 考虑如何通过GitHub集成来优化您的开发工作流程
通过人工智能驱动的存储库洞察
其他MCP服务器
目的: 探索用于各种集成的额外MCP服务器。
步骤:
- 浏览至 mcp.so(注:在中文语境中,通常不会直接翻译文件扩展名如“.so”,因为它代表的是特定编程语言(如C/C++)的共享库文件格式,且在不同操作系统中含义一致。此处保留原样以体现技术准确性。) 发现可用的MCP服务器
- 探索可与您的开发工具集成的服务器:
- - GitLab MCP(注:MCP在此处可能是一个特定上下文中的缩写或术语,但没有具体上下文,我们只能将其直译为“GitLab MCP”,在实际应用中可能需要根据具体语境进行解释或翻译) - 困惑度 MCP(或可译为:MCP 困惑度,具体译法可能根据上下文调整) - Slack MCP(注:MCP在此处可能是一个特定上下文中的缩写或专有名词,没有直接的中文对应,因此保持原样)
