> For the complete documentation index, see [llms.txt](https://codemash.gitbook.io/codemash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codemash.gitbook.io/codemash/cloud/ai/mcp/providers/github.md).

# GitHub

Connect the GitHub MCP server.

GitHub's MCP server lets the chat read repositories, issues and pull requests. Transport: **HttpStream**.

## Get your credentials

1. Sign in to GitHub and open [New fine-grained personal access token](https://github.com/settings/personal-access-tokens/new).
2. Name it (for example `norbix-repo-helper`), set an expiry, choose the repositories, and give only the permissions the chat needs (for example **Contents** and **Issues**: read-only).
3. Press **Generate token** and copy it (it starts with `github_pat_`).
4. Use GitHub's hosted server address: `https://api.githubcopilot.com/mcp/`.

More in the server's own guide: [GitHub MCP server](https://github.com/github/github-mcp-server).

## Connect it in Cloud

**Where:** Project → Integrations → MCP → **Add New Integration** → GitHub → **Connect** · `/projects/<project>/ai/mcps/integrations/new/github`

| Field            | Required | What it does                                                                                                                 | Example                              |
| ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| Server URL       | yes      | The GitHub MCP server address.                                                                                               | `https://api.githubcopilot.com/mcp/` |
| Access Token     | yes      | Your personal access token. Norbix sends it as `Authorization: Bearer <token>`. Stored encrypted, asked again on every save. | `github_pat_placeholder_not_real`    |
| Integration Name | yes      | How the integration is listed in Norbix.                                                                                     | `Repo helper`                        |

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-55b2fd6d61bf5e22588fcab63c2c9697c8eb8338%2Fgithub-form-1.png?alt=media" alt="New GitHub Integration form filled with placeholder values"><figcaption><p>The filled form (secrets are made-up placeholders).</p></figcaption></figure>

Press **Save**. The title becomes *Editing GitHub integration*, the badges say **ENABLED** and **NOT TESTED**, the id (`int_…`) appears, the secret field is empty again with the note that it will not be displayed, and the test panel appears.

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-525ec577cc1ec813e1a5083398153ca05e5ecaa3%2Fgithub-saved-2.png?alt=media" alt="The GitHub integration after save: badges ENABLED and NOT TESTED, the id, and the Test integration panel"><figcaption><p>After save.</p></figcaption></figure>

## Test and set as default

**Test integration** only checks that Norbix can read the stored secret; it does not start or call the server — see [Test an MCP integration](/codemash/cloud/ai/mcp/test.md). MCP integrations have no default: every enabled one is offered to the end-user chat — see [Default MCP integration](/codemash/cloud/ai/mcp/set-default.md). To keep it away from the chat: [Disable or delete](/codemash/cloud/ai/mcp/disable.md).

## Common errors

| Message                                                     | Cause                                                                                       | Fix                                                    |
| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| *Required* under **Server URL** or the secret               | The field is empty; the secret is asked again on every save.                                | Fill it in again.                                      |
| *Domain URL format is invalid* (`CM-ERRORS-DOMAIN-002`)     | **Server URL** is not a full address.                                                       | Write it with `https://`.                              |
| No tools of this server in the chat, though **Test** passed | The test only checks the stored secret; the URL or the key is wrong, or the server is down. | Check the URL and the key at the provider; save again. |
