使用说明
副驾驶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) │
└────────────────────────────┘
每个工具:
- 加载其标记 描述 (显示给LLM)
- 加载其标记 提示模板
- 将输入插值到模板中
- 将最终提示发送到 Copilot命令行界面
- 返回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_fixcode_refactorcode_generatecode_testsagent
任务
deno task dev--在本地运行MCP服务器(stdio)。deno task smoke--运行冒烟测试(用以下命令启动服务器deno task dev默认情况下;用以下方式覆盖SERVER_CMD).deno task compile--在以下位置构建独立二进制文件dist/copilot-mcp.
发布流程(端到端)
- 确保您的分支机构是最新的:
git pull --rebase. - 进行更改,然后发布并提交一个明确的信息。
- 如果CI或自动化推送了提交,请再次重设基础:
git pull --rebase. - 推送提交:
git push. - 创建发布标签:
git tag vX.Y.Z. - 按下标签以触发发布工作流:
git push origin vX.Y.Z.
自制包装和发布自动化
发布过程通过GitHub Actions完全自动化:
- 标记发布:当您推送新标签时(例如。,
v0.1.12),therelease工作流被触发。 - 构建和工件:工作流构建macOS二进制文件(
arm64和x86_64),对它们进行标记,计算SHA256哈希值,并将所有内容上传到新的GitHub版本。 - 公式更新:一旦发布工作流完成
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文件充当您的 快速工程表面积.
➕ 添加您自己的工具
- 创建两个文件:
prompts/my_tool.description.md
prompts/my_tool.template.md
- 将条目添加到
prompts.ts - 在中注册新的MCP工具
index.ts - 出货
您可以创建:
- 代码审查员
- 文档生成器
- 安全分析器
- 类型迁移器(例如JS→ TS)
- 一个完整的自定义工作流程
MCP+Copilot CLI使这几乎变得微不足道。
🔄 后端更换
虽然该项目目前使用:
copilot -p "<prompt>" --silent --allow-all-tools
代码确实如此 不 取决于Copilot的品牌或独特功能。
您可以用以下内容替换后端:
- 本地法学硕士
- 远程API
- 容器化编译器助手
- 一连串的工具
- 甚至是你自己的微调模型
只要它接受提示并返回文本,这种架构就成立。
🤝 贡献
PR欢迎!
特别值得贡献的领域:
- 迅速改进
- 后端抽象(将Copilot CLI替换为API)
📄 许可证
麻省理工学院——做你喜欢做的事,只是不要把自己从学分中删除。