Skip to main content
Glama
wminson

GitHub Copilot CLI MCP Server

by wminson
README.md
# 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