# GitHub Copilot CLI MCP Server
An MCP (Model Context Protocol) server that wraps the GitHub Copilot CLI (`gh copilot`), enabling AI assistants to interact with GitHub Copilot through a standardized interface.
## Features
- **Command Suggestions**: Get shell, git, and GitHub CLI command suggestions from natural language
- **Command Explanations**: Understand what complex commands do
- **Shell Aliases**: Generate convenience aliases for your shell
- **Configuration**: View and manage Copilot CLI settings
- **Dual Transport Support**: Both STDIO (local) and SSE (network) transports
## Prerequisites
- **Python 3.10+**
- **GitHub CLI** (`gh`) installed: https://cli.github.com/
- **GitHub Copilot extension** for gh:
```bash
gh extension install github/gh-copilot
```
- **GitHub Copilot subscription** (Individual, Business, or Enterprise)
## Installation
### Option 1: Install from source
```bash
cd /home/ward/MCP/copilot_mcp_server
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### Option 2: Install with pip
```bash
pip install -e .
```
## Usage
### STDIO Transport (Local)
For local MCP client connections:
```bash
python server.py
```
### SSE Transport (Network)
For network-accessible MCP server:
```bash
python server_sse.py
```
Or with custom host/port:
```bash
MCP_SERVER_HOST=0.0.0.0 MCP_SERVER_PORT=8602 python server_sse.py
```
## Available Tools
### `copilot_suggest`
Get a command suggestion from GitHub Copilot based on natural language.
**Parameters:**
- `prompt` (required): Natural language description of what you want to do
- `target`: Target type - `'shell'` (default), `'gh'`, or `'git'`
**Examples:**
```python
copilot_suggest(prompt="Install git", target="shell")
copilot_suggest(prompt="Create pull request", target="gh")
copilot_suggest(prompt="Undo the most recent local commits", target="git")
```
### `copilot_suggest_shell`
Convenience wrapper for shell command suggestions.
**Parameters:**
- `prompt` (required): Natural language description
**Examples:**
- "Kill processes holding onto deleted files"
- "Convert SVG to PNG and resize"
### `copilot_suggest_git`
Convenience wrapper for git command suggestions.
**Parameters:**
- `prompt` (required): Natural language description
**Examples:**
- "Undo the most recent local commits"
- "Clean up local branches"
### `copilot_suggest_gh`
Convenience wrapper for GitHub CLI command suggestions.
**Parameters:**
- `prompt` (required): Natural language description
**Examples:**
- "Create pull request"
- "List pull requests waiting for my review"
### `copilot_explain`
Get an explanation of a command from GitHub Copilot.
**Parameters:**
- `command` (required): The command to explain
**Examples:**
```python
copilot_explain(command="du -sh | sort -h")
copilot_explain(command="git log --oneline --graph --decorate --all")
```
### `copilot_version`
Get the GitHub Copilot CLI version information.
### `copilot_help`
Get help information.
**Parameters:**
- `command`: Optional command to get help for ('suggest', 'explain', 'config', 'alias')
### `copilot_config_get`
Get GitHub Copilot CLI configuration.
**Parameters:**
- `key`: Optional specific config key (empty shows all)
### `copilot_alias`
Generate shell aliases for convenience commands.
**Parameters:**
- `shell`: Shell type - `'bash'`, `'zsh'`, `'fish'`, or `'powershell'`
## MCP Client Configuration
### Claude Code / Claude Desktop
Add to your MCP settings:
```json
{
"mcpServers": {
"copilot": {
"command": "python",
"args": ["/home/ward/MCP/copilot_mcp_server/server.py"]
}
}
}
```
### SSE Client Configuration
```json
{
"mcpServers": {
"copilot-remote": {
"url": "http://localhost:8602/sse"
}
}
}
```
## Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `MCP_SERVER_HOST` | `0.0.0.0` | SSE server bind address |
| `MCP_SERVER_PORT` | `8602` | SSE server port |
## Examples
### Get a Shell Command Suggestion
```python
copilot_suggest_shell(prompt="Find all files larger than 100MB")
```
### Explain a Complex Command
```python
copilot_explain(command="find . -name '*.log' -mtime +30 -delete")
```
### Get Git Help
```python
copilot_suggest_git(prompt="Squash last 3 commits into one")
```
### Get GitHub CLI Help
```python
copilot_suggest_gh(prompt="List all open issues assigned to me")
```
## Systemd Service (Optional)
Create `/etc/systemd/user/copilot-mcp.service`:
```ini
[Unit]
Description=GitHub Copilot MCP Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/ward/MCP/copilot_mcp_server
ExecStart=/home/ward/MCP/copilot_mcp_server/venv/bin/python server_sse.py
Restart=always
RestartSec=5
Environment=MCP_SERVER_PORT=8602
[Install]
WantedBy=default.target
```
Enable and start:
```bash
systemctl --user enable copilot-mcp
systemctl --user start copilot-mcp
```
## License
MIT License
## Related Projects
- [Claude Code MCP Server](../claude-mcp-server/) - Similar MCP wrapper for Claude Code CLI
- [Gemini CLI MCP Server](../gemini_mcp_server/) - Similar MCP wrapper for Gemini CLI