You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
This is the**GitHub MCP Server**, a Model Context Protocol (MCP) server that connects AI tools to GitHub's platform. It enables AI agents to manage repositories, issues, pull requests, workflows, and more through natural language.
**Key Details:**
-**Language:** Go 1.24+ (~38k lines of code)
-**Type:** MCP server application with CLI interface
-**Primary Package:** github-mcp-server (stdio MCP server -**this is the main focus**)
-**Secondary Package:** mcpcurl (testing utility - don't break it, but not the priority)
-**Framework:** Uses mark3labs/mcp-go for MCP protocol, google/go-github for GitHub API
-**Size:**~60MB repository, 70 Go files
-**Library Usage:** This repository is also used as a library by the remote server. Functions that could be called by other repositories should be exported (capitalized), even if not required internally. Preserve existing export patterns.
**Code Quality Standards:**
-**Popular Open Source Repository** - High bar for code quality and clarity
-**Comprehension First** - Code must be clear to a wide audience
-**Clean Commits** - Atomic, focused changes with clear messages
-**Structure** - Always maintain or improve, never degrade
-**Code over Comments** - Prefer self-documenting code; comment only when necessary
##Critical Build & Validation Steps
###Required Commands (Run Before Committing)
**ALWAYS run these commands in this exact order before using report_progress or finishing work:**
The reason will be displayed to describe this comment to others.Learn more.
The reference to "golangci-lint v2.5" is ambiguous. Based on.github/workflows/lint.yml, "v2.5" refers to thegolangci-lint-action GitHub Action version, not the golangci-lint tool version itself. Consider clarifying this as "golangci-lint-action v2.5" or specifying the actual golangci-lint tool version to avoid confusion.
Suggested change
2.**lint.yml** - Runs golangci-lint v2.5 with actions/setup-go stable
2.**lint.yml** - Runs golangci-lint-action v2.5 (GitHub Action) with actions/setup-go stable
The reason will be displayed to describe this comment to others.Learn more.
The reference to "golangci-lint v2.5.0" is misleading. The "v2" in.golangci.yml refers to the configuration file format version, not the golangci-lint tool version. Consider clarifying what specific version of the golangci-lint tool is being used, or removing the version number if it's not relevant to the instructions.
Suggested change
-**golangci-lint v2.5.0** with these linters enabled:
1.**PRIMARY FOCUS:** The local stdio MCP server (github-mcp-server) - this is what you should work on and test with
2.**REMOTE SERVER:** Ignore remote server instructions when making code changes (unless specifically asked). This repo is used as a library by the remote server, so keep functions exported (capitalized) if they could be called by other repos, even if not needed internally.
3.**ALWAYS** trust these instructions first - only search if information is incomplete or incorrect
4.**NEVER** use`script/tag-release` or push tags
5.**NEVER** skip`script/lint` before committing Go code changes
6.**ALWAYS** update toolsnaps when changing MCP tool schemas
7.**ALWAYS** run`script/generate-docs` after modifying tools
8. For specific test files, use`go test ./path -run TestName` not full suite
9. E2E tests require PAT token - you likely cannot run them
10. Toolsnaps are API documentation - treat changes seriously
11. Build/test/lint are very fast (~1s each) - run frequently
12. CI failures for docs-check or license-check have simple fixes (run the script)
13. mcpcurl is secondary - don't break it, but it's not the priority
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.