GitHub Copilot MCP Server
GitHub Copilot MCP Server
A Model Context Protocol (MCP) server that integrates GitHub Copilot CLI with MCP clients.
๐ฃ Important Notice
Thanks to @leonardommello for the original work. This is an actively maintained fork to keep the project up-to-date with the latest Copilot features and supported models.
Features
9 Tools - Interactive Copilot commands for coding assistance
2 Resources - Session history and management
Full MCP Support - Compatible with Claude Desktop, Claude Code, Cline, and more
Claude Code Plugin - Claude Code plugin with built-in workflow
Quick Commands - Shortcut commands for rapid workflow (see below)
Quick Start
For use:
Add to your configuration file:
{
"mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server"]
}
}
}Optional: Specify model preference
You can use the --prefer flag to choose between Claude or GPT models as defaults:
{
"mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server", "--prefer", "gpt"]
}
}
}Available preferences:
--prefer claude (default): Uses claude-sonnet-4.6 for all tool defaults. Available Claude models: Sonnet 4.6, Sonnet 4.5, Haiku 4.5, Opus 4.7, Sonnet 4
--prefer gpt: Uses gpt-5.4 for all tool defaults. Available GPT models: gpt-5.4, gpt-5.3-codex, gpt-5.2-codex, gpt-5.2, gpt-5.4-mini, gpt-5-mini, gpt-4.1
Model defaults by preference:
Tool |
|
|
ask-copilot | claude-sonnet-4.6 | gpt-5.4 |
copilot-explain | claude-sonnet-4.6 | gpt-5.4 |
copilot-suggest | claude-sonnet-4.6 | gpt-5.4 |
copilot-debug | claude-sonnet-4.6 | gpt-5.4 |
copilot-refactor | claude-sonnet-4.6 | gpt-5.4 |
copilot-review | claude-sonnet-4.6 | gpt-5.4 |
copilot-test-generate | claude-sonnet-4.6 | gpt-5.4 |
Note: You can still override the default model for any tool by specifying the
modelparameter in individual tool calls.
Prerequisites
You need GitHub Copilot CLI installed and authenticated:
npm install -g @github/copilot
copilot /loginHello World Example
Once configured, here's a simple way to get started:
In Claude Desktop (or your MCP client):
Use ask-copilot with prompt="Write a simple Hello World program in JavaScript"Response:
console.log("Hello, World!");That's it! You can now use all the Copilot tools through your AI client.
More examples:
Use copilot-explain to explain this code: console.log("Hello, World!");
Use copilot-suggest for task="List files in current directory"
Use copilot-debug with code="console.log(messge);" and error="ReferenceError: messge is not defined"Tools
Tool | Description | Parameters |
ask-copilot | Ask Copilot for coding help, debugging, architecture |
|
copilot-explain | Get detailed code explanations |
|
copilot-suggest | Get CLI command suggestions |
|
copilot-debug | Debug code errors |
|
copilot-refactor | Get refactoring suggestions |
|
copilot-test-generate | Generate unit tests |
|
copilot-review | Get code review with feedback |
|
copilot-session-start | Start new conversation session | - |
copilot-session-history | Get session history |
|
Resources
Resource | URI | Description |
session-history |
| Access conversation history for a session |
sessions-list |
| List all active sessions |
๐งฉ Plugins
This repository includes ready-to-use plugins that extend functionality:
copilot-flow
AI Collaboration Workflow Plugin - Automates a structured 5-stage development process between Claude and GitHub Copilot.
Features:
๐ 5-Stage Workflow: Analyze โ Design โ Implement โ Review โ Deliver
๐ค Smart Model Selection: Automatically selects optimal Copilot models based on task type
๐ Preview Mode: Shows execution plan before running
๐ Recovery Mechanism: Resume interrupted workflows via session ID
Quick Install:
/plugin marketplace add Poorgramer-Zack/copilot-mcp-tool
/plugin install copilot-flowLearn more: copilot-flow documentation
๐ AI Client Integration
This MCP server works with any MCP-compatible client. Below are detailed setup instructions for popular AI coding assistants.
๐ Claude Desktop (Recommended)
Claude Desktop is the most tested and recommended client for this MCP server.
Configuration Path:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Method 1: NPX (No Installation Required)
{
"mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server"]
}
}
}Method 2: Global Installation
npm install -g @aykahshi/copilot-mcp-serverThen add to config:
{
"mcpServers": {
"copilot": {
"command": "copilot-mcp-server"
}
}
}Method 3: Local Development
{
"mcpServers": {
"copilot": {
"command": "node",
"args": ["/absolute/path/to/copilot-mcp-tool/dist/esm/copilot/index.js"]
}
}
}After Setup:
Restart Claude Desktop
Look for the ๐ icon in the bottom-right corner
Click it to see "copilot" in the connected servers list
๐ฅ๏ธ Claude Code (CLI)
Claude Code provides the fastest setup experience via CLI.
Quick Setup:
# Using npx (no installation)
claude mcp add copilot -- npx -y @aykahshi/copilot-mcp-server
# Or with global installation
npm install -g @aykahshi/copilot-mcp-server
claude mcp add copilot copilot-mcp-serverImport from Claude Desktop:
# If you already configured Claude Desktop
claude mcp add-from-claude-desktopVerify Connection:
claude mcp list
# Should show: copilot (connected)Usage in Chat:
/mcp # Check server status๐ฏ Cursor
Cursor supports both one-click and manual installation.
Method 1: Manual Configuration
Edit ~/.cursor/mcp.json (create if it doesn't exist):
{
"mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server"]
}
}
}Method 2: Settings UI
Open Cursor Settings (Cmd/Ctrl + ,)
Search for "MCP"
Click "Add MCP Server"
Name:
copilotCommand:
npx -y @aykahshi/copilot-mcp-server
๐ง VS Code with Cline Extension
Cline is a popular MCP-compatible VS Code extension.
Setup:
Install Cline extension from VS Code marketplace
Open Cline settings (gear icon in Cline panel)
Navigate to "MCP Servers" section
Add new server:
{
"mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server"]
}
}
}Alternatively, edit VS Code settings.json:
{
"cline.mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server"]
}
}
}โก Zed Editor
Zed has native MCP support built-in.
Configuration File: ~/.config/zed/mcp.json
{
"mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server"]
}
}
}Or use Zed's UI:
Open Zed Settings (Cmd/Ctrl + ,)
Go to "Extensions" โ "MCP"
Add server with command:
npx -y @aykahshi/copilot-mcp-server
๐ฎ Windsurf
Configuration Path: ~/.windsurf/mcp.json
{
"mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server"]
}
}
}๐ Gemini CLI
Gemini CLI supports both project-wide and global MCP server installation.
Global Installation:
gemini mcp add copilot -- npx -y @aykahshi/copilot-mcp-serverProject-Specific:
# In your project directory
gemini mcp add --project copilot -- npx -y @aykahshi/copilot-mcp-serverVerify:
gemini mcp list๐จ JetBrains AI Assistant
For IntelliJ IDEA, PyCharm, WebStorm, etc.
Setup:
Open Settings (Cmd/Ctrl + ,)
Navigate to:
Tools โ AI Assistant โ Model Context Protocol (MCP)Click "+" to add new MCP server
Configure:
Name:
copilotCommand:
npxArguments:
-y @aykahshi/copilot-mcp-server
๐ Other MCP Clients
This server is compatible with any MCP-compliant client. Generic configuration:
{
"mcpServers": {
"copilot": {
"command": "npx",
"args": ["-y", "@aykahshi/copilot-mcp-server"]
}
}
}Additional Compatible Clients:
Amp - Configuration in
~/.amp/mcp.jsonAugment Code - MCP settings in IDE
Roo Code - Via settings panel
Qwen Coder - CLI:
qwen mcp add copilot
โ Compatibility Matrix
Client | Status | Installation Method | Notes |
โ Tested | JSON config | Most stable, recommended | |
โ Tested | CLI command | Fastest setup | |
โ Compatible | JSON / UI | Multiple setup options | |
โ Compatible | Extension settings | VS Code integration | |
โ Compatible | Native MCP support | Built-in UI | |
โ Compatible | JSON config | Simple setup | |
โ Compatible | CLI command | Project & global | |
โ Compatible | Settings UI | All JetBrains IDEs | |
Other MCP clients | โ Compatible | Standard MCP protocol | Universal support |
How It Works
This MCP server acts as a bridge between MCP clients and the GitHub Copilot CLI:
MCP Client (Claude Desktop) โ Calls tool via MCP protocol
MCP Server (This package) โ Translates to Copilot CLI command
GitHub Copilot CLI โ Processes request and returns response
MCP Server โ Returns formatted response to client
Benefits:
Use Copilot's AI models directly in Claude conversations
Maintain session history across interactions
Access specialized Copilot features (explain, debug, review, etc.)
No need to switch between tools
๐ฏ Real-World Use Cases
1. Code Explanation & Learning
Scenario: Understanding complex code patterns
// Ask Copilot to explain
const result = arr.map(x => x * 2).filter(x => x > 10);Response:
This code performs two operations on an array in sequence:
.map(x => x * 2)- Creates a new array by multiplying each element by 2
.filter(x => x > 10)- Filters that result to only keep values greater than 10For example, if
arr = [3, 5, 8], the result would be[16]
2. Debugging Assistance
Scenario: Finding bugs in your code
// Buggy code
function sum(arr) {
return arr.reduce((a) => a+b, 0);
}Error: ReferenceError: b is not defined
Copilot's Fix:
function sum(arr) {
return arr.reduce((a, b) => a+b, 0);
}The reduce callback needs both the accumulator and the current value.
3. Security Refactoring
Scenario: Fixing SQL injection vulnerabilities
// Vulnerable code
function getUserData(id) {
return db.query('SELECT * FROM users WHERE id = ' + id);
}Copilot's Secure Version:
async function getUserData(id) {
if (!id) return null;
// Use parameterized query to prevent SQL injection
const query = 'SELECT * FROM users WHERE id = ?';
const user = await db.query(query, [id]);
return user || null;
}Key improvements: Parameterized queries, input validation, async/await
4. Test Generation
Scenario: Generate comprehensive tests
function isPrime(n) {
if (n <= 1) return false;
for (let i = 2; i * i <= n; i++) {
if (n % i === 0) return false;
}
return true;
}Generated Jest Tests:
describe('isPrime', () => {
it('should return false for numbers <= 1', () => {
expect(isPrime(-5)).toBe(false);
expect(isPrime(0)).toBe(false);
expect(isPrime(1)).toBe(false);
});
it('should return true for prime numbers', () => {
expect(isPrime(2)).toBe(true);
expect(isPrime(3)).toBe(true);
expect(isPrime(97)).toBe(true);
});
it('should return false for composite numbers', () => {
expect(isPrime(4)).toBe(false);
expect(isPrime(100)).toBe(false);
});
});5. Code Modernization
Scenario: Update legacy JavaScript to modern ES6+
// Legacy code
function processData(data) {
var result = [];
for (var i = 0; i < data.length; i++) {
result.push(data[i] * 2);
}
return result;
}Modern Version:
function processData(data) {
return data.map(item => item * 2);
}Benefits: Cleaner, modern arrow function, immutable array operation
6. CLI Command Suggestions
Task: "List all files recursively and count them"
PowerShell:
(Get-ChildItem -Recurse -File).CountBash:
find . -type f | wc -l๐ Detailed Tool Examples
ask-copilot
General-purpose coding assistant
๐ Prompt: "Write a TypeScript function to debounce user input"
๐ค Response: Complete implementation with TypeScript types, error handling, and usage examplescopilot-explain
Code explanation and education
๐ Code to explain:
const memoize = fn => {
const cache = new Map();
return (...args) => {
const key = JSON.stringify(args);
return cache.has(key) ? cache.get(key) : cache.set(key, fn(...args)).get(key);
};
};
๐ค Explanation: "This is a memoization function that caches results..."copilot-suggest
Command-line suggestions
๐ Task: "Find all TypeScript files modified in the last 7 days"
๐ค Windows: Get-ChildItem -Recurse -Filter *.ts | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)}
๐ค Linux: find . -name "*.ts" -mtime -7copilot-debug
Bug identification and fixes
๐ Buggy async code:
async function fetchData() {
const data = await fetch('/api/data');
return data.json;
}
โ Error: "data.json is not a function"
โ
Fix: return data.json() // Add parenthesescopilot-refactor
Code quality improvements
๐ Goal: "Improve performance"
// Before
const result = array.filter(x => x > 0).map(x => x * 2);
// After
const result = array.reduce((acc, x) => {
if (x > 0) acc.push(x * 2);
return acc;
}, []);
๐ก Benefit: Single pass through array instead of twocopilot-test-generate
Automated test creation
๐ Framework: "jest"
๐งช Generates: Unit tests, edge cases, integration tests, mock data
๐ Coverage: Positive cases, negative cases, boundary conditionscopilot-review
Code review with focus areas
๐ Focus: ["security", "performance"]
๐ Reviews:
- SQL injection vulnerabilities
- XSS vulnerabilities
- N+1 query problems
- Memory leaks
- Inefficient algorithmscopilot-session-start / copilot-session-history
Conversation tracking
๐ Start session: Creates unique session ID
๐พ Track history: All prompts and responses saved
๐ View history: Retrieve past conversations
โป๏ธ Resume context: Continue previous discussions๐จ Quick Examples
Generate Code:
Use ask-copilot to write a Python function that validates email addressesExplain Code:
Use copilot-explain to explain this regex: /^[a-z0-9]+@[a-z0-9]+\.[a-z]{2,}$/iDebug:
Use copilot-debug with code="function sum(arr) { return arr.reduce((a) => a+b, 0); }" and error="ReferenceError: b is not defined"Generate Tests:
Use copilot-test-generate with code="function isPrime(n) { return n > 1 && ![...Array(n).keys()].slice(2).some(i => n % i === 0); }" and framework="jest"Review Code:
Use copilot-review with code="..." and focusAreas=["security", "performance"]Session Management:
Use copilot-session-start to begin a new tracked conversation
Use copilot-session-history to view conversation historyAI Models
Select from available models:
autogpt-5.4(default in current Copilot CLI picker)gpt-5.3-codexgpt-5.2-codexgpt-5.2gpt-5.4-minigpt-5-minigpt-4.1claude-sonnet-4.6(default for Claude preference in this MCP)claude-sonnet-4.5claude-haiku-4.5claude-opus-4.7claude-sonnet-4
You can see all available models via copilot cli with /model command.
Unlimited Model (0x cost in Copilot usage): gpt-5-mini and gpt-4.1 are available with unlimited usage for GitHub Copilot Pro and above subscriptions.
Example:
Use ask-copilot with model="claude-sonnet-4.6" and prompt="Explain async/await"
Use ask-copilot with model="gpt-5-mini" and prompt="Quick code review"Requirements
System Requirements
Node.js: >= 22.0.0
npm: >= 10.0.0
GitHub Copilot
GitHub Copilot subscription: Required (Get Copilot)
GitHub Copilot CLI: Must be installed and authenticated
npm install -g @github/copilot copilot /login
Troubleshooting
Common Issues
โ "copilot command not found"
# Install GitHub Copilot CLI
npm install -g @github/copilot
# Verify installation
copilot --versionโ "Not authenticated"
# Login to GitHub Copilot
copilot /login
# Follow the authentication flow in your browserโ "Node.js version too old"
# Check your Node.js version
node --version # Must be >= 22.0.0
# Update Node.js
# Using nvm (recommended)
nvm install 22
nvm use 22
# Or download from nodejs.orgโ "MCP server not responding"
# Test the server directly
npx -y @aykahshi/copilot-mcp-server
# Check Claude Desktop logs
# macOS: ~/Library/Logs/Claude/
# Windows: %APPDATA%\Claude\logs\โ "Permission denied" on Windows
# Run as administrator or use npx without global install
npx -y @aykahshi/copilot-mcp-serverFAQ
Q: Do I need a GitHub Copilot subscription? A: Yes, this MCP server requires an active GitHub Copilot subscription and the Copilot CLI installed.
Q: Can I use this with Claude Desktop?
A: Yes! This is the primary use case. Just add the configuration to claude_desktop_config.json.
Q: Does this work with VS Code? A: Yes, through the Cline extension or any other MCP-compatible VS Code extension.
Q: What's the difference between this and using Copilot directly? A: This allows you to use Copilot's capabilities within Claude conversations, combining both AI assistants.
Q: Is my code sent to both GitHub and Anthropic? A: Code you share in conversations goes through Claude's MCP protocol to Copilot CLI, which processes it according to GitHub's privacy policy.
Q: Can I use this offline? A: No, both GitHub Copilot and MCP clients require internet connection.
Development
Building from Source
# Clone the repository
git clone https://github.com/Poorgramer-Zack/copilot-mcp-tool.git
cd copilot-mcp-tool
# Install dependencies
npm install
# Build the project
npm run build
# Run locally
npm start
# Run tests
npm testContributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Project Structure
src/
โโโ copilot/ # Main Copilot CLI integration
โ โโโ index.ts # Entry point
โ โโโ server.ts # Server configuration
โ โโโ cli.ts # Copilot CLI execution
โ โโโ session.ts # Session management
โ โโโ constants.ts # Configuration & models
โ โโโ types.ts # Type definitions
โ โโโ tools/ # MCP Tools
โ โโโ resources/ # MCP Resources
โโโ server/ # MCP Server core
โโโ shared/ # Shared utilities
โโโ types.ts # Global typesWhat is MCP?
The Model Context Protocol (MCP) is an open protocol that enables AI applications to securely access data and tools from different sources. Think of it as a universal connector for AI assistants.
Key concepts:
Servers (like this package): Provide tools, resources, and prompts
Clients (like Claude Desktop): Use these capabilities in conversations
Tools: Actions the AI can perform (like calling GitHub Copilot)
Resources: Data the AI can access (like session history)
Prompts: Templates for common workflows
Learn more at modelcontextprotocol.io
Links
๐ฆ npm Package: https://www.npmjs.com/package/@aykahshi/copilot-mcp-server
๐ป GitHub Repository: https://github.com/Poorgramer-Zack/copilot-mcp-tool
๐ Report Issues: https://github.com/Poorgramer-Zack/copilot-mcp-tool/issues
๐ค GitHub Copilot: https://github.com/features/copilot
๐ Model Context Protocol: https://modelcontextprotocol.io
License
MIT License - see LICENSE file for details
Author
Original created by Leonardo M. Mello (@leonardommello) Forked and maintained by Aykahshi (@Aykahshi)
Built with โค๏ธ using the Model Context Protocol
If this project helped you, please consider giving it a โญ on GitHub!
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Poorgramer-Zack/copilot-mcp-tool'
If you have feedback or need assistance with the MCP directory API, please join our Discord server