[package]
name          = "doiget-mcp"
description   = "doiget MCP server (stdio only). See ADR-0001."
version.workspace      = true
edition.workspace      = true
rust-version.workspace = true
license.workspace      = true
repository.workspace   = true
homepage.workspace     = true
authors.workspace      = true
keywords.workspace     = true
categories.workspace   = true
readme                 = "README.md"

[lints]
workspace = true

[features]
default = []
# Phase 4 / Slice 15. Enables the `doiget_expand_citation_graph` MCP
# tool by turning on `doiget-core/citation` (which itself enables
# `doiget-core/metadata`). Default release binaries (built without
# `--features citation`) ship without the graph tool; `tools/list`
# advertises 12 tools instead of 13 in that build.
citation = ["doiget-core/citation"]

[dependencies]
doiget-core        = { workspace = true }
tokio              = { workspace = true }
anyhow             = { workspace = true }
thiserror          = { workspace = true }
tracing            = { workspace = true }
tracing-subscriber = { workspace = true }
serde              = { workspace = true }
serde_json         = { workspace = true }
# `camino::Utf8PathBuf` for the store-root probe — the workspace `clippy.toml`
# bans `std::path::PathBuf` for user-facing paths.
camino             = { workspace = true }
# 26-char ULID per tool-call session_id (Slice 1: the non-dry-run
# `doiget_metadata_only` path opens a per-call provenance log session;
# the CLI uses `ulid` for the same purpose in
# `crates/doiget-cli/src/commands/fetch.rs::new_session_id`).
ulid               = { workspace = true }
# URL parsing for the test-mode `DOIGET_*_BASE` overrides in
# `build_metadata_only_http_client` (mirrors the CLI's
# `build_http_client`).
url                = { workspace = true }
# Official Rust MCP SDK. Feature set is locked at the workspace root —
# stdio-only (`transport-io`), no HTTP server, no oauth, no `__reqwest`.
# See ADR-0001 / docs/SECURITY.md §3.
rmcp               = { workspace = true }

[dev-dependencies]
assert_cmd = { workspace = true }
# In-process integration test (`tests/initialize_handshake.rs`) drives the
# server via the rmcp client over a `tokio::io::duplex` pipe. Adding
# `client` here unions with the (server, macros, transport-io, schemars)
# set inherited from `[dependencies]`.
rmcp        = { workspace = true, features = ["client"] }
# Match the test's `tokio::io::duplex` + `AsyncReadExt` use.
tokio       = { workspace = true, features = ["io-util"] }
serde_json  = { workspace = true }
# Serializes env-var-mutating MCP integration tests (the Slice 1
# `doiget_metadata_only` e2e tests stage `DOIGET_*_BASE` to redirect at
# wiremock origins). Mirrors `doiget-cli/Cargo.toml`'s usage.
serial_test = "3"
wiremock    = { workspace = true }
tempfile    = { workspace = true }
# Slice 15b bibtex/csl export e2e seeds a Metadata fixture whose
# `[doiget].fetched_at` is a `chrono::DateTime<Utc>`.
chrono      = { workspace = true }
