Files
github--github-mcp-server/docs/remote-server.md
T
Sam Morrow 6b3c375492 feat: Add Octicon icons to MCP tools, resources, and prompts (#1603)
* Upgrade MCP Go SDK to v1.2.0-pre.1 and add Octicon icons to tools

- Upgrade MCP Go SDK from v1.1.0 to v1.2.0-pre.1 for Icon support
- Add Icon field to ToolsetMetadata for Octicon name assignment
- Add OcticonURL() helper to generate CDN URLs for Octicon SVGs
- Add Icons() method on ToolsetMetadata to generate MCP Icon objects
- Apply icons automatically in RegisterFunc when tool is registered
- Add icons to all 22 toolset metadata constants with appropriate Octicons
- Update server.go to use new Capabilities API (fixes deprecation warnings)

This demonstrates how the toolsets refactor makes adding new features simpler:
icons are defined once in ToolsetMetadata and automatically applied to all
tools in that toolset during registration.

* Update third-party licenses for SDK upgrade

* Address review feedback: enum size validation, mutation fix, tests

- Replace runtime size validation with compile-time enum type (Size with SizeSM=16, SizeLG=24)
- Fix RegisterFunc mutation by making shallow copy of tool before modifying Icons
- Add comprehensive tests for octicons package (URL, Icons, Size constants)
- Add toolsets tests for ToolsetMetadata.Icons(), RegisterFunc mutation prevention,
  and existing icon preservation
- Improve icon choices for better visual semantics:
  - actions: play → workflow (more specific to GitHub Actions)
  - secret_protection: key → shield-lock (better represents protection)
  - gists: code → logo-gist (dedicated gist icon exists)

* Add GitHub mark icon to server metadata

Add the mark-github octicon to the server's Implementation struct
so that MCP clients can display the GitHub logo for this server.
The icon is provided in both 16x16 and 24x24 SVG sizes.

* Fix rebase conflicts: use Registry methods and NullTranslationHelper

- Remove duplicate old toolsets functions (AvailableToolsets, GetValidToolsetIDs, GetDefaultToolsetIDs)
- Use Registry.AvailableToolsets() and Registry.HasToolset() instead
- Replace stubTranslator with translations.NullTranslationHelper
- Use new SDK Capabilities struct instead of deprecated HasTools/HasResources/HasPrompts
- Add icon-related tests to registry_test.go

* Use embedded data URIs for Octicon icons

- Embed SVG icons using go:embed for offline use and faster loading
- Convert icons to base64 data URIs at runtime
- Fall back to CDN URL for non-embedded icons
- Add test to verify all toolset icons are properly embedded
- 44 SVG files (22 icons × 2 sizes) totaling ~27KB

* Convert icons from SVG to PNG for MCP client compatibility

MCP clients don't support SVG data URIs, so convert all embedded icons
to PNG format using rsvg-convert.

Changes:
- Convert all 44 SVG icons to PNG format
- Add 8 new icons: copilot, git-merge, repo-forked, star-fill
- Update octicons.go to use PNG MIME type
- Add script/fetch-icons for easy icon management
- Update tests and toolsnaps for PNG format

* Add mark-github icon for server metadata

* Add light/dark theme icons for tools, resources, and prompts

- Switch from size-based (16/24px) to theme-based (light/dark) icons
- Use only 16x16 icons for smaller bundle size
- Generate white (inverted) icons for dark theme backgrounds
- Add icons to resources and prompts (auto-applied from toolset metadata)
- Add 'file' icon for repository content resources
- Update fetch-icons script to generate both theme variants

* Use 24px icons with SVG fill modification for themes

- Switch from 16px to 24px icons for better visibility
- Use SVG fill attribute (#24292f for light, #ffffff for dark) instead
  of ImageMagick color inversion for cleaner theme variants
- Remove ImageMagick dependency from fetch-icons script

* Add specific icons for each repository resource type

- repository_content: repo icon
- repository_content_branch: git-branch icon
- repository_content_commit: git-commit icon (new)
- repository_content_tag: tag icon
- repository_content_pr: git-pull-request icon

Resources now have explicit icons set rather than relying on toolset fallback.

* fix: restore Icon fields to toolset metadata and add icons to docs

- Add Icon field to all ToolsetMetadata definitions (lost during rebase conflict resolution)
- Update doc generator to include Octicon icons in toolsets table
- Update doc generator to include icons in tool section headers
- Use Primer Octicons CDN for GitHub markdown compatibility

* feat: add icons to individual tools in documentation

* fix: use repo-local icons with picture element for GitHub theme support

- Reference icons from pkg/octicons/icons/ instead of external CDN
- Use picture element with prefers-color-scheme for light/dark mode
- GitHub markdown renderer will display these correctly

* fix: remove redundant icons from individual tools

Icons are kept on section headers and toolsets table only - having the same
icon on every tool within a section was visually noisy and redundant.

* Add icons to remote server toolsets documentation

* Fix icon paths for docs/remote-server.md

* Add remote-only toolsets with auto-generated documentation and icons guide

- Add ToolsetMetadataCopilot, ToolsetMetadataCopilotSpaces, ToolsetMetadataSupportSearch
- Add RemoteOnlyToolsets() function to return remote-only toolset metadata
- Update doc generator to auto-generate remote-only toolsets table with icons
- Create docs/toolsets-and-icons.md explaining how to add icons to toolsets
- Add link to icons guide in CONTRIBUTING.md

* Add icon validation tests and single source of truth for required icons

- Add pkg/octicons/required_icons.txt as single source of truth for icons
- Add RequiredIcons() function to read the required icons list
- Update script/fetch-icons to read from required_icons.txt
- Update octicons_test.go to use RequiredIcons() instead of hardcoded list
- Add pkg/github/toolset_icons_test.go with:
  - TestAllToolsetIconsExist: validates all toolset icons are embedded
  - TestToolsetMetadataHasIcons: ensures all toolsets have icons set
- Add 'book' icon for SupportSearch toolset
- Update docs/toolsets-and-icons.md with fetch-icons and CI validation docs

* fix: remove unused icon parameter from writeToolDoc

- Remove unused 'icon' parameter from writeToolDoc function signature
- Fix whitespace inconsistency in octicons_test.go
- Fixes lint failure: unused-parameter revive error

* fix: combine icon with name column in remote docs for proper table rendering

- Move icon from separate column to Name column with <br> separator
- Keep <picture> element for light/dark theme support
- Remove empty icon column that was collapsing to zero width
- Remove unused octiconSimpleImg function
2025-12-17 17:31:13 +01:00

24 KiB
Raw Permalink Blame History

Remote GitHub MCP Server 🚀

Install in VS Code Install in VS Code Insiders

Easily connect to the GitHub MCP Server using the hosted version no local setup or runtime required.

URL: https://api.githubcopilot.com/mcp/

About

The remote GitHub MCP server is built using this repository as a library, and binding it into GitHub server infrastructure with an internal repository. You can open issues and propose changes in this repository, and we regularly update the remote server to include the latest version of this code.

The remote server has additional tools that are not available in the local MCP server, such as the create_pull_request_with_copilot tool for invoking Copilot coding agent.

Remote MCP Toolsets

Below is a table of available toolsets for the remote GitHub MCP Server. Each toolset is provided as a distinct URL so you can mix and match to create the perfect combination of tools for your use-case. Add /readonly to the end of any URL to restrict the tools in the toolset to only those that enable read access. We also provide the option to use headers instead.

Name Description API URL 1-Click Install (VS Code) Read-only Link 1-Click Read-only Install (VS Code)
apps
all
All available GitHub MCP tools https://api.githubcopilot.com/mcp/ Install read-only Install read-only
workflow
Actions
GitHub Actions workflows and CI/CD operations https://api.githubcopilot.com/mcp/x/actions Install read-only Install read-only
codescan
Code Security
Code security related tools, such as GitHub Code Scanning https://api.githubcopilot.com/mcp/x/code_security Install read-only Install read-only
dependabot
Dependabot
Dependabot tools https://api.githubcopilot.com/mcp/x/dependabot Install read-only Install read-only
comment-discussion
Discussions
GitHub Discussions related tools https://api.githubcopilot.com/mcp/x/discussions Install read-only Install read-only
logo-gist
Gists
GitHub Gist related tools https://api.githubcopilot.com/mcp/x/gists Install read-only Install read-only
git-branch
Git
GitHub Git API related tools for low-level Git operations https://api.githubcopilot.com/mcp/x/git Install read-only Install read-only
issue-opened
Issues
GitHub Issues related tools https://api.githubcopilot.com/mcp/x/issues Install read-only Install read-only
tag
Labels
GitHub Labels related tools https://api.githubcopilot.com/mcp/x/labels Install read-only Install read-only
bell
Notifications
GitHub Notifications related tools https://api.githubcopilot.com/mcp/x/notifications Install read-only Install read-only
organization
Organizations
GitHub Organization related tools https://api.githubcopilot.com/mcp/x/orgs Install read-only Install read-only
project
Projects
GitHub Projects related tools https://api.githubcopilot.com/mcp/x/projects Install read-only Install read-only
git-pull-request
Pull Requests
GitHub Pull Request related tools https://api.githubcopilot.com/mcp/x/pull_requests Install read-only Install read-only
repo
Repositories
GitHub Repository related tools https://api.githubcopilot.com/mcp/x/repos Install read-only Install read-only
shield-lock
Secret Protection
Secret protection related tools, such as GitHub Secret Scanning https://api.githubcopilot.com/mcp/x/secret_protection Install read-only Install read-only
shield
Security Advisories
Security advisories related tools https://api.githubcopilot.com/mcp/x/security_advisories Install read-only Install read-only
star
Stargazers
GitHub Stargazers related tools https://api.githubcopilot.com/mcp/x/stargazers Install read-only Install read-only
people
Users
GitHub User related tools https://api.githubcopilot.com/mcp/x/users Install read-only Install read-only

Additional Remote Server Toolsets

These toolsets are only available in the remote GitHub MCP Server and are not included in the local MCP server.

Name Description API URL 1-Click Install (VS Code) Read-only Link 1-Click Read-only Install (VS Code)
copilot
Copilot
Copilot related tools https://api.githubcopilot.com/mcp/x/copilot Install read-only Install read-only
copilot
Copilot Spaces
Copilot Spaces tools https://api.githubcopilot.com/mcp/x/copilot_spaces Install read-only Install read-only
book
Github Support Docs Search
Retrieve documentation to answer GitHub product and support questions. Topics include: GitHub Actions Workflows, Authentication, ... https://api.githubcopilot.com/mcp/x/github_support_docs_search Install read-only Install read-only

Optional Headers

The Remote GitHub MCP server has optional headers equivalent to the Local server env vars or flags:

  • X-MCP-Toolsets: Comma-separated list of toolsets to enable. E.g. "repos,issues".
    • Equivalent to GITHUB_TOOLSETS env var or --toolsets flag for Local server.
    • If the list is empty, default toolsets will be used. Invalid or unknown toolsets are silently ignored without error and will not prevent the server from starting. Whitespace is ignored.
  • X-MCP-Tools: Comma-separated list of tools to enable. E.g. "get_file_contents,issue_read,pull_request_read".
    • Equivalent to GITHUB_TOOLS env var or --tools flag for Local server.
    • Invalid tools will throw an error and prevent the server from starting. Whitespace is ignored.
  • X-MCP-Readonly: Enables only "read" tools.
    • Equivalent to GITHUB_READ_ONLY env var for Local server.
    • If this header is empty, "false", "f", "no", "n", "0", or "off" (ignoring whitespace and case), it will be interpreted as false. All other values are interpreted as true.
  • X-MCP-Lockdown: Enables lockdown mode, hiding public issue details created by users without push access.
    • Equivalent to GITHUB_LOCKDOWN_MODE env var for Local server.
    • If this header is empty, "false", "f", "no", "n", "0", or "off" (ignoring whitespace and case), it will be interpreted as false. All other values are interpreted as true.

Looking for examples? See the Server Configuration Guide for common recipes like minimal setups, read-only mode, and combining tools with toolsets.

Example:

{
    "type": "http",
    "url": "https://api.githubcopilot.com/mcp/",
    "headers": {
        "X-MCP-Toolsets": "repos,issues",
        "X-MCP-Readonly": "true",
        "X-MCP-Lockdown": "false"
    }
}

URL Path Parameters

The Remote GitHub MCP server supports the following URL path patterns:

  • / - Default toolset (see "default" toolset)
  • /readonly - Default toolset in read-only mode
  • /x/all - All available toolsets
  • /x/all/readonly - All available toolsets in read-only mode
  • /x/{toolset} - Single specific toolset
  • /x/{toolset}/readonly - Single specific toolset in read-only mode

Note: {toolset} can only be a single toolset, not a comma-separated list. To combine multiple toolsets, use the X-MCP-Toolsets header instead.

Example:

{
    "type": "http",
    "url": "https://api.githubcopilot.com/mcp/x/issues/readonly"
}