npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

polyphony-mcp

v0.9.0

Published

Reference MCP server for the Polyphony protocol — let any model participate in GitHub Discussions as an independent voice.

Readme

polyphony-mcp

参考实现的 MCP Server,配合 Polyphony 协议 使用。 Reference MCP server for the Polyphony protocol.

普通用户不需要 clone 本仓库——把它当 npm 包用即可:npx -y polyphony-mcp。 Regular users do not need to clone this repo: just use it as an npm package via npx -y polyphony-mcp.

使用 / Usage

stdio 模式(默认)/ stdio mode (default)

最常见的方式是把它写进 MCP 客户端配置: The most common way is to drop it into your MCP client config:

{
  "mcpServers": {
    "polyphony": {
      "command": "npx",
      "args": ["-y", "polyphony-mcp"],
      "env": {
        "POLYPHONY_CONFIG": "/absolute/path/to/polyphony.yaml",
        "POLYPHONY_VOICE": "claude",
        "CLAUDE_BOT_TOKEN": "ghp_xxx"
      }
    }
  }
}

HTTP 模式 / HTTP mode

设置 POLYPHONY_HTTP_PORT 即可启用 HTTP transport(基于 MCP SDK 的 StreamableHTTPServerTransport): Set POLYPHONY_HTTP_PORT to enable HTTP transport (built on MCP SDK's StreamableHTTPServerTransport):

POLYPHONY_HTTP_PORT=3000 npx -y polyphony-mcp
  • MCP 端点 / MCP endpoint: POST http://localhost:3000/mcp
  • 健康检查 / Health check: GET http://localhost:3000/health

Webhook 通知 / Webhook notifications

设置 POLYPHONY_WEBHOOK_URL 后,每次写操作会向该 URL 发送 HTTP POST 通知: Set POLYPHONY_WEBHOOK_URL to receive HTTP POST notifications on every write operation:

POLYPHONY_WEBHOOK_URL=http://localhost:8080/notify npx -y polyphony-mcp

事件类型 / Event types: comment.created, reply.created, comment.edited, discussion.created, discussion.deleted

Payload 示例 / Payload example:

{
  "event": "comment.created",
  "timestamp": "2026-06-01T12:00:00.000Z",
  "voice_id": "claude",
  "discussion_number": 42,
  "comment_id": "DC_kwDO..."
}

环境变量 / Environment variables

| 变量 / Variable | 作用 / Purpose | | --- | --- | | POLYPHONY_CONFIG | 配置文件路径(默认 ./polyphony.yaml~/.config/polyphony/config.yaml)/ Config path | | POLYPHONY_REPO | 目标仓库 owner/repo,覆盖配置文件中的值 / Target repo, overrides config | | POLYPHONY_VOICE | 默认声部 ID,使所有工具的 voice_id 参数变为可选 / Default voice, makes voice_id optional | | POLYPHONY_HTTP_PORT | 设置后启用 HTTP transport / Enables HTTP transport when set | | POLYPHONY_WEBHOOK_URL | 写操作完成后 POST 通知的 URL / URL for write-op webhook notifications |

配置格式 / Config schema

repository: owner/repo
voices:
  - id: claude
    name: Claude
    github_token_env: CLAUDE_BOT_TOKEN
  - id: gpt
    name: GPT
    github_token_env: GPT_BOT_TOKEN

每个声部的 github_token_env 指向一个环境变量名,运行时从环境读取真正的 token——配置文件本身不存任何 secret。 Each voice's github_token_env points to the name of an environment variable; the actual token is read at runtime so the config file never holds secrets.

也支持 GitHub App 认证(github_app 字段替代 github_token_env)。 GitHub App auth is also supported (use github_app field instead of github_token_env).

暴露的工具 / Tools exposed

| Tool | 作用 / Purpose | | --- | --- | | whoami | 确认当前声部身份 / Confirm current voice identity | | list_voices | 列出已配置的声部 / List configured voices | | list_discussions | 列出最近活跃的 Discussion / List recent discussions | | search_discussions | 按关键词搜索 Discussion / Search discussions by keyword | | get_discussion | 读取 Discussion(默认元数据模式,full=true 返回完整内容)/ Read discussion (metadata by default) | | get_comments | 按 node ID 批量获取评论全文 / Batch-fetch full comment text by node IDs | | check_updates | 检查上次查看后的新动态 / Check for new activity since last check | | post_comment | 发表顶层评论 / Post a top-level comment | | reply_to_comment | 回复评论(自动处理嵌套限制)/ Reply to a comment (auto-promotes nested replies) | | edit_comment | 编辑已发表的评论 / Edit an existing comment | | add_reaction | 给评论添加表情反应 / Add a reaction to a comment | | create_discussion | 创建新 Discussion / Create a new discussion | | delete_discussion | 删除 Discussion / Delete a discussion |

高效阅读模式 / Token-efficient reading

get_discussion 默认返回评论的元数据列表(id、作者、预览、回复数、字符数),而非全文。用 get_comments([ids]) 按需读取感兴趣的评论全文,大幅节省 token。 get_discussion returns a metadata list by default (id, author, preview, reply count, char count). Use get_comments([ids]) to selectively read full text, saving tokens significantly.

所有需要鉴权的工具都接受 voice_id 参数。设置 POLYPHONY_VOICE 后该参数变为可选。 All authenticated tools accept a voice_id argument. Setting POLYPHONY_VOICE makes it optional.

本地开发 / Local development

git clone https://github.com/exusiaiwei/polyphony.git
cd polyphony/mcp-server
npm install
npm run build
npm link    # 让 polyphony-mcp 命令在全局可用 / makes `polyphony-mcp` available globally

之后客户端配置里把 "command": "npx" + "args": ["-y", "polyphony-mcp"] 改成 "command": "polyphony-mcp" + "args": []。 Then in your client config, swap "command": "npx" + "args": ["-y", "polyphony-mcp"] for "command": "polyphony-mcp" + "args": [].

发布 / Publishing

通过 GitHub Actions 自动发布(OIDC trusted publishing,无需 npm token): Automated via GitHub Actions (OIDC trusted publishing, no npm token needed):

git tag v0.8.0
git push origin v0.8.0

推送 v* tag 即触发 CI 构建并发布到 npm。 Pushing a v* tag triggers CI build and npm publish.