| # Set up an MCP server |
|
|
| Connect Gemini CLI to your external databases and services. In this guide, |
| you'll learn how to extend Gemini CLI's capabilities by installing the GitHub |
| MCP server and using it to manage your repositories. |
|
|
| ## Prerequisites |
|
|
| - Gemini CLI installed. |
| - **Docker:** Required for this specific example (many MCP servers run as Docker |
| containers). |
| - **GitHub token:** A Personal Access Token (PAT) with repo permissions. |
|
|
| ## How to prepare your credentials |
|
|
| Most MCP servers require authentication. For GitHub, you need a PAT. |
|
|
| 1. Create a [fine-grained PAT](https://github.com/settings/tokens?type=beta). |
| 2. Grant it **Read** access to **Metadata** and **Contents**, and |
| **Read/Write** access to **Issues** and **Pull Requests**. |
| 3. Store it in your environment: |
| |
| **macOS/Linux** |
|
|
| ```bash |
| export GITHUB_PERSONAL_ACCESS_TOKEN="github_pat_..." |
| ``` |
|
|
| **Windows (PowerShell)** |
|
|
| ```powershell |
| $env:GITHUB_PERSONAL_ACCESS_TOKEN="github_pat_..." |
| ``` |
|
|
| ## How to configure Gemini CLI |
|
|
| You tell Gemini about new servers by editing your `settings.json`. |
|
|
| 1. Open `~/.gemini/settings.json` (or the project-specific |
| `.gemini/settings.json`). |
| 2. Add the `mcpServers` block. This tells Gemini: "Run this docker container |
| and talk to it." |
| |
| ```json |
| { |
| "mcpServers": { |
| "github": { |
| "command": "docker", |
| "args": [ |
| "run", |
| "-i", |
| "--rm", |
| "-e", |
| "GITHUB_PERSONAL_ACCESS_TOKEN", |
| "ghcr.io/github/github-mcp-server:latest" |
| ], |
| "env": { |
| "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}" |
| } |
| } |
| } |
| } |
| ``` |
|
|
| <!-- prettier-ignore --> |
| > [!NOTE] |
| > The `command` is `docker`, and the rest are arguments passed to it. We |
| > map the local environment variable into the container so your secret isn't |
| > hardcoded in the config file. |
|
|
| ## How to verify the connection |
|
|
| Restart Gemini CLI. It will automatically try to start the defined servers. |
|
|
| **Command:** `/mcp list` |
|
|
| You should see: `✓ github: docker ... - Connected` |
|
|
| If you see `Disconnected` or an error, check that Docker is running and your API |
| token is valid. |
|
|
| ## How to use the new tools |
|
|
| Now that the server is running, the agent has new capabilities ("tools"). You |
| don't need to learn special commands; just ask in natural language. |
|
|
| ### Scenario: Listing pull requests |
|
|
| **Prompt:** `List the open PRs in the google/gemini-cli repository.` |
|
|
| The agent will: |
|
|
| 1. Recognize the request matches a GitHub tool. |
| 2. Call `mcp_github_list_pull_requests`. |
| 3. Present the data to you. |
|
|
| ### Scenario: Creating an issue |
|
|
| **Prompt:** |
| `Create an issue in my repo titled "Bug: Login fails" with the description "See logs".` |
|
|
| ## Troubleshooting |
|
|
| - **Server won't start?** Try running the docker command manually in your |
| terminal to see if it prints an error (for example, "image not found"). |
| - **Tools not found?** Run `/mcp reload` to force the CLI to re-query the server |
| for its capabilities. |
|
|
| ## Next steps |
|
|
| - Explore the [MCP servers reference](../../tools/mcp-server.md) to learn about |
| SSE and HTTP transports for remote servers. |
| - Browse the |
| [official MCP server list](https://github.com/modelcontextprotocol/servers) to |
| find connectors for Slack, Postgres, Google Drive, and more. |
|
|