UNPKG

copilot-mcp-server

Version:

MCP server that integrates with GitHub Copilot to provide code assistance

272 lines (202 loc) 5.93 kB
# Copilot MCP Server A Model Context Protocol (MCP) server that integrates with GitHub Copilot to provide AI-powered code assistance directly to Claude Code and other MCP-compatible tools. ## Features - **Chat with Copilot**: Get general programming assistance using GitHub Copilot's AI models - **Code Explanation**: Detailed explanations of code snippets - **Code Suggestions**: Generate code based on natural language descriptions - **Code Review**: Get feedback and improvement suggestions for your code - **Multiple AI Models**: Support for GPT-4o, Claude 3.5 Sonnet, and Gemini 2.0 Flash - **Rate Limiting**: Built-in rate limiting to respect API limits - **Flexible Authentication**: Support for both Personal Access Tokens and GitHub Apps ## Installation ### Option 1: Using npx (Recommended) ```bash npx copilot-mcp-server ``` ### Option 2: Manual Installation 1. Clone this repository: ```bash git clone https://github.com/WillianPaiva/copilot-mcp.git cd copilot-mcp ``` 2. Install dependencies: ```bash npm install ``` 3. Build the project: ```bash npm run build ``` ## Configuration ### No Configuration Needed! The server works out of the box with your existing GitHub Copilot authentication. ### Optional Configuration Only needed for special use cases. Create a `.env` file: ```bash cp .env.example .env ``` Optional settings: ```env # Only if you want to override the detected organization GITHUB_ORG=your_organization_name # Optional debugging LOG_LEVEL=info DEBUG=false MAX_REQUESTS_PER_MINUTE=60 ``` ### Setup Requirements **Prerequisites:** 1. **GitHub Copilot Subscription**: You need an active GitHub Copilot subscription 2. **GitHub Copilot CLI Installed**: Install and authenticate GitHub Copilot CLI: ```bash # Install GitHub CLI first brew install gh # or your preferred method # Install GitHub Copilot CLI extension gh extension install github/gh-copilot # Authenticate (this will save tokens to ~/.config/github-copilot/) gh auth login ``` ### Authentication **Automatic Authentication (Recommended)** The MCP server automatically detects your GitHub Copilot authentication from: 1. `~/.config/github-copilot/hosts.json` 2. `~/.config/github-copilot/apps.json` No manual configuration needed if you have GitHub Copilot CLI installed and authenticated! **Troubleshooting Authentication** If automatic detection fails, you can manually override: ```env GITHUB_TOKEN=your_github_token_here ``` ## Usage ### With Claude Code Add the following to your Claude Code MCP configuration: **Option 1: Using npx (Recommended)** ```json { "mcpServers": { "copilot": { "command": "npx", "args": ["-y", "copilot-mcp-server"] } } } ``` **Option 2: Manual Installation** ```json { "mcpServers": { "copilot": { "command": "node", "args": ["/path/to/your/copilot-mcp/build/index.js"] } } } ``` That's it! No tokens or environment variables needed - the server automatically uses your existing GitHub Copilot authentication. ### Available Tools #### `copilot_chat` General programming assistance and questions. ```javascript // Example usage in Claude Code copilot_chat({ message: "How do I implement a binary search algorithm?", model: "gpt-4o", context: "I'm working on a JavaScript project" }) ``` #### `copilot_explain` Get detailed explanations of code. ```javascript copilot_explain({ code: "function fibonacci(n) { return n <= 1 ? n : fibonacci(n-1) + fibonacci(n-2); }", language: "javascript" }) ``` #### `copilot_suggest` Generate code from natural language descriptions. ```javascript copilot_suggest({ prompt: "Create a React component for a user profile card", language: "javascript", maxSuggestions: 3 }) ``` #### `copilot_review` Get code review and improvement suggestions. ```javascript copilot_review({ code: "your code here", language: "python", reviewType: "security" }) ``` ### Available Resources #### `copilot://models` List of available AI models and their capabilities. #### `copilot://usage` Current usage statistics and rate limiting information. ## Development ### Run in Development Mode ```bash npm run dev ``` ### Build ```bash npm run build ``` ### Lint ```bash npm run lint ``` ### Test ```bash npm test ``` ## Rate Limiting The server implements rate limiting to respect GitHub's API limits: - Default: 60 requests per minute - Configurable via `MAX_REQUESTS_PER_MINUTE` environment variable - Automatic reset every minute ## Error Handling The server includes comprehensive error handling for: - Authentication failures - Rate limit exceeded - Network issues - Invalid requests - API unavailability ## Troubleshooting ### Common Issues 1. **Authentication Failed** - Ensure GitHub Copilot CLI is installed: `gh extension install github/gh-copilot` - Make sure you're authenticated: `gh auth login` - Verify you have access to GitHub Copilot 2. **Rate Limit Exceeded** - Wait for the rate limit to reset (1 minute) - Consider reducing the frequency of requests 3. **API Not Available** - Verify you have access to GitHub Copilot - Check GitHub's status page for outages ### Debug Mode Enable debug mode for verbose logging: ```env DEBUG=true LOG_LEVEL=debug ``` ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request ## License MIT License - see LICENSE file for details. ## Security - The server uses your existing GitHub Copilot authentication - No tokens are stored or transmitted by this application - Authentication files are read-only from GitHub CLI's standard locations - Follow GitHub's security best practices for your main GitHub authentication ## Support For issues and questions: 1. Check the troubleshooting section 2. Search existing GitHub issues 3. Create a new issue with detailed information