github / github/github-mcp-server
http mode: support static token auth (env) for single-tenant self-hosted deployments
- 主要言語
- Go
- スター
- 33k
- フォーク
- 5k
- 平均マージ
- 2日 1時間
- マージ済み PR(30日)
- 52
説明
### Describe the feature or problem you’d like to solve
github-mcp-server http requires a per-request Authorization header and never reads GITHUB_PERSONAL_ACCESS_TOKEN from the environment - token extraction happens only in pkg/http/middleware/token.go (ExtractUserToken), and httpCmd's ServerConfig has no token field (cmd/github-mcp-server/main.go). The env var is consulted only by the stdio command.
That fits the multi-tenant/centralized use case http mode was built for (#471, #997). But it leaves a gap for single-tenant self-hosted deployments: an org running one server instance with one service credential, fronted by a gateway/tunnel that cannot inject custom headers (in our case, Anthropic's MCP tunnels; the same applies to any transport that forwards requests as-is). The server starts cleanly with the env var set, then 401s every request - a confusing failure, since the README's env-var examples don't mention they're stdio-only.
### Proposed solution
In http mode, when no Authorization header is present on a request, fall back to a statically configured token (GITHUB_PERSONAL_ACCESS_TOKEN / GITHUB_ACCESS_TOKEN), opt-in via a flag, e.g.:
github-mcp-server http --static-auth # or --token-from-env
Per-request tokens would still take precedence, preserving the multi-tenant behavior. Notably, the 2026-01-28 GitHub changelog announcing HTTP mode described exactly this fallback ("falls back GITHUB_PERSONAL_ACCESS_TOKEN if no header is provided"), but the shipped behavior doesn't include it.
コントリビューションガイド
調査の方向性
Start with pkg/http/middleware/token.go and cmd/github-mcp-server/main.go, then compare how the stdio command reads GITHUB_PERSONAL_ACCESS_TOKEN and GITHUB_ACCESS_TOKEN. Done means an explicit HTTP-mode opt-in can use the configured environment token when Authorization is absent, while per-request tokens still take precedence and requests without either remain unauthorized.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- go
- 領域
- api, authentication, backend
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 68/100