AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A public, read-only Model Context Protocol server, and the equivalent REST API, for Bioconductor. Connect an AI agent (Claude, Codex, Gemini, …) to one URL and it can check a package's build and propagation state, read why a check failed, see release dates and downloads, see what is happening across the seandavi/bioc-* infrastructure repos, and search the infrastructure docs and ADRs for why it works that way, with every answer linked to the public source it came from.
Status: pre-alpha. Deploys from
main; expect breaking changes. The REST API is unstable until v1. The design is in the spec (bioc-infrastructure#122); progress is tracked in #1.
The hostname is temporary and will move to a Bioconductor domain. This block is the only place in this README to change; every command below reads it.
export BIOC_MCP=https://bioc-mcp.seandavi.workers.dev
| Path | What |
|---|---|
$BIOC_MCP/mcp | MCP, all modules (Streamable HTTP, no auth, no session) |
$BIOC_MCP/mcp/{module} | one module, e.g. /mcp/pkg |
$BIOC_MCP/mcp/{a}+{b} | several, e.g. /mcp/pkg+ops |
$BIOC_MCP/api/v1/… | REST, same results as JSON |
$BIOC_MCP/api/openapi.json | OpenAPI document |
$BIOC_MCP/api/v1/about | modules, tools, upstream sources (MCP: resource bioc://about) |
| Module | Tool | Answers |
|---|---|---|
meta | meta_ping | Is the server up? |
pkg | pkg_status | Is this package propagated, and did its latest build and check pass? |
pkg | pkg_legacy_status | What does the legacy build system (BBS) report for this package, and where does it disagree with the registry? |
pkg | pkg_check_output | Why did the check fail? The failing part of the log. |
pkg | pkg_build_environment | What image, repositories and dependency versions did a build job use? |
pkg | pkg_release_info | Which release and devel versions are current, on which R, and when was the release? |
pkg | pkg_downloads | How many downloads, and from how many distinct IPs, did this package get each month of a year? |
pkg | pkg_repo_diff | How many packages does the registry serve at the same version as bioconductor.org, and which differ? |
pkg | pkg_revdeps | Which packages depend on this one, directly or transitively? What breaks downstream if it fails? |
pkg | pkg_missing_deps | Which published packages have a hard dependency that is in none of the propagation index, base R, CRAN or the Bioconductor data repositories? |
ops | ops_activity | What is open, failing or stale across the seandavi/bioc-* infrastructure repos? |
docs | docs_search | Which sections of the infrastructure docs (site pages, ADRs, component docs) match these words? |
docs | docs_read | The full text of one docs page or section, from a docs_search URL. |
The docs module also serves each page as an MCP resource (bioc://docs/…) and an
explain-decision prompt.
The pkg module serves a triage-failing-package prompt, which uses pkg_status,
pkg_check_output and the docs tools, so it is offered only where both modules are (/mcp,
/mcp/pkg+docs).
Run the export above first. Each client below says whether it was tested against the live server, and when.
claude mcp add --transport http --scope user bioc "$BIOC_MCP/mcp"
Drop --scope user to add it to the current project only; claude mcp remove bioc removes it.
Tested: Claude Code 2.1.302, 2026-10-22.
Settings → Connectors → Add custom connector. Name it Bioconductor, set the URL to the URL above
followed by /mcp, and leave the OAuth fields empty.
Not tested.
codex mcp add bioc --url "$BIOC_MCP/mcp"
This writes a [mcp_servers.bioc] table with url to ~/.codex/config.toml (Streamable HTTP);
edit or delete it there.
Tested: Codex CLI 0.146.0, 2026-10-22.
gemini mcp add --scope user --transport http bioc "$BIOC_MCP/mcp"
Without --scope user it goes to ./.gemini/settings.json.
Tested: Gemini CLI 0.38.2, 2026-10-22.
install.packages("mcptools", repos = c("https://posit-dev.r-universe.dev", getOption("repos")))
CRAN mcptools 1.0.3 and earlier fail on any tool result containing null
(posit-dev/mcptools#135); use the r-universe
build until the next CRAN release.
# BIOC_MCP comes from the shell; if R was not started there, run
# Sys.setenv(BIOC_MCP = "<the URL above>") first.
config <- tempfile(fileext = ".json")
jsonlite::write_json(
list(mcpServers = list(bioc = list(url = paste0(Sys.getenv("BIOC_MCP"), "/mcp")))),
config, auto_unbox = TRUE
)
chat <- ellmer::chat_google_gemini() # any ellmer chat_*() works; chat_google_gemini() reads GEMINI_API_KEY (or GOOGLE_API_KEY)
chat$set_tools(mcptools::mcp_tools(config))
chat$chat("Is edgeR passing check in Bioconductor release? Cite the source URL.")
For a permanent setup, put the same JSON in ~/.config/mcptools/config.json and call
mcptools::mcp_tools() with no argument.
Tested: ellmer 0.4.2 with mcptools 1.0.3.9000, 2026-10-22.
POST $BIOC_MCP/mcp with JSON-RPC. No auth, no session.
curl -s -X POST "$BIOC_MCP/mcp" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Point any of the above at $BIOC_MCP/mcp/pkg (or /mcp/docs, /mcp/ops, /mcp/pkg+docs) instead of /mcp.
The client loads fewer tools into its context.
pkg_status)pkg_status, then
pkg_check_output)pkg_legacy_status)pkg_build_environment)pkg_release_info)pkg_downloads)pkg_repo_diff)pkg_revdeps)pkg_missing_deps)ops_activity)docs_search,
then docs_read)curl -s "$BIOC_MCP/api/v1/meta/ping"
curl -s "$BIOC_MCP/api/v1/pkg/status?package=edgeR&universe=bioc-release"
curl -s "$BIOC_MCP/api/v1/pkg/revdeps?package=S4Vectors&depth=1"
curl -s "$BIOC_MCP/api/v1/ops/activity?kind=failures"
curl -s "$BIOC_MCP/api/v1/docs/search?query=propagation+gate"
curl -s -G "$BIOC_MCP/api/v1/docs/read" --data-urlencode 'id_or_url=https://seandavi.github.io/bioc-infrastructure/propagation-gate.html#why-the-registry-polls'
Every body is { data, summary, sources }. sources is a list of { url, as_of }: the upstream
URL and when its data was current. MCP returns the same object as structuredContent (and as
text). Trimmed from the edgeR call:
{
"data": { "package": "edgeR", "universe": "bioc-release", "…": "…" },
"summary": "edgeR (bioc-release) is propagated at 4.10.7 …",
"sources": [
{ "url": "https://bioc-release.r-universe.dev/api/packages/edgeR", "as_of": "2026-10-22T23:07:08.000Z" }
]
}
Rate limit: 120 requests per minute per client address (an IPv6 /64 counts as one address;
approximate, per Cloudflare location). Over it, the server answers HTTP 429 with retry-after: 60
and error code rate_limited. This applies to /mcp too.
curl. No
secrets, no private logs, no writes.With Node ≥ 22.12:
npm ci
npm run dev
npm run dev serves the Worker at http://127.0.0.1:8787. Point an MCP client that speaks
Streamable HTTP at http://127.0.0.1:8787/mcp (or /mcp/<module> for one module), or call the
REST API: curl http://127.0.0.1:8787/api/v1/meta/ping.
ops_activity reads the GitHub API. Without a token GitHub allows 60 requests an hour, and one
all-repo summary uses about 49. Put GITHUB_TOKEN=<a GitHub token with no repository permissions>
in .dev.vars (gitignored), restart npm run dev, and try
curl 'http://127.0.0.1:8787/api/v1/ops/activity?kind=workflows&repo=bioc-website'.
More commands are in AGENTS.md.
New modules, docs sources and evaluation questions are welcome. Start with CONTRIBUTING.md; report problems with the issue forms, and security issues as described in SECURITY.md. By participating you agree to the Code of Conduct.
Cite it: see CITATION.cff.
Apache 2.0, see LICENSE.