代码工具服务器

一个基于GitHub Copilot CLI的多功能代码工具服务器,提供代码修复、重构、生成和测试生成等高质量、专业化的编码工具。

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

使用说明

副驾驶MCP服务器

由GitHub Copilot CLI驱动的多工具模型上下文协议服务器(但设计上与后端无关)

该项目提供了一个 MCP(模型上下文协议) 暴露一个 套 高质量、专业的编码工具--每个都由一个 提示围绕GitHub Copilot CLI设计的包装器。

从MCP客户端(Claude Desktop、ChatGPT Apps等)的角度来看 服务器提供 干净、确定、高价值的工具 用于:

  • 🔧 Bug修复(code_fix)
  • 🧹 代码重构(code_refactor)
  • 🏗 代码生成(code_generate)
  • 🧪 测试生成(code_tests)

每个工具都由提示模板和描述驱动,外部存储在 Markdown文件便于编辑、迭代和定制。

实施 不会直接暴露Copilot,意味着您可以替换 未来的后端不会破坏工具语义。对于用户(IA 调用),这些工具的行为就像专门的编码助手。

✨ 为什么存在

比起副驾驶,我更喜欢Codex,但公司为副驾驶付费,所以为什么不使用呢 那些免费代币🤷. MCP可以将这些工具组合在一起 干净、可控、结构化的方式。

此服务器旨在:

通过专用工具提供高质量的代码转换

每个工具都有一个 范围狭窄、定义明确的工作,提高可靠性和输出 质量。

隐藏后端复杂性

MCP工具的消费者不需要知道它正在使用Copilot CLI。

支持快速工程迭代

所有提示模板和工具描述都位于外部 .md 文件--修改 当你学习什么最有效时。

简单易用,易于扩展

用具有最小抽象的强类型TypeScript编写。

允许任何LLM将代码工作委托给第二个“编码引擎”

非常适合您的主模型在Copilot时管理推理的工作流程 (或另一个引擎)专门处理代码输出。

🧩 架构概述

┌────────────────────────────┐
│         MCP Client         │
│ (Claude Desktop, ChatGPT…) │
└──────────────┬─────────────┘
               │  JSON-RPC
               ▼
┌────────────────────────────┐
│      MCP Tools (this)      │
│  code_fix / code_refactor  │
│  code_generate / code_tests│
└──────────────┬─────────────┘
               │
               ▼
┌────────────────────────────┐
│  Prompt templates (.md)    │
│  Tool descriptions (.md)   │
└──────────────┬─────────────┘
               │
               ▼
┌────────────────────────────┐
│      GitHub Copilot CLI    │
│ (replaceable backend API)  │
└────────────────────────────┘

每个工具:

  1. 加载其标记 描述 (显示给LLM)
  2. 加载其标记 提示模板
  3. 将输入插值到模板中
  4. 将最终提示发送到 Copilot命令行界面
  5. 返回Copilot的输出 逐字 到MCP客户端

📦 特性

✔ 四种专用工具

  • code_fix → 修复损坏的代码
  • code_refactor → 在不改变行为的情况下提高质量
  • code_generate → 根据规范创建新代码
  • code_tests → 为现有代码生成测试

✔ 所有提示和描述都存在于Markdown文件中

开发人员可以在不接触TypeScript的情况下更新模板和调整数据。

✔ 到处都是强打字

每个工具都有自己的输入模式,使用 zod.

✔ 干净的建筑

没有隐藏的魔法。没有副作用。易于理解和扩展。

✔ 后端无关设计

今天:GitHub Copilot CLI明天:任何接受文本输入的工具都可以 不暴露后端品牌。

🚀 快速启动(安装或构建)

通过Homebrew安装(推荐)

可以直接点击(显式URL)并安装此仓库:

brew tap josephma93/copilot-mcp https://github.com/josephma93/copilot-mcp
brew install josephma93/copilot-mcp/copilot-mcp
copilot-mcp

添加到MCP客户端(示例 ~/.codex/config.toml):

[mcp_servers.copilot-mcp]
command = "/opt/homebrew/bin/copilot-mcp"

升级现有安装:

brew reinstall josephma93/copilot-mcp/copilot-mcp && copilot-mcp --help

先决条件:GitHub Copilot CLI(copilot)必须安装并验证。看https://github.com/github/copilot-cli对于安装和登录步骤,请确保 copilot 在你的 PATH.

从源代码运行(开发)

1.安装必备组件

德诺

安装 德诺 (2.5+).TypeScript是 支持开箱即用——无需安装npm。

GitHub Copilot命令行界面

本项目假设 copilot 已安装并可用于 $PATH.

2.启动MCP服务器(开发)

deno task dev

这将授予服务器所需的权限(包括稳定的日志访问权限 位置):

  • --allow-run=copilot (调用CLI)
  • --allow-read (加载模板并访问日志目录)
  • --allow-write (在不污染stdio的情况下保存日志)
  • --allow-env=LOG_DIR,HOME,LOCALAPPDATA,APPDATA,XDG_STATE_HOME (解析日志位置)

服务器运行超时 标准,标准和推荐的MCP传输。

日志默认位于操作系统稳定的位置(macOS: ~/Library/Logs/copilot-mcp, Linux: ~/.local/state/copilot-mcp/logs,Windows: %LOCALAPPDATA%\copilot-mcp\logs). 覆盖 LOG_DIR=/path/to/logs 如果需要的话。

3.构建一个二进制文件

deno task compile

生成的可执行文件位于 dist/copilot-mcp 并捆绑降价 通过以下方式提示 --include=./prompts.

4.烟雾测试(启动、握手、停止)

使用Deno的内置测试运行快速初始化+list_tools往返 跑步者。该任务启动服务器,执行握手,调用每个工具 打印一次响应,然后关闭服务器(需要 copilot 在PATH上):

deno task smoke

用以下内容覆盖命令(例如,使用编译后的二进制文件):

SERVER_CMD="./dist/copilot-mcp" deno task smoke

期待两个 [smoke] 带有解析JSON响应的行。笔记:

  • 冒烟任务使用相同的dev命令启动服务器并驱动它 通过stdio使用官方MCP客户端。
  • 必须安装并验证Copilot CLI;如果macOS提示输入Keychain 访问、允许(或通过登录一次 copilot auth login 或出口 GITHUB_TOKEN/COPILOT_TOKEN).

5.添加到您的MCP客户端(示例:Claude Desktop)

打开:

设置→ 开发者→ 模型上下文协议

添加新服务器:

{
  "name": "copilot-mcp",
  "command": "./dist/copilot-mcp"
}

对于本地开发(无需编译),您可以指向:

{
  "name": "copilot-mcp",
  "command": "deno",
  "args": [
    "run",
    "--allow-run=copilot",
    "--allow-read",
    "--allow-write",
    "--allow-env=LOG_DIR,HOME,LOCALAPPDATA,APPDATA,XDG_STATE_HOME",
    "src/index.ts"
  ]
}

Claude将自动发现可用的工具:

  • code_fix
  • code_refactor
  • code_generate
  • code_tests
  • agent

任务

  • deno task dev --在本地运行MCP服务器(stdio)。
  • deno task smoke --运行冒烟测试(用以下命令启动服务器 deno task dev 默认情况下;用以下方式覆盖 SERVER_CMD).
  • deno task compile --在以下位置构建独立二进制文件 dist/copilot-mcp.

发布流程(端到端)

  1. 确保您的分支机构是最新的: git pull --rebase.
  2. 进行更改,然后发布并提交一个明确的信息。
  3. 如果CI或自动化推送了提交,请再次重设基础: git pull --rebase.
  4. 推送提交: git push.
  5. 创建发布标签: git tag vX.Y.Z.
  6. 按下标签以触发发布工作流: git push origin vX.Y.Z.

自制包装和发布自动化

发布过程通过GitHub Actions完全自动化:

  1. 标记发布:当您推送新标签时(例如。, v0.1.12),the release 工作流被触发。
  2. 构建和工件:工作流构建macOS二进制文件(arm64 和 x86_64),对它们进行标记,计算SHA256哈希值,并将所有内容上传到新的GitHub版本。
  3. 公式更新:一旦发布工作流完成 update-formula 工作流自动:
    • 下载新的SHA256哈希值。
    • 更新 Formula/copilot-mcp.rb 使用 .github/formula-template.rb.
    • 提交并推送更新至 main.

用户可以通过Homebrew进行安装或升级:

brew update
brew upgrade josephma93/copilot-mcp/copilot-mcp

或者首次安装:

brew tap josephma93/copilot-mcp https://github.com/josephma93/copilot-mcp
brew install josephma93/copilot-mcp/copilot-mcp

🛠 使用示例

以下是MCP客户端如何调用这些工具的示例。

修复一个bug

{
  "goal": "The function returns undefined when input is empty.",
  "code": "function foo(x) { if (!x.length) return; return x[0]; }",
  "language": "JavaScript"
}

重构代码

{
  "goal": "Improve readability and break into smaller functions.",
  "code": "<big complicated file>"
}

生成新代码

{
  "spec": "Create a TypeScript class that wraps Redis with get/set/del methods.",
  "language": "TypeScript"
}

生成测试

{
  "code": "function sum(a,b){ return a+b }",
  "language": "JavaScript",
  "framework": "jest"
}

通用代理

{
  "goal": "Update the logger to include request IDs in every entry.",
  "files": ["src/logger.ts"]
}

MCP客户端处理路由——此服务器只是执行。

🔍 模板的工作原理

模板使用简单的占位符插值:

Fix the bug described below: {{goal}}

Code: {{code}}

在TypeScript中,占位符通过以下方式替换:

renderTemplate(template, {
  goal: input.goal,
  code: input.code,
});

这使系统保持:

  • 透明
  • 可破解的
  • 易于调整

Markdown文件充当您的 快速工程表面积.

➕ 添加您自己的工具

  1. 创建两个文件:
prompts/my_tool.description.md
prompts/my_tool.template.md
  1. 将条目添加到 prompts.ts
  2. 在中注册新的MCP工具 index.ts
  3. 出货

您可以创建:

  • 代码审查员
  • 文档生成器
  • 安全分析器
  • 类型迁移器(例如JS→ TS)
  • 一个完整的自定义工作流程

MCP+Copilot CLI使这几乎变得微不足道。

🔄 后端更换

虽然该项目目前使用:

copilot -p "<prompt>" --silent --allow-all-tools

代码确实如此 不 取决于Copilot的品牌或独特功能。

您可以用以下内容替换后端:

  • 本地法学硕士
  • 远程API
  • 容器化编译器助手
  • 一连串的工具
  • 甚至是你自己的微调模型

只要它接受提示并返回文本,这种架构就成立。

🤝 贡献

PR欢迎!

特别值得贡献的领域:

  • 迅速改进
  • 后端抽象(将Copilot CLI替换为API)

📄 许可证

麻省理工学院——做你喜欢做的事,只是不要把自己从学分中删除。