gh-issues-mcp

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.

Category
访问服务器

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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选