mcpField
T
taken

taken

本地服务
github.com/RogueAlg0版本控制21 天前更新

关于 taken

`taken` 是只读命令行工具和 MCP 服务,可在认领 GitHub 问题前检查其是否仍可参与。它综合问题时间线、评论、指派情况、仓库活跃度和贡献政策,并给出附证据的判定。

主要功能

  1. 01检查关联的拉取请求和指派情况
  2. 02扫描评论中的认领意向
  3. 03读取贡献政策和仓库活跃度
  4. 04依据证据给出 GO、TAKEN 或 CAUTION
  5. 05扫描仓库并发现候选问题

适用场景

  1. 01认领前检查问题是否仍开放参与
  2. 02寻找适合贡献的未解决问题
  3. 03针对目标问题查看仓库状态

MCP 相关

MCP 服务提供 `check_issue`、`scan_repo` 和 `discover_candidates` 工具。它通过已认证的 GitHub CLI(`gh`)执行只读 API 调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"roguealg0-taken": {
"command": "uvx",
"args": [
"taken-gh"
]
}
}
}
启动命令uvx taken-gh

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypitaken-gh0.9.2

工具

3

收录的工具列表 · 更新于 2 周前

参数类型必填说明
meany否
repostring是
ownerstring是
graphqlboolean否强制使用 GraphQL 路径。默认:根据身份验证状态自动选择。
issue_numberinteger是
pr_idle_daysany否认领过期衰减:关联 PR 不活跃多少天后,TAKEN 会降为 CAUTION。默认值:90。
claim_silence_daysany否过时认领衰减:简单问题被一个认领阻塞并显示为 CAUTION 的天数;认领者有活动时计时重置。默认值:7。
persistent_sessionboolean否强制使用持久会话 GraphQL 路径;仅在内存中保存来自 `gh auth token` 的令牌。默认值:根据身份验证状态自动选择。
claim_silence_complex_daysany否过时认领衰减:复杂问题被一个认领阻塞并显示为 CAUTION 的天数。默认值:14。

详细介绍

taken?

PyPI npm CI OpenSSF Scorecard OpenSSF Best Practices SonarCloud Quality Gate License: MIT Python MCP Registry

taken? 会在你主动接手 GitHub 问题之前,先回答一个问题:它已经有人接手了吗?

简单来说,它会在你开始工作前检查问题:是否仍可供贡献者参与?是否已经有人在处理?仓库的响应是否及时,能否让你的 PR 得到评审?

无需安装即可试用:在线控制台会在浏览器中运行实际检查。

它旨在解决这样一个问题:GitHub 会在问题时间线中显示“关联了拉取请求”事件,却不会在评论中显示。你可以读完问题的所有评论,却仍然错过已经有人为它开了 PR 这一事实。taken? 会检查时间线、扫描评论以查找认领工作的人、查看受指派者、读取 CONTRIBUTING.md 了解 AI 贡献政策,并检查仓库是否仍然活跃。然后它会给出 GO、TAKEN 或 CAUTION 的判定,并列出依据。

要求

  • Python 3.10 或更高版本
  • 已完成身份验证的 GitHub CLI(gh)

taken? 只会通过你自己的 gh 登录信息发起只读 API 调用。它不会获取或存储令牌,也不会向 GitHub 写入任何内容。

安装

uv tool install taken-gh

或者使用 pipx:

pipx install taken-gh

然后运行:

taken owner/repo#123

也可以使用完整的问题 URL:

taken https://github.com/owner/repo/issues/123

判定结果

TAKEN 的优先级高于 CAUTION,CAUTION 的优先级高于 GO。

  • TAKEN:问题已关闭、有未关闭的 PR 与其关联,或已有受指派者。
  • CAUTION:评论称有人想接手(软性认领,对方可能已经不再处理);关联的 PR 已合并,但问题仍未关闭;仓库有需要遵守的 AI 政策;仓库看起来不活跃;或者新手友好标签同时伴有冗长的讨论串或设计级别的标签(开始前值得先浏览一下)。
  • GO:以上情况均不符合。

认领者扫描是基于评论文本的启发式判断,并非确凿证据。判定结果始终会列出依据,供你自行判断。

退出代码:0 表示 GO,1 表示 TAKEN,2 表示 CAUTION,3 表示发生错误(目标或标志无效、没有 gh、API 错误)。

示例

已有 PR 正在修复的问题:

$ taken Exodus-Privacy/exodus#300
taken? Exodus-Privacy/exodus#300
verdict: TAKEN
  ...
  why:
    - open PR #700 already covers this: https://github.com/Exodus-Privacy/exodus/pull/700

已有受指派者的问题:

$ taken chahe-dridi/vscode-agent-bell#200
taken? chahe-dridi/vscode-agent-bell#200
verdict: TAKEN
  ...
  why:
    - assigned to: dk5488

干净的问题(已过滤掉你自己发布的认领评论):

$ taken snowflakedb/snowflake-cli#3145 --me RogueAlg0
taken? snowflakedb/snowflake-cli#3145
verdict: GO
  ...
  why:
    - no linked PRs, no assignees, no claimants, repo is active

实用标志

  • --json:以 JSON 格式输出完整结果,而不是人类可读的摘要
  • --me LOGIN:扫描认领者时忽略你自己的评论
  • --no-cache:绕过一小时的 API 响应缓存
  • --rest:强制使用 REST 获取路径(默认情况下,已登录用户使用 GraphQL)
  • --health:针对单个仓库生成维护者报告,而不是贡献者判断

taken --help 会列出所有选项。

批处理模式和仓库扫描

向 taken 提供多个目标,它会为每个目标输出一行判断结果:

taken owner/repo#123 owner/repo#124 --me mylogin
TAKEN   owner/repo#123  assigned to: dk5488
GO      owner/repo#124  no linked PRs, no assignees, no claimants, repo is active

单独的 owner/repo 会自动扫描该仓库:逐一检查其中未关闭的问题 (按最近更新时间从新到旧排列,不包括 PR):

taken django/django --label "good first issue" --limit 10

API 响应会缓存一小时,缓存目录为 ~/.cache/taken (可通过 TAKEN_CACHE_DIR 覆盖),因此重复扫描的开销很低。

可选择启用的 REST 传输(TAKEN_TRANSPORT=httpx)会保留 JSON 对象和数组,包括空列表。响应 ETag 会与任一类型的数据一同缓存:缓存过期后, 304 Not Modified 会复用缓存的正文并刷新其 TTL。默认的子进程传输方式保持不变。

发现模式

taken --discover 会在 GitHub 上查找适合贡献的候选项:它从 GitHub 的问题搜索中获取原始 候选项,对每个候选项运行 taken 的完整验证,并对通过验证的候选项排序。列表中只会 包含 GO 判断结果,并根据聚合器不会筛选的信号评分:维护者的响应速度。

taken --discover --language python --min-contributors 3 --limit 10
  6  octocat/hello-world#42  maintainer replied; updated 1d ago; repo pushed 0d ago
  4  octocat/other-repo#7    updated 3d ago; repo pushed 2d ago

每行都会说明对应的评分。候选项会并行验证 (默认使用 8 个工作线程;可通过 --jobs N 调整)。

MCP 服务

taken 也可作为 MCP 服务运行,因此编码 Agent 可以通过调用工具来检查问题, 而无需通过 shell 调用 CLI。配置方式相同:需安装并完成身份验证的 gh, 并通过你自己的登录信息进行只读 API 调用。

uvx --from "taken-gh[mcp]" taken-mcp

提供三种工具:check_issue、scan_repo、discover_candidates。已在官方 MCP Registry 中发布,名称为 io.github.RogueAlg0/taken。

开发

uv sync          # install dev tools (ruff, pytest)
uv run pytest
uv run ruff check
uv run ruff format --check

AI 辅助

本项目在 AI 辅助下构建,并对此公开说明。每项贡献都会由其作者审查并理解后才会合并。

安全

请参阅 SECURITY.md,了解受支持的版本以及报告漏洞的方式。请使用 私密漏洞报告渠道,而不要提交公开问题。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。