[package]
name = "biomcp-cli"
version = "0.8.5"
edition = "2024"
description = "Biomedical CLI and MCP server — genes, variants, trials, articles, drugs, diseases, pathways, proteins, adverse events, PGx"
homepage = "https://biomcp.org"
repository = "https://github.com/genomoncology/biomcp"
documentation = "https://biomcp.org"
license = "MIT"
readme = "README.md"
keywords = ["bioinformatics", "mcp", "genomics", "clinical-trials", "pubmed"]
categories = ["command-line-utilities", "science"]
[[bin]]
name = "biomcp"
path = "src/main.rs"
[[bin]]
name = "biomcp-cli"
path = "src/main_biomcp_cli.rs"
[dependencies]
# CLI
clap = { version = "4", features = ["derive"] }
# Async
tokio = { version = "1", features = ["rt-multi-thread", "macros", "time", "fs", "signal", "io-util"] }
tokio-stream = "0.1"
tokio-util = "0.7"
futures = "0.3"
# HTTP
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "gzip", "multipart"] }
reqwest-middleware = { version = "0.4", features = ["json", "multipart"] }
reqwest-retry = "0.7"
http-cache-reqwest = "0.15"
http = "1"
# gRPC (AlphaGenome)
tonic = { version = "0.12", features = ["tls", "tls-roots"] }
prost = "0.13"
zstd = "0.13"
# JSON
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Hashing (download cache keys)
md5 = "0.7"
# Parsing
regex = "1"
# MCP
rmcp = { version = "0.1", features = ["server", "transport-io", "transport-sse-server"] }
# Templates
minijinja = { version = "2", features = ["builtins"] }
# Embedded skills
rust-embed = "8"
# Self-update
flate2 = "1"
semver = "1"
sha2 = "0.10"
tar = "0.4"
zip = "0.6"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# XDG paths
dirs = "5"
# Time (metadata footer timestamps)
time = { version = "0.3", features = ["formatting"] }
# Error handling
thiserror = "2"
anyhow = "1"
async-trait = "0.1"
# Command parsing for MCP shell
shlex = "1"
[dev-dependencies]
wiremock = "0.6"
[build-dependencies]
tonic-build = "0.12"
[profile.release]
lto = "thin"
codegen-units = 1
panic = "abort"
strip = true