OokCite

io.github.TurtleTech-ehf由 GitHub 账号 TurtleTech-ehf 发布v0.6.5更新于 Nov 9, 2026

Catch fabricated citations: verify DOIs/ISBNs and format them in 2900+ CSL styles.

概览

AI 生成的概览

OokCite 让助手核验 DOI 与 ISBN、解析杂乱的引文,并按数千种 CSL 样式格式化参考文献,以发现伪造引用。

可以做什么
核验与查找文献:检查 DOI 是否存在、按 ISBN 查书、从杂乱引文反查论文、一次批量解析最多 50 条、按作者或分类检索语料库、检查 API 健康状态。格式化引文:按 2900 多种 CSL 样式格式化 DOI、批量格式化、批量核验参考文献、查找和列出样式 ID、生成分组文内标注。管理文献集合:列出、添加、导入 BibTeX、RIS 或粘贴列表、导出为 BibTeX 或 CSL、搜索、查重、修改条目、合并、打标签、排序、删除。共享与集合操作:创建或撤销共享链接、查看共享集合、合并集合、在集合间移动条目。实用工具:生成引用键、展开期刊缩写、规范化参考文献。账户与 ORCID:查看用量、按姓名或机构搜索 ORCID、获取档案、收录其出版物。
适用场景
适合撰写或修订论文与参考文献时使用,也适合在引用前确认 DOI 或 ISBN 确实存在,或把粘贴的引文列表转成 BibTeX 或指定引用样式。
运行要求
可通过 npm(需 Node.js)或预编译二进制在本地以 stdio 运行,也可通过 Streamable HTTP 加 OAuth 登录远程使用。基础使用无需密钥(每天 20 次查询)。OokCite 账户与 OOKCITE_API_KEY 可提高限额并启用集合功能;密钥也可来自 OOKCITE_API_KEY_COMMAND、OOKCITE_API_KEY_FILE 或平台凭据存储。需要能访问 OokCite API 的网络。
安装前请注意
引文查询会发送到 OokCite API;只返回元数据,不返回 PDF 或全文。集合工具会写入、修改、合并和删除已保存数据,share_collection 会生成可共享链接;可用 OOKCITE_MCP_READ_ONLY 或 OOKCITE_MCP_ALLOW_MUTATE 禁止变更。可选的 OOKCITE_API_KEY 是机密,setup --connect 可避免把它写进配置文件。更高限额、合并、批量移动和实用工具需要付费方案(每月 4 或 10 欧元)。

安装

在 SourceWeft 中

  1. 打开 控制台中的 OokCite,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

OokCite MCP Server

[MIT License] [Crates.io] [npm]

Give MCP-capable tools the ability to validate DOIs, format citations, manage bibliography collections, and catch fabricated references. Returns citation metadata only -- not PDFs or full-text articles. Desktop clients can run it over standard input and output. Remote clients use https://ookcite-api.turtletech.us/mcp.

Quick Start

One command to install and configure:

bash
npx @turtletech/ookcite-mcp setup

This auto-detects supported MCP clients and writes the configuration for you. Connect an OokCite account for higher rate limits and collection tools without putting an API key in shell arguments or MCP configuration:

bash
npx @turtletech/ookcite-mcp setup --connect

The command opens the TurtleTech dashboard, creates or activates the Free plan, stores the issued key in the platform credential store, and writes only a credential reference to detected clients. Use setup --connect --device on a headless machine.

An existing API key remains supported:

bash
npx @turtletech/ookcite-mcp setup --key YOUR_API_KEY

No API key required for basic usage (20 lookups/day): format_citation and a small plaintext import_bibliography (omit collection, up to 8 items). Sign up for more.

Paste a list to BibTeX

import_bibliography accepts a numbered or blank-line citation list, not only .bib / .ris. Omit collection for a small paste: the tool resolves the items and returns .bib text. With a key, pass collection to save the resolved entries. export_collection can then emit .bib (format=bib) or CSL bibliography text (format=csl or a style id such as ieee). npx @turtletech/ookcite-mcp setup remains the installer. The server never fetches PDFs.

After changing MCP config, restart the client or reload its MCP servers. Many clients do not hot-reload environment-variable changes for already-running stdio servers.

Install (Alternative Methods)

npm (recommended):

bash
npm install -g @turtletech/ookcite-mcp

cargo-binstall (fastest, no Node.js):

bash
cargo binstall ookcite-mcp

cargo install (from source):

bash
cargo install ookcite-mcp

Pre-built binaries: Download from GitHub Releases for Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows.

Configure

If you used setup, you're done. Otherwise, add to your MCP client config:

json
{  "mcpServers": {    "ookcite": {      "command": "npx",      "args": ["-y", "@turtletech/ookcite-mcp"]    }  }}

With an API key:

json
{  "mcpServers": {    "ookcite": {      "command": "npx",      "args": ["-y", "@turtletech/ookcite-mcp"],      "env": {        "OOKCITE_API_KEY": "your_key_here"      }    }  }}

If you installed globally (npm install -g or cargo install), you can use "command": "ookcite-mcp" directly instead of npx.

Keeping the key out of the config file

setup --connect uses the platform credential store by default. It refuses to replace an existing platform credential or named OokCite MCP configuration unless --replace-credential or --replace-config is given explicitly.

A generic credential manager can be used instead. The store command receives the new key on standard input; it must not expect the key in a command-line argument. The retrieval command prints the key on standard output when the MCP server starts:

bash
npx @turtletech/ookcite-mcp setup --connect \  --store-command "credential-cli store ookcite" \  --retrieve-command "credential-cli read ookcite"

For an explicit owner-only file instead of a credential manager:

bash
npx @turtletech/ookcite-mcp setup --connect \  --credential-file "$HOME/.config/ookcite/api-key"

The file is created with owner-only permissions and is never overwritten. The platform, helper-command, and file forms put references such as these in client configuration:

json
{  "mcpServers": {    "ookcite": {      "command": "npx",      "args": ["-y", "@turtletech/ookcite-mcp"],      "env": {        "OOKCITE_API_KEY_COMMAND": "credential-cli read ookcite"      }    }  }}

At startup, source precedence remains OOKCITE_API_KEY, OOKCITE_API_KEY_COMMAND, OOKCITE_API_KEY_FILE, then the platform credential reference. With none of them the server starts anonymous. setup --key remains available for existing deployments that intentionally keep the key in client configuration.

Credential retrieval obeys two constraints:

  • Retrieval receives closed standard input, so it cannot consume MCP JSON-RPC.
  • Retrieval is bounded by OOKCITE_API_KEY_TIMEOUT, which defaults to 10 seconds, and its output is never copied into diagnostics.

Consult your client's MCP documentation for its configuration-file location. Use the mcpServers.ookcite JSON above when automatic setup is unavailable, then restart the client or reload its MCP servers.

Optional env (stdio MCP, all clients):

VariablePurpose
OOKCITE_API_KEYHigher rate limits + collection tools (optional for basic lookup/format)
OOKCITE_APIOverride API base URL (default https://ookcite-api.turtletech.us)
OOKCITE_MCP_READ_ONLY1 hard-disables collection mutations (review / CI automation)
OOKCITE_MCP_ALLOW_MUTATE0 denies mutations; unset or 1 allows (API key still required server-side)
OOKCITE_STARTUP_PROBES1 runs auth + npm update checks on stderr before accepting MCP connections (default off for faster connect)
OOKCITE_API_KEY_COMMANDCommand printing the key on stdout; stdin is closed
OOKCITE_API_KEY_FILEOwner-protected file whose first line is the key
OOKCITE_API_KEY_TIMEOUTSeconds allowed for credential retrieval (default 10)
OOKCITE_CREDENTIAL_STOREplatform to load a platform credential reference
OOKCITE_CREDENTIAL_SERVICEPlatform credential service name (default ookcite-mcp)
OOKCITE_CREDENTIAL_ACCOUNTPlatform credential account name (default default)

Marketplace plugin

OokCite installs two ways.

From this repository, add marketplace TurtleTech-ehf/ookcite-mcp and install ookcite@ookcite. That registers the ookcite marketplace and enables the plugin in plugins/ookcite. The plugin connects to https://ookcite-api.turtletech.us/mcp and adds three skills: format a pasted bibliography (/ookcite:format-bibliography), verify references before submission (/ookcite:verify-references), and build and export a collection (/ookcite:build-collection). Sign in when asked. Formatting one citation and checking a short DOI list also work before sign-in, within the anonymous daily cap. Saving a collection requires the signed-in account.

The web, desktop, and cowork apps use the same address as a directory connector. Choose sign-in. Submit the connector by that URL, and submit the plugins/ookcite folder as the plugin bundle. Installing from the marketplace does not submit either listing.

A remote connector does not have to support dynamic client registration. The plugin sends the pre-registered public client id ookcite-remote, so the code client does not call a registration endpoint. Discovery for that client publishes S256 PKCE and no registration_endpoint. The protected resource lists that client's issuer first, and its resource field is https://ookcite-api.turtletech.us/mcp. The client accepts the directory callback exactly, and loopback redirects on localhost and 127.0.0.1 at any port. Access tokens must satisfy exp - iat <= 3600 or the resource server rejects them.

Remote MCP

Use OokCite from a chat product without installing anything. Add this address, choose sign-in, and approve the login when asked:

text
https://ookcite-api.turtletech.us/mcp

The chat then sends a short-lived access token:

text
Authorization: Bearer <access token>

Lookups count against that signed-in account. A pasted API key is rejected. The transport is stateless Streamable HTTP: one POST, JSON in and JSON out. Select Streamable HTTP and sign-in (OAuth). Do not select the legacy SSE transport, an API key, or "No authentication".

eduGenAI Chat, after ookcite-api.turtletech.us is whitelisted:

FieldValue
NameOokCite
DescriptionVerify DOIs and ISBNs, resolve messy citations, and format bibliography entries in CSL styles. Returns citation metadata only, not PDFs or full text.
URLhttps://ookcite-api.turtletech.us/mcp
TransportStreamable HTTP
AuthenticationOAuth

ookcite-mcp serve runs your own copy. Desktop clients that spawn a subprocess still use standard input and output.

VariablePurpose
OOKCITE_APIOokCite API base URL (default https://ookcite-api.turtletech.us)
OOKCITE_MCP_HTTP_AUTHoauth for sign-in, bearer for your own copy, or none
OOKCITE_MCP_OIDC_ISSUERSign-in issuer. Required when auth is oauth
OOKCITE_MCP_OIDC_AUDIENCEToken audience. Required when auth is oauth
OOKCITE_MCP_OIDC_SCOPERequired scope (default openid)
OOKCITE_MCP_PATHMCP path (default /mcp)
OOKCITE_MCP_ALLOWED_HOSTSExtra Host names, comma-separated. Loopback is always allowed
OOKCITE_MCP_ALLOWED_ORIGINSBrowser Origin values that may call the endpoint. A missing Origin is allowed

MCP usage tips

  • Prefer batch tools (verify_references, batch_format, batch_add_to_collection, import_bibliography) over many single-citation calls.
  • Collection mutations require the signed-in account, or OOKCITE_API_KEY on a copy you run yourself. Destructive tools (delete_collection, remove_from_collection, unshare_collection) are annotated for clients that honor MCP tool hints.
  • The server writes diagnostics to stderr only on the MCP path; stdout is reserved for JSON-RPC.

Tools

Lookup & Validation

ToolPurpose
validate_doiCheck if a DOI exists (anti-hallucination)
lookup_isbnLook up a book by ISBN
reverse_lookupFind a paper from messy citation text; returns original query, confidence, and title
batch_resolveResolve many citation strings in one request (max 50)
enhanced_searchCorpus search with author / category / citation facets
health_checkCheck API availability and health

Formatting

ToolPurpose
format_citationFormat a DOI in any of 2900+ CSL styles (no API key for a single citation)
verify_referencesBatch-check DOIs, and any bibliographic claim passed with them
batch_formatFormat multiple citations at once
search_stylesFind CSL style IDs by name
list_stylesPage through the full CSL style list
group_citeGenerate grouped in-text markers (e.g. [1-3])

Account

ToolPurpose
usagePlan in effect plus daily (and monthly) lookups remaining

ORCID

ToolPurpose
orcid_searchFind ORCID profiles by name, affiliation, or ORCID ID
orcid_profileFetch one ORCID profile by ID
ingest_orcidIndex an ORCID profile's publications so they are searchable

Collections (requires sign-in)

Collections are a signed-in feature. The hosted server uses the account from sign-in. A copy you run yourself uses OOKCITE_API_KEY. A small plaintext import_bibliography with no collection is the exception: it returns .bib under the anonymous cap.

ToolPurpose
list_collectionsList saved citation collections
add_to_collectionAdd a citation (by DOI or free-text)
batch_add_to_collectionAdd multiple citations at once
import_bibliographyImport BibTeX, RIS, or a pasted plaintext list
export_collectionExport collection as BibTeX or CSL text
search_collectionSearch within a collection; returns entry_id per match
check_duplicatesCheck for duplicates; returns entry_id for matches
delete_collectionDelete a collection
update_collectionUpdate name, description, or style
remove_from_collectionRemove an entry by entry_id, bare DOI, or doi:10.x/y
update_entry_metadataCorrect a saved entry's title, authors, year, DOI, …
merge_entriesMerge two entries of one collection into one
update_tagsSet tags on a collection
reorder_collectionReorder entries

Typical workflow:

  1. Paste a numbered citation list into import_bibliography (omit collection for a small list) and keep the returned .bib
  2. Or keep references.bib / library.bib under version control and import that file into a collection
  3. Use search_collection, check_duplicates, and export_collection (bib or csl) while revising
  4. Treat the collection as an audit/export companion, not the only copy of your bibliography

Local overrides: the API does not yet store every field update_entry_metadata sends, so a copy running on your own machine (stdio, or serve with auth=none) also keeps each edit in $XDG_DATA_HOME/ookcite/overrides/<collection>.json and applies it in export_collection. A signed-in HTTP server keeps no local overrides. eid_as=pages places article numbers where elsarticle-num prints them. See docs/local-overrides.md.

Removing a single entry: call search_collection (or check_duplicates) to see each hit as entry_id: … (and optionally aliases: doi:… when the stored id is opaque). Pass that entry_id to remove_from_collection, or pass the paper's bare DOI / doi:10.x/y — the server resolves aliases locally before the API call.

Sharing & Collection Operations

ToolPurpose
share_collectionCreate a shareable link
unshare_collectionRevoke sharing
view_sharedView a shared collection by token
merge_collectionsMerge multiple collections
batch_move_entriesMove entries between collections

Sharing is available to signed-in accounts with collections. Free accounts can import and batch-add within their daily quota. Merge and batch-move require an Academic or Business plan.

Utilities

ToolPurpose
generate_citation_keysBetter BibTeX-style keys for a list of DOIs
expand_journalExpand a journal abbreviation to its full name
normalize_bibliographyRe-render BibTeX or RIS as canonical BibTeX

These three require an Academic or Business plan.

Plans & Pricing

TierPriceLookups/dayAPI calls/monthCollectionsEntries/collection
AnonymousFree20--0--
FreeFree60--4200
AcademicEUR 4/mo20,00010,000101,000
BusinessEUR 10/mo20,00040,000204,000

Re-lookups can be served without quota use when collection metadata is already available to the API. A retrieval that has to resolve the paper again can count against the current plan's quota. Paid Academic checkout is intended for students, researchers, and educators at accredited institutions; a verified ORCID can also qualify a signed-in account for Academic limits.

Anti-Hallucination

Add this to your system prompt:

Before citing any paper, use validate_doi to confirm the reference exists. If validation fails, do not include the citation.

For revision workflows, add:

Keep the project bibliography in a local .bib file under version control. Use OokCite collections for verification, deduplication, and export.

How It Works

The MCP server connects to the public OokCite API to look up and format citations. It's a thin MCP wrapper around the OokCite REST API with no local database, and no heavy dependencies.

Sign up for a free account (60 lookups/day), or upgrade to Academic (EUR 4/mo) or Business (EUR 10/mo) for higher monthly API limits, larger collections, paid utilities, merge, and batch-move.

Source layout

The crate is a thin MCP (stdio) wrapper around the public OokCite REST API. There is no local citation database; all state lives on the API, except the per-collection metadata overrides described in docs/local-overrides.md.

PathRole
src/main.rsBinary entry: --version, setup, start MCP server
src/cli.rsStartup probes (validate OOKCITE_API_KEY via /api/v1/me, update check)
src/setup.rsookcite-mcp setup / npx add-mcp client config installer
src/server.rsServer + #[tool_router] MCP tool handlers (plus unit tests at bottom)
src/tool_args.rsTool argument structs (serde + schemars)
src/constants.rsAPI base URL, package version, reverse-lookup confidence threshold
src/http_error.rserror_detail and HTTP status classification for client-facing strings
src/collection_entries.rsCollection entry ids, bare DOI / doi: alias resolution, search lines
src/plaintext.rsPasted-list split and local .bib render
src/bib_export.rsCollection BibTeX from provider records, stored fields, and text cleanup
src/overrides.rsLocal per-collection metadata overrides applied on export
src/resolve_helpers.rsReverse-lookup and free-text resolve payload helpers
src/endpoints.rsEndpoint registry (lib crate surface); contract-tested
src/lib.rsLibrary root (exports endpoints only)
tests/api_contract.rsDecrypts contract/openapi.json.age; asserts every endpoint exists
contract/Age-encrypted OpenAPI snapshot + regen.sh
npm/@turtletech/ookcite-mcp installer/wrapper (downloads release binary)
demo/Asciinema recording scripts
marketplace catalogLists ookcite from ./plugins/ookcite
plugins/ookcite/Plugin manifest, hosted MCP URL, three skills
scripts/set-version.shCocogitto pre-bump hook: package, registry, and plugin versions

Collections / entry ids: search_collection and check_duplicates emit entry_id: … lines. remove_from_collection accepts that id, a bare DOI, or doi:10.x/y (resolved locally in collection_entries before the DELETE call).

Release: tag v* runs .github/workflows/release.yml (multi-arch GitHub Release assets, crates.io, npm). Version bumps use cocogitto (cog.toml + scripts/set-version.sh).

Why server.rs is large: rmcp's #[tool_router] / #[tool] macros keep handlers on one impl Server. Further file splits without macro workarounds add little user value; peel tests or add small helpers (resolve_many, shared Me type) before fighting the macro.

Contributing / local checks

bash
cargo test --bin ookcite-mcp          # unit tests (no contract key needed)cargo build --release./target/release/ookcite-mcp --version
# Contract tests (optional locally; required in CI with secret):export OOKCITE_CONTRACT_KEY="value-from-your-credential-manager"cargo test --test api_contract

Live MCP smoke (optional; needs OOKCITE_API_KEY): add/search/remove with a bare DOI on a throwaway collection, then delete_collection.

Documentation

License

MIT. see LICENSE.

来源:README.md,提交 1649321

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

3
  1. v0.6.5最新Oct 4, 2026
  2. v0.6.3Oct 4, 2026
  3. v0.6.2Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分