gh-issues-mcp
A standalone MCP server that exposes a narrow set of GitHub Issues tools for a single repository, securely handling a GitHub personal access token so agents never see the credential.
README
gh-issues-mcp
A standalone MCP server exposing a fixed, narrow set of GitHub Issues tools, scoped to a single repository. It runs as its own long-running process, outside the process tree of any agent session, and holds a GitHub personal access token internally so agents never see or hold the credential themselves.
The server exposes GET /health for liveness checks, and an MCP endpoint at POST/GET/DELETE /mcp (Streamable HTTP transport) with the tools listed below.
Required GitHub token scope
Create a fine-grained personal access token scoped to exactly:
- Issues: Read and write
- Metadata: Read-only
Grant nothing else — no Contents, no Pull requests, no Administration,
no Actions. This means even a compromised server process or a bug in a
tool handler cannot push code or open pull requests: GitHub itself rejects
any such call regardless of what the server attempts.
Scope the token to the single repository this server instance is configured for (see below). If you need to operate on more than one repo, run a separate server instance (different port, different config, different token) per repo.
Storing the token in macOS Keychain
The server never reads the token from an environment variable or a file on disk — only from the macOS Keychain, at startup.
security add-generic-password \
-a "$USER" \
-s "gh-issues-mcp" \
-w "<your-fine-grained-PAT>"
The -s value is the Keychain service name. It defaults to
gh-issues-mcp; override it by setting GH_ISSUES_MCP_KEYCHAIN_SERVICE
before starting the server (useful if you run multiple instances for
multiple repos).
To replace an existing token, delete the old entry first:
security delete-generic-password -s "gh-issues-mcp"
Configuring the target repo
The server reads its target owner/repo and listen port from a local JSON
config file, not from hardcoded values or per-call arguments:
{
"owner": "your-org-or-user",
"repo": "your-repo",
"port": 4319
}
By default this file is expected at ~/.config/gh-issues-mcp/config.json.
Override the path with GH_ISSUES_MCP_CONFIG_PATH.
Running the server
npm install
npm run build
npm start
The server binds to 127.0.0.1:<port> only — it is never reachable from
outside the machine it runs on. It is meant to be started manually, once,
and left running; there is no auto-start or service-management logic built
into it.
If the Keychain entry is missing or unreadable, the server prints a clear error and exits immediately (it will not start up "successfully" without a token).
Health check
curl http://127.0.0.1:4319/health
# {"status":"ok","tokenLoaded":true}
The health-check response reports whether a token was loaded — it never includes the token value itself, in the response, in logs, or anywhere else observable. Use this to confirm the server is up (and holding a token) before starting an agent session or an autonomous run against it.
Registering with an MCP client
Because the port is machine-specific and the server is meant to be available to every agent session on the machine (not just one project), register it in your user-level MCP client configuration — not in any project's committed config. For example, in Claude Code's user config:
{
"mcpServers": {
"gh-issues-mcp": {
"url": "http://127.0.0.1:4319/mcp"
}
}
}
Tools
list_issues(state?, labels?)— lists issues in the configured repo. Pull requests are excluded, since this server treats issues, not PRs, as the triage surface.view_issue(number)— returns an issue's body, labels, and full comment history.
More tools land in later slices (comment/close, label edits, sub-issues).
Audit log
Every tool call appends one JSON-lines entry (timestamp, tool name, arguments, success/failure, GitHub response status) to a local audit log, independent of GitHub's own issue-timeline history.
By default this file is written to
~/.local/state/gh-issues-mcp/audit.log. Override the path with
GH_ISSUES_MCP_AUDIT_LOG_PATH.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。