github / github/github-mcp-server

http mode: support static token auth (env) for single-tenant self-hosted deployments

未關閉
#2,946 2 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視
enhancement request ai review
主要語言
Go
星號
33k
分支
5k
平均合併
2 天 1 小時
30 天內合併 PR
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

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。