原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Crossref MCP

作者:jtl-neo版本 0.1.0i★ –i在你的电脑上运行
注册名称io.github.jtl-neo/crossref-mcp

安装

概览

作者提供的说明(英文原文)

MCP server wrapping the Crossref REST API for scholarly metadata.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他
  • 你需要填写:CROSSREF_PLUS_TOKEN

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 需要你自己填写: CROSSREF_MAILTO, CROSSREF_PLUS_TOKEN

标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。

你需要

  • PyPI已安装 Python 的 uv(用于 uvx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "crossref": {
      "command": "uvx",
      "args": [
        "crossref-mcp"
      ],
      "env": {
        "CROSSREF_MAILTO": "your-value",
        "CROSSREF_PLUS_TOKEN": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add crossref --env CROSSREF_MAILTO=your-value --env CROSSREF_PLUS_TOKEN=your-value -- uvx crossref-mcp

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "crossref": {
      "command": "uvx",
      "args": [
        "crossref-mcp"
      ],
      "env": {
        "CROSSREF_MAILTO": "your-value",
        "CROSSREF_PLUS_TOKEN": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "crossref": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "crossref-mcp"
      ],
      "env": {
        "CROSSREF_MAILTO": "your-value",
        "CROSSREF_PLUS_TOKEN": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • CROSSREF_MAILTO env
    Email for Crossref's polite pool (recommended).
  • CROSSREF_PLUS_TOKEN 机密 env
    Optional Crossref Plus API token.

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 jtl-neo 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 18326 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 18326 个服务器的 10% 更新
  • 基础检查结果等于或优于此分类中其他 18326 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Crossref MCP 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:CROSSREF_PLUS_TOKEN

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.0)于5个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv), Docker。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Signoff

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211前天更新
安装

Signoff

作者:ayuanxx-max

Five gates that make an agent's 'done' provable: run them, read the verdict, audit the record.

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

crossref-mcp

English | 中文

An MCP server wrapping the Crossref REST API, exposing scholarly-metadata lookups (works, members, journals, funders, types, licenses, prefixes) as tools an LLM client can call.

Not affiliated with or endorsed by Crossref. Data is served live from the

public Crossref API. Set CROSSREF_MAILTO to join Crossref's

polite pool.

Features

  • All major Crossref resource endpoints as 18 read-only tools.
  • Dual transport: stdio (local) and Streamable HTTP (container).
  • Polite pool (User-Agent + mailto), optional Crossref Plus token.
  • Token-bucket rate limiting (auto-tuned from X-Rate-Limit-* headers) with exponential backoff honoring Retry-After.
  • Cursor deep paging, field select, raw vs simplified output.
  • Optional X-API-Key HTTP auth (/health exempt), /health endpoint.
  • Optional Redis response cache + cross-replica rate limiting.
  • Optional Caddy TLS reverse proxy for public deployment.

Quick start (local, stdio)

uv sync

export CROSSREF_MAILTO="you@example.com" # recommended (polite pool) uv run crossref-mcp # starts a stdio MCP server

Inspect with the MCP Inspector: uv run mcp dev src/crossref_mcp/server.py.

Configuration

Env varRequiredDefaultDescription
CROSSREF_MAILTOrecommended—Email for Crossref's polite pool.
CROSSREF_PLUS_TOKENno—Crossref Plus API token (sent as a header).
CROSSREF_BASE_URLnohttps://api.crossref.orgAPI base URL.
CROSSREF_TIMEOUTno30Per-request timeout (seconds).
MCP_TRANSPORTnostdiostdio or http.
MCP_API_KEYno—If set, HTTP requests need a matching X-API-Key header (/health exempt).
LOG_LEVELnoINFOLog level (logs go to stderr).
REDIS_URLno—Enable Redis cache + shared rate limiting (optional).
CACHE_TTLno86400Cache TTL in seconds.
RATELIMIT_BACKENDnoin-memoryin-memory or redis.

Tools

Works — search_works, get_work (by DOI), get_work_references (capped at 50), get_work_quality (registration agency). Members / Journals / Funders — search_members · get_member · get_member_works; search_journals · get_journal (ISSN) · get_journal_works; search_funders · get_funder · get_funder_works. Types / Licenses / Prefixes — list_types · get_type; list_licenses; get_prefix. Plus ping.

Shared parameters. Search/list tools take query (and query_bibliographic / query_author / query_title on works), filter (Crossref key:value,… syntax), sort + order, rows (≤1000) + offset, and select. Deep paging: set cursor="*" then reuse the returned next_cursor. All tools return simplified fields by default; pass raw=true for the full Crossref JSON.

Connecting an MCP client

stdio (Claude Desktop / Cursor) — claude_desktop_config.json:

{

"mcpServers": { "crossref": { "command": "uvx", "args": ["crossref-mcp"], "env": { "CROSSREF_MAILTO": "you@example.com" } } } }

Or run the container over stdio: "command": "docker", "args": ["run", "-i", "--rm", "-e", "CROSSREF_MAILTO", "heyinnaneo/crossref-mcp"].

Streamable HTTP — once the container is up, point an HTTP-capable client at http://localhost:8000/mcp. If MCP_API_KEY is set, send it as X-API-Key.

Use as a skill (no server)

Prefer not to run a server? skill.md is a self-contained skill that teaches an agent to call the Crossref REST API directly — it only needs an HTTP/fetch capability (no install, no key, no container). Trade-off: the agent issues raw HTTP and parses Crossref JSON itself, without the MCP server's polite-pool throttling, field simplification, or structured errors.

Claude Code (Agent Skill):

mkdir -p ~/.claude/skills/crossref-api

curl -fsSL https://raw.githubusercontent.com/jtl-neo/crossref-api-MCP/main/skill.md \ -o ~/.claude/skills/crossref-api/SKILL.md

(Project-scoped instead: place it at .claude/skills/crossref-api/SKILL.md in your repo.)

Other agents (Cursor, Claude Projects, custom): paste the contents of skill.md into your system prompt / project knowledge / rules file.

Docker / HTTP deployment

cp .env.example .env          # set CROSSREF_MAILTO

docker compose up -d # pulls heyinnaneo/crossref-mcp, HTTP on :8000 curl http://localhost:8000/health

Serves Streamable HTTP at /mcp and /health (compose health check). Set MCP_API_KEY to require X-API-Key on /mcp. To build locally, uncomment build: . in docker-compose.yml.

Public deployment (TLS / reverse proxy) — optional

Put it behind the bundled Caddy proxy (Caddyfile + docker-compose.proxy.yml): TLS termination (auto Let's Encrypt), HTTP→HTTPS, SSE streaming, backend not published on the host.

cp .env.example .env   # add DOMAIN=, ACME_EMAIL=, MCP_API_KEY=

docker compose -f docker-compose.proxy.yml up -d curl https://your-domain/health

Defense in depth: proxy edge (optional IP allowlist / Basic auth) + MCP_API_KEY app layer; both leave /health open. Needs a domain with DNS pointing at the host and ports 80/443 reachable. Caddy rate limiting needs the caddy-ratelimit plugin (custom build).

Redis cache + cross-replica rate limiting — optional

Set REDIS_URL for a response cache (cache-aside on the raw envelope; mailto/ secrets excluded from keys) and, with RATELIMIT_BACKEND=redis, a shared token bucket so replicas stay within Crossref's polite-pool rate.

docker compose -f docker-compose.redis.yml up -d

curl http://localhost:8000/health # cache_enabled + ratelimit_backend + redis: up

Redis failures degrade gracefully (no cache, in-memory limiting); /health stays 200 with redis: down.

CI / publishing

.github/workflows/ci.yml: test (ruff + format + pytest with coverage on every push/PR), security (Trivy fs scan), build-push (multi-arch image to heyinnaneo/crossref-mcp on main / v* tags), and on tags publish-pypi (OIDC Trusted Publisher) + publish-registry (MCP registry).

Repository secrets (Settings → Secrets and variables → Actions): DOCKERHUB_USERNAME = heyinnaneo, DOCKERHUB_TOKEN = a Docker Hub Access Token (Read/Write). Tag a release (git tag v0.1.0 && git push origin v0.1.0); the tag must match pyproject.toml.

Install from the MCP registry

Published as io.github.jtl-neo/crossref-mcp (see server.json), with a PyPI package (uvx crossref-mcp) and an OCI image. Publishing is automated on version tags (publish-pypi + publish-registry); requires a public repo and a configured PyPI Trusted Publisher.

Security & trust

  • Read-only. Every tool is a lookup, annotated readOnlyHint.
  • Rate limiting. Single-process in-memory by default — don't run as a public proxy for heavy traffic; for replicas use RATELIMIT_BACKEND=redis.
  • Polite pool. Use your own CROSSREF_MAILTO.
  • Public HTTP. Set MCP_API_KEY and front with TLS.
  • No bundled secrets. .env is excluded from image and git.

License

MIT. Bibliographic data comes from the public Crossref REST API; not affiliated with Crossref.


中文

English | 中文

把 Crossref REST API 封裝成 MCP server,將學術文獻 metadata 查詢(works、members、journals、funders、types、 licenses、prefixes)包成 LLM client 可呼叫的工具。

非 Crossref 官方、未經其背書。資料即時取自公開的 Crossref API。請設定

CROSSREF_MAILTO 以加入 Crossref 的

polite pool。

特色

  • 主要 Crossref 資源端點,共 18 個唯讀工具。
  • 雙傳輸:stdio(本機)與 Streamable HTTP(容器)。
  • Polite pool(User-Agent + mailto)、可選 Crossref Plus token。
  • Token-bucket 速率控制(依 X-Rate-Limit-* header 自動調整),429 指數退避並 尊重 Retry-After。
  • cursor 深分頁、欄位 select、raw 與精簡輸出切換。
  • 可選 X-API-Key HTTP 認證(/health 豁免)、/health 端點。
  • 可選 Redis 回應快取 + 跨副本速率控制。
  • 可選 Caddy TLS 反向代理,供公開部署。

快速開始(本機 stdio)

uv sync

export CROSSREF_MAILTO="you@example.com" # 建議(polite pool) uv run crossref-mcp # 啟動 stdio MCP server

用 MCP Inspector 檢視:uv run mcp dev src/crossref_mcp/server.py。

設定

環境變數必填預設說明
CROSSREF_MAILTO建議—Crossref polite pool 用的 email。
CROSSREF_PLUS_TOKEN否—Crossref Plus API token(以 header 送出)。
CROSSREF_BASE_URL否https://api.crossref.orgAPI base URL。
CROSSREF_TIMEOUT否30每請求逾時(秒)。
MCP_TRANSPORT否stdiostdio 或 http。
MCP_API_KEY否—設了則 HTTP 請求需帶相符的 X-API-Key header(/health 豁免)。
LOG_LEVEL否INFO日誌層級(日誌走 stderr)。
REDIS_URL否—啟用 Redis 快取 + 共享速率控制(選用)。
CACHE_TTL否86400快取 TTL(秒)。
RATELIMIT_BACKEND否in-memoryin-memory 或 redis。

工具

Works — search_works、get_work(依 DOI)、get_work_references(上限 50)、get_work_quality(註冊機構)。 Members / Journals / Funders — search_members/get_member/ get_member_works;search_journals/get_journal(ISSN)/get_journal_works; search_funders/get_funder/get_funder_works。 Types / Licenses / Prefixes — list_types/get_type;list_licenses; get_prefix。另有 ping。

共用參數。 搜尋/列表工具接受 query(works 另有 query_bibliographic/ query_author/query_title)、filter(Crossref key:value,… 語法)、sort

  • order、rows(≤1000)+ offset、select。深分頁:設 cursor="*",再把回傳

的 next_cursor 傳回續抓。所有工具預設回精簡欄位;傳 raw=true 取完整 Crossref JSON。

連接 MCP client

stdio(Claude Desktop / Cursor) — claude_desktop_config.json:

{

"mcpServers": { "crossref": { "command": "uvx", "args": ["crossref-mcp"], "env": { "CROSSREF_MAILTO": "you@example.com" } } } }

或以容器跑 stdio:"command": "docker"、"args": ["run", "-i", "--rm", "-e", "CROSSREF_MAILTO", "heyinnaneo/crossref-mcp"]。

Streamable HTTP — 容器啟動後,將支援 HTTP 的 client 指向 http://localhost:8000/mcp。若設了 MCP_API_KEY,以 X-API-Key header 帶上。

當作 skill 使用(免 server)

不想架 server?skill.md 是自包含 skill,教 agent 直接呼叫 Crossref REST API — 只需 agent 有 HTTP/fetch 能力(免安裝、免 key、免容器)。 取捨:agent 自己發 raw HTTP、自己解析 Crossref JSON,沒有 MCP server 的 polite-pool 限速、欄位精簡、結構化錯誤。

Claude Code(Agent Skill):

mkdir -p ~/.claude/skills/crossref-api

curl -fsSL https://raw.githubusercontent.com/jtl-neo/crossref-api-MCP/main/skill.md \ -o ~/.claude/skills/crossref-api/SKILL.md

(專案層級:放 repo 內 .claude/skills/crossref-api/SKILL.md。)

其他 agent(Cursor / Claude Projects / 自製): 把 skill.md 內容貼進 system prompt / project knowledge / rules 檔。

Docker / HTTP 部署

cp .env.example .env          # 設定 CROSSREF_MAILTO

docker compose up -d # 拉 heyinnaneo/crossref-mcp,HTTP 在 :8000 curl http://localhost:8000/health

於 /mcp 提供 Streamable HTTP,/health 供 compose 健康檢查。設 MCP_API_KEY 可要求 /mcp 帶 X-API-Key。要本地 build,取消 docker-compose.yml 內 build: . 註解。

公開部署(TLS / 反向代理)— 選用

放在內附的 Caddy proxy 後(Caddyfile + docker-compose.proxy.yml):TLS 終結 (自動 Let's Encrypt)、HTTP→HTTPS、SSE 串流、後端不對 host 公開。

cp .env.example .env   # 加上 DOMAIN=、ACME_EMAIL=、MCP_API_KEY=

docker compose -f docker-

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx