docs(install-claude): "environment variable" examples put the PAT in argv and the saved config
維護者通常 2 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 2/5
- 預估耗時
- 1-3 小時
- 新手友好度
- 82/100
- Issue 類型
- 文件
- 描述清晰度
- 描述清楚
- 活躍度
- 活躍
- 技術堆疊
- markdown
研究方向
從docs/installation-guides/install-claude.md中的命令範例和README.md中的權杖設定範例著手;比較兩者如何將PAT傳遞給Claude Code。查看issue引用的Claude Code環境變數展開文件,確認支援的語法。完成條件是,所有列出的環境變數範例在儲存的設定中都保留變數參照,且不再將PAT展開到命令引數中。
由索引模型根據 Issue 內容生成。
描述
Problem
Several Claude Code commands in docs/installation-guides/install-claude.md (and one in README.md) expand the personal access token in the shell before Claude Code runs, so the token ends up in the process argument list, in shell history, and as a literal value in the saved MCP configuration:
install-claude.md, "With an environment variable (Linux/macOS)":"Bearer '"$GITHUB_PAT"'"closes the single quotes so the shell substitutes the token into theclaude mcp add-jsonargument.install-claude.md, "With an environment variable (Windows PowerShell)":"Bearer $env:GITHUB_PAT"inside a double-quoted string, same effect.install-claude.md, Docker "With an environment variable":-e GITHUB_PERSONAL_ACCESS_TOKEN=$(grep GITHUB_PAT .env | cut -d '=' -f2).install-claude.md, legacy format:-H "Authorization: Bearer $(grep GITHUB_PAT .env | cut -d '=' -f2)", and the PowerShell variant$pat = "YOUR_GITHUB_PAT"followed by-H "Authorization: Bearer $pat".README.md, "Reference the token in configurations":-e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT.
The sections are labelled "With an environment variable", but the stored configuration does not reference the variable; it holds the token itself.
Suggested fix
Claude Code expands ${VAR} references in an MCP server's url, headers, env, command, and args when it connects (Claude Code MCP docs, "Environment variable expansion"). Keeping the reference in single quotes stores ${GITHUB_PAT} literally, so the token stays in the environment and never reaches argv, history, or the config file. Minimal diff, against main at 99d6d6503a7b2a133e2f8a595d6d0ba24b4086d3:
--- a/README.md
+++ b/README.md
@@ -226,8 +226,8 @@
3. **Reference the token in configurations**
```bash
- # CLI usage
- claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
+ # CLI usage (single quotes: Claude Code expands ${GITHUB_PAT} at start-up, so the token stays out of argv and the saved config)
+ claude mcp add github -e 'GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PAT}' -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
# In config files (where supported)
"env": {
--- a/docs/installation-guides/install-claude.md
+++ b/docs/installation-guides/install-claude.md
@@ -40,14 +40,16 @@
With an environment variable (Linux/macOS):
```bash
export GITHUB_PAT="$(grep '^GITHUB_PAT=' .env | cut -d '=' -f2-)"
-claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer '"$GITHUB_PAT"'"}}'
+claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer ${GITHUB_PAT}"}}'
+The single quotes keep ${GITHUB_PAT} literal. Claude Code expands it from the environment when it connects, so the token stays out of the command line, shell history, and the saved configuration. Set GITHUB_PAT in the environment Claude Code starts from.
+
With an environment variable (Windows PowerShell):
$githubPatLine = Get-Content .env | Select-String "^\s*GITHUB_PAT\s*=" | Select-Object -First 1
$env:GITHUB_PAT = ($githubPatLine.Line -split "=", 2)[1].Trim().Trim('"').Trim("'")
-claude mcp add-json github "{`"type`":`"http`",`"url`":`"https://api.githubcopilot.com/mcp`",`"headers`":{`"Authorization`":`"Bearer $env:GITHUB_PAT`"}}"
+claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer ${GITHUB_PAT}"}}'
About the
--scopeflag (optional): Use this to specify where the configuration is stored:
@@ -80,7 +82,7 @@
With an environment variable:
-claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=$(grep GITHUB_PAT .env | cut -d '=' -f2) -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
+claude mcp add github -e 'GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PAT}' -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
- Restart Claude Code
- Run
claude mcp listto see if the GitHub server is configured
@@ -112,7 +114,7 @@
With an environment variable:
-claude mcp add --transport http github https://api.githubcopilot.com/mcp -H "Authorization: Bearer $(grep GITHUB_PAT .env | cut -d '=' -f2)"
+claude mcp add --transport http github https://api.githubcopilot.com/mcp -H 'Authorization: Bearer ${GITHUB_PAT}'
Windows (PowerShell)
@@ -120,8 +122,7 @@
If you see missing required argument 'name', put the server name immediately after claude mcp add:
-$pat = "YOUR_GITHUB_PAT"
-claude mcp add github --transport http https://api.githubcopilot.com/mcp/ -H "Authorization: Bearer $pat"
+claude mcp add github --transport http https://api.githubcopilot.com/mcp/ -H 'Authorization: Bearer ${GITHUB_PAT}'
The placeholder variants (`YOUR_GITHUB_PAT`) are left as they are. I can open this as a pull request if that is easier to review.
- 主要語言
- Go
- 星號
- 34.2k
- 分支
- 5.3k
- 平均合併
- 5 天 18 小時
- 30 天內合併 PR
- 13
環境準備
- 提供 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
github/github-mcp-server 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 69/100
github/github-mcp-server#3760 ·
維護者通常 2 天內回覆
-
難度 2/5 1-3 小時 新手友好度 69/100
github/github-mcp-server#3729 ·
維護者通常 2 天內回覆
-
難度 2/5 1-3 小時 新手友好度 65/100
github/github-mcp-server#3722 ·
維護者通常 2 天內回覆
-
Insiders Feedback: PR created UI doesn't link to the PR可能已有人在做 @genius-0963 於 5 天前認領。 未關閉bug insiders user-experience
難度 2/5 1-3 小時 新手友好度 65/100
github/github-mcp-server#3658 ·
維護者通常 2 天內回覆
-
Inconsistent parameter names可能已有人在做 @huong8373tt-beep 於 10 天前認領。 未關閉bug tool-improvement
難度 2/5 1-3 小時 新手友好度 66/100
github/github-mcp-server#3605 · 1 則留言 ·
維護者通常 2 天內回覆
查看 github/github-mcp-server 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 82/100
prime-radiant-inc/evener#5901 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 69/100
-
kind/bug
難度 2/5 1-3 小時 新手友好度 78/100
kyma-project/serverless#2769 ·
維護者通常 1 天內回覆
-
ready-for-agent
難度 2/5 1-3 小時 新手友好度 78/100
hexlet-basics/hexlet-basics#962 ·
維護者通常 1 天內回覆
-
imapproxy closeForMaintenance grace timer calls clientConn.Close() before closeMaintenanceTransport可能已有人在做 @dejanstrbac 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 83/100
維護者通常 1 天內回覆