GitHub
11.2. GitHub — A Deliberate Exception
GitHub — a deliberate exception. This is the most instructive example in the entire Integrations area: sometimes the best solution is not the most popular open standard.
Why GitHub is not in the MCP catalog
The official documentation says it plainly: GitHub was deliberately excluded from Hermes’s official MCP catalog. The specific technical reason — GitHub’s hosted MCP requires each client to bring its own OAuth app, while the dynamic client registration that most other MCP servers accept is rejected by GitHub. In other words, the “plug and play” open-standard integration that Hermes uses for Linear, Figma, Stripe… does not apply smoothly to GitHub.
The alternative — stronger, not weaker
Instead of forcing GitHub into the MCP mold, Hermes chose the pragmatic route: a set of github/* skills that drive the gh CLI directly — GitHub’s official command-line tool. This approach is actually more capable than an ordinary MCP server, because the gh CLI already covers nearly every GitHub operation: reviewing PRs, commenting, merging, managing issues, tracking Actions…
On Desktop, if you have not logged in to gh yet, Hermes detects this and immediately suggests the github-auth skill to set it up, so you do not have to figure out the authentication yourself.
Field-tested lessons
- Do not assume “MCP is always the right choice” — for major platforms with a strong official CLI (GitHub, GitLab, AWS…), a skill that drives the CLI directly can be more complete and more stable than a community MCP server.
- If you build a similar internal integration (a company system that already has its own CLI), consider following exactly this model: write a skill that calls the CLI instead of building a dedicated MCP server just to “follow the standard”.
- When debugging the agent’s GitHub operations and you see odd behavior, remember the path goes through the real
ghCLI — so errors (permissions, rate limits…) usually reflect the actual state of yourghauthentication on your machine. Check withgh auth statusfirst.