MCP服务器构建工具

通过构建自定义MCP服务器扩展GitHub Copilot功能,支持与数据库、API和云服务的集成。

  • by EficodeDemoOrg
  • 本地部署
  • 更新于
在 GitHub 查看 EficodeDemoOrg/copilot-mcp-byo

使用说明

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服务器

PostgreSQL MCP 服务器设置

目的: 学习如何设置和使用现有的MCP服务器。

VS Code 安装设置

  1. 打开命令面板: Shift+Control+P (Windows) 或 Shift+CMD+P (Mac)
  2. 选择 > MCP: Add server...
  3. 选择 Docker image => mcp/postgres
  4. 当提示“是否从 MCP 安装 MCP/PostgreSQL?”时,请选择“允许”
  5. 输入适用于您系统的Postgres URL:
    • Mac: postgresql://postgres:postgres@host.docker.internal:5432/mydb
    • 代码空间 / Linux: postgresql://postgres:postgres@172.17.0.1:5432/mydb
  6. 如果提示输入单个连接详情,请使用:
    • 端口: 五十四三二
    • 数据库名称: mydb(可译为“我的数据库”,但具体翻译可能根据上下文有所调整,这里提供一个通用的翻译)
    • 用户名: PostgreSQL(简称Postgres)
    • 密码: PostgreSQL(通常简称为Postgres)
  7. 输入服务器ID:“Postgres”
  8. 选择保存配置的位置:选择“工作区设置”
  9. 集成开发环境(IDE)应该会打开 mcp.json
  10. 通过点击播放按钮来启动服务器 mcp.json
  11. 点击扳手图标,验证工具是否在代理模式下可用

JetBrains 安装程序

  1. 打开设置 → 工具 → MCP 服务器,并启用 MCP 服务器

  2. 打开GitHub Copilot Chat并切换到Agent模式

  3. 确保Docker正在运行

  4. 点击模型选择旁边的扳手图标以打开工具菜单

  5. 点击“+ 添加更多工具”

  6. A. mcp.json 文件将被创建

  7. 为您的系统添加适当的配置:

    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"
                ]
            }
        }
    }
    
  8. 再次点击工具图标——你应该会看到 query 被列为新(类别/项目)下的 创建了PostgreSQL MCP服务器

  9. GitHub Copilot 将自动启动已配置的服务器。请检查 GitHub Copilot MCP 状态消息日志窗口

PostgreSQL MCP 故障排除

连接到 PostgreSQL MCP 服务器时遇到问题?请尝试以下解决方案:

  1. 验证您的 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"
                ]
            }
        }
    }
    
  2. 停止所有正在运行的MCP容器 在启动服务器之前:

    # Check for running MCP containers
    docker ps | grep mcp
    
    # Stop the container (replace container_id with actual ID)
    docker stop <container_id>
    
  3. 备选方案:在不使用 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 已安装并正在运行。

步骤:

  1. 导航至练习目录并启动数据库:

    cd mcp-exercise
    docker compose up db
    
  2. 在Copilot Chat中,确保已选择代理模式

  3. 在工具菜单中确认Postgres MCP服务器及其“查询”工具已启用

  4. 使用以下示例查询进行测试:

    • #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图。

步骤:

  1. 创建一个新的提示文件

  2. 添加以下内容:

    ---
    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.
    
  3. 通过输入来测试提示文件 /er 在代理模式下。如果需要,请优化提示语 Copilot无法满足提示的目的

  4. 要查看生成的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上的规范套件(或:规格工具包)。

  1. 安装Spec Kit CLI:

    uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
    
  2. 初始化您的项目:

    specify init . --ai copilot
    
  3. 定义服务器的规格: 使用 /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.
    
  4. 制定技术计划: 使用 /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`.
    
  5. 将工作分解为任务: 使用 /speckit.tasks 生成实现服务器所需各个任务的命令。

    /speckit.tasks
    
  6. 执行实施: 使用 /speckit.implement 执行实施的命令。

    /speckit.implement
    
选项B:手动搭建您的服务器

如果你更倾向于自己搭建服务器,请遵循官方的MCP文档。你可以使用以下库:

  • python mcp 图书馆
  • TypeScript/Node.js: @modelcontextprotocol/sdk

4. 添加到集成开发环境(IDE)

VS Code 集成
  1. 打开命令面板: Shift+Cmd+P (Mac) / Shift+Ctrl+P (Windows)
  2. 类型 MCP: Add server...
  3. 选择 Custom command
  4. 输入您的服务器命令:
    • Python(uv): 命令: uv,参数: --directory /PATH/TO/your-server run server.py
    • Node.js: 命令: node论点: /PATH/TO/your-server/dist/index.js
  5. 输入服务器ID(例如,“my-tools”)
  6. 选择“工作区设置”
  7. 使用生成的播放按钮启动服务器 mcp.json
JetBrains 集成
  1. 打开设置 → 工具 → MCP 服务器,并启用 MCP 服务器

  2. 打开GitHub Copilot Chat并切换到代理模式

  3. 点击模型选择旁边的扳手图标以打开工具菜单

  4. 点击“+ 添加更多工具”

  5. A. mcp.json 文件将被创建

  6. 添加您的服务器配置:

    {
        "servers": {
            "my-python-server": {
                "command": "uv",
                "args": [
                    "--directory",
                    "/PATH/TO/YOUR-SERVER-DIRECTORY",
                    "run",
                    "server.py"
                ]
            }
        }
    }
    

6. 测试您的服务器

  1. 重新加载您的集成开发环境(IDE):

    • VS Code: Cmd+Shift+P → “开发者:重新加载窗口”
    • JetBrains(公司名,可译为“杰特布瑞恩斯”或直接保留原名): 如有需要,请重启IDE
  2. 验证集成:

    • 以代理模式打开Copilot聊天
    • 点击扳手图标(🔧)并确认您的工具已显示
    • 启用您的自定义工具
    • 根据你的实现,使用相关提示进行测试

7. 故障排除

  • 确保路径中的(内容/设置等,具体根据上下文确定) mcp.json 使用绝对路径
  • VS Code: 检查输出面板(查看 → 输出 → GitHub Copilot)中的错误
  • JetBrains: 检查“GitHub Copilot MCP 日志”工具窗口
  • 验证服务器在手动启动时能够无错误运行
  • 确保服务器已启动(界面上的绿色播放按钮表示 mcp.json)

讨论要点

  • 构建MCP服务器与常规功能开发有何不同?
  • 贵公司内部有哪些工具可以通过MCP集成而受益?
  • 您会在什么时候选择MCP服务器,而不是自定义聊天模式或提示文件?

探索其他MCP服务器(可选)

剧作家MCP

目的: 在代理模式下启用浏览器自动化。

步骤:

  1. 阅读 Playwright MCP 文档
  2. 将 Playwright MCP 添加到您的项目中
  3. 创建浏览器自动化查询:

GitHub MCP(注:MCP在此处可能代表特定的项目、组织或概念,但根据上下文无法确定具体含义,因此直接保留原样翻译)

目的: 将AI工具直接连接到GitHub以进行仓库管理, 问题/拉取请求(PR)自动化,以及代码分析。

步骤:

  1. 阅读 GitHub MCP 文档
  2. 将GitHub MCP添加到您的项目中
  3. 根据您的需求配置工具集:仓库、问题、拉取请求、操作, 代码安全等。
  4. 带提示的测试:
    • “列出我最近的存储库”
    • “显示此仓库中的未解决问题”
    • “分析最近的提交”
  5. 考虑如何通过GitHub集成来优化您的开发工作流程 通过人工智能驱动的存储库洞察

其他MCP服务器

目的: 探索用于各种集成的额外MCP服务器。

步骤:

  1. 浏览至 mcp.so(注:在中文语境中,通常不会直接翻译文件扩展名如“.so”,因为它代表的是特定编程语言(如C/C++)的共享库文件格式,且在不同操作系统中含义一致。此处保留原样以体现技术准确性。) 发现可用的MCP服务器
  2. 探索可与您的开发工具集成的服务器:

另见