Expand description
doiget MCP server (stdio).
Phase 3 foundation. JSON-RPC framing is provided by the official rmcp
SDK with stdio-only transport (transport-io). See ADR-0001 for the
permanence of the stdio-only choice and docs/MCP_TOOLS.md for the
tool surface contract.
This module ships the rmcp wiring + the always-on tools that prove the foundation:
doiget_health— operational sanity check.doiget_capability_profile— reports the runtimeCapabilityProfile.doiget_metadata_only— DOI / arXiv id metadata resolution. Both thedry_run: truepreview path (ADR-0022) and the live non-dry-run path (dispatches throughdoiget_core::orchestrator::metadata_only_to_store, which also performs thedocs/MCP_TOOLS.md§11 store-write SIDE EFFECT) are wired. The tool MUST NOT callHttpClient::fetch_pdf— that contract is enforced by the orchestrator and the posture-lint workflow.
The remaining tools named in docs/MCP_TOOLS.md (doiget_fetch_paper,
doiget_batch_fetch, doiget_info,
doiget_search_local, doiget_list_recent, doiget_paper_pdf_path)
land in follow-up PRs. The exact count is intentionally left unstated
in this docstring so it does not rot as tools land.
§Stdout safety
Per docs/SECURITY.md §3, stdout is reserved for JSON-RPC frames only.
clippy::print_stdout is denied below at the crate root; tracing must
be redirected to stderr by the binary entry point. The doiget-cli
main() wires tracing_subscriber::fmt().with_writer(std::io::stderr)
before calling Server::run.
Structs§
- Batch
Fetch Input - JSON-schema-derived input for
doiget_batch_fetch. - Batch
From Bibliography Input - JSON-schema-derived input for
doiget_batch_from_bibliographyper ADR-0030 D6. - Bibtex
Export Input - JSON-schema-derived input for the
doiget_bibtex_exportMCP tool. One or many refs (docs/MCP_TOOLS.md§1 rowdoiget_bibtex_export); each is resolved independently. - CslExport
Input - JSON-schema-derived input for the
doiget_csl_exportMCP tool. - Expand
Citation Graph Input - JSON-schema-derived input for the
doiget_expand_citation_graphMCP tool. Always present in the type system — the#[tool_router]macro references this type unconditionally and a cfg-gatedpub structwould cause anunresolved typeerror in the default build. The feature-gate is applied only to the tool body, which returnsNOT_IMPLEMENTEDwhen built without--features citation. ADR-0010 hard caps (depth<=3, total<=100, per_paper<=20) are applied inside the tool body viaGraphCaps::clamped— theOption<u32>fields below are caller hints, not authoritative. - Fetch
Paper Input - JSON-schema-derived input for
doiget_fetch_paper. Same wire shape asMetadataOnlyInput— just a different orchestrator target. - Info
Input - JSON-schema-derived input for the
doiget_infoMCP tool. - List
Recent Input - JSON-schema-derived input for the
doiget_list_recentMCP tool. - Metadata
Only Input - JSON-schema-derived input for the
doiget_metadata_onlyMCP tool. - Paper
PdfPath Input - JSON-schema-derived input for the
doiget_paper_pdf_pathMCP tool. - Resolve
Paper Input - JSON-schema-derived input for the
doiget_resolve_paperMCP tool. - Search
Local Input - JSON-schema-derived input for the
doiget_search_localMCP tool. - Server
- MCP server handle. Owns the resolved
CapabilityProfileplus the statically-built rmcp tool router.