uniprot_get_entry
Fetch a UniProt protein entry by accession (e.g. P04637 for p53, P38398 for BRCA1). Returns function, gene, organism, disease associations, cross-references.
accession必填response_format
io.github.smaniches由 GitHub 账号 smaniches 发布v1.3.17更新于 Nov 4, 2026
Verifiable, release-aware protein evidence workflows over UniProt and linked scientific sources.
只读的 UniProt 服务器,让助手查询蛋白质、变异、结构与来源凭证,并保留可核查的出处记录。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
[CI] [OpenSSF Scorecard] [GitHub Release] [PyPI version] [PyPI downloads/30d] [License: Apache 2.0] [Python 3.11+] [MCP compatible] [Coverage] [Provenance: SHA-256 + verify] [ORCID] [DOI] [Glama score] [Awesome MCP Servers]
Produce verifiable, release-aware protein evidence packages from UniProt and linked scientific sources.
Use this MCP server to find proteins, assemble protein, target, and variant evidence, and keep a checkable record of where each result came from. Responses preserve source-specific provenance, including the provider, retrieval time, source URL, and a SHA-256 digest. A release identifier is present when the provider supplies one. uniprot_provenance_verify can compare recorded UniProt REST records with current UniProt data; it does not independently verify ClinVar or AlphaFold DB results.
The complete tool catalog remains available for specialized research workflows.
Author: Santiago Maniches · ORCID 0009-0005-6480-1987 · TOPOLOGICA LLC
Research authorship: Santiago Maniches independently maintains this server and is the sole scientific author of its project-specific research contributions. AI-assisted tools have supported development, testing, and internal review under his direction. UniProt records, linked source data, and underlying third-party methods retain their original authorship; internal tool-assisted review is not external scientific validation.
Run it in one line:
The TP53 R175H example is a real capture from October 15, 2026, not a hypothetical model transcript. Its UniProt, ClinVar and AlphaFold DB responses are saved with their original response bytes in the capture directory. The contract test recomputes raw and canonical SHA-256 values from the saved upstream bytes and checks their captured footer URLs and hashes. It separately compares the transcript text with a saved tool-output record; it does not independently re-derive every parsed statement from those bytes.
For example, the captured UniProt P04637 response has:
To validate this historical capture from a repository checkout:
To compare the current upstream record with the captured one, invoke
uniprot_provenance_verify with the URL, release and digest above.
A live response can legitimately differ from the October 2026 capture;
do not assume that its verification verdict will be verified.
This verifies source digest binding and that two recorded text copies agree, not the scientific correctness of every parsed claim. ClinVar's germline classification does not establish somatic actionability, and a model-wide AlphaFold confidence summary does not establish confidence at a specific residue.
Run without installing (recommended):
Or install into an environment:
Note: There is an unrelated package named
uniprot-mcpon PyPI (different author, 5 tools, MIT). This package isuniprot-mcp-server. Runningpip install uniprot-mcpwill install the wrong package silently.
If you are a biomedical researcher visiting this repo, the highest-signal places to look are:
Issues / corrections welcome at https://github.com/smaniches/uniprot-mcp/issues. Tool results are source-attributed; UniProt annotations and predicted structural confidence retain their upstream evidence type. No separate clinical disease index is maintained.
The provenance + verify chain is, in my 2026-04-26 survey, absent
from every other bio-MCP I could find. A regulated user can take any
prior uniprot-mcp answer and prove — without contacting the author
— that UniProt still returns the same bytes, or detect exactly how the
upstream has drifted. If you find a counter-example I missed, please
file an issue and I will update the comparison.
Eight endpoint families. All read-only (readOnlyHint: true). All
but uniprot_replay_from_cache interact with at least one upstream
service (openWorldHint: true). No UniProt API key required.
Gateway-only — no calls leave the UniProt origin. These extract the relevant cross-references from a UniProt entry and return structured records (typed lists / objects, not passthrough strings).
Pure-Python compositions over the entry — no extra origin. The first
four answer per-residue and per-variant questions; the last three are
the v1.1.0 expansion targeting drug discovery, therapeutic-protein
engineering, and pathogen-secretion analysis: each is a filter over the
entry's features array, with a structured grouping by feature type
and an honest empty-set advisory.
The only tools that consult origins outside rest.uniprot.org. Each is documented in PRIVACY.md and in the threat model.
The verifiable source receipt above comes from the stored October 2026
TP53 capture, not from an illustrative or reconstructed transcript.
The uniprot_provenance_verify tool compares a recorded UniProt
release and canonical SHA-256 with a newly retrieved response. It can
report a match or a drift state, depending on current upstream bytes.
A successful comparison is not independent clinical validation.
Do not claim a future verification result in advance. For exact historical replay, retain the original response bytes or retrieve the appropriate UniProt source snapshot.
If UniProt has moved on, the tool tells you exactly how:
For strict reproducibility, opt into release pinning:
For offline replay, uniprot_replay_from_cache(url) reads a
previously-recorded response from a directory pointed at by
UNIPROT_MCP_CACHE_DIR:
Status note (v1.1.3).
uniprot_replay_from_cacheis a read primitive. The cache must currently be populated by an external process — for example, by the maintainer-provided benchmark capture script, or by you wrappinghttpxcalls and writing to the directory yourself in the documented JSON shape (seesrc/uniprot_mcp/cache.py). Automatic cache write-through is not currently wired into the request path; cache entries must be populated explicitly or by an external capture workflow.
The October 2026 TP53 example preserves actual upstream response bytes and verifies them offline. The older April 2026 benchmark transcript was withdrawn as provenance evidence because its source bytes were not preserved; do not use its former verdicts as scientific or cryptographic proof.
tests/benchmark/ ships a 30-prompt evaluation (Tier A / B / C × 10)
with SHA-256-committed expected answers on main. The plaintext
expected.jsonl is held local-only until a benchmark run is
published; the cryptographic commitments mean the author cannot
rewrite "correct" answers post-hoc.
Third-party reproducibility path (no seal file required). Re-derive every Tier A / B answer live from UniProt and print it — no expected.jsonl required. This confirms the answers are independently reproducible from the primary source today; it does not recompute the seal (the committed SHA-256 binds a withheld rationale — see below):
Maintainer cryptographic verification path (with the local plaintext seal). The committed digests in expected.hashes.jsonl are sealed over {prompt_id, answer, rationale}; the rationale is deliberately withheld as part of the sealed pre-registration, so the full cryptographic check requires the local expected.jsonl:
See tests/benchmark/AUDIT.md for the
per-prompt source attribution and the formal independence statement
(uniprot-mcp was not used during answer authoring).
Why three different names? This is the standard Python packaging pattern, exactly because PyPI's namespace is global and collisions force disambiguation:
Cross-checks that prove the wheel you installed was built from this repo: each release ships a Sigstore signature, SLSA build provenance, and a CycloneDX SBOM, all attached to the v1.1.0 GitHub Release. Run
bash scripts/replicate.sh(POSIX) orpwsh scripts/replicate.ps1(Windows) to verify the full chain end-to-end. Common precedents for the same one-thing-three-names pattern:pillow/PIL,python-dateutil/dateutil,beautifulsoup4/bs4,python-Levenshtein/Levenshtein.
From source:
claude_desktop_config.json:
For pinned, reproducibility-grade access:
To enable uniprot_replay_from_cache reads against a cache directory
you have populated yourself (automatic write-through is not wired into
the request path — see §Provenance & verification):
1. Clinical-variant interpretation packet for TP53 R175H.
2. Drug-target dossier in one call.
3. Sequence chemistry for buffer choice / expression-system selection.
4. Provenance drift check using the recorded TP53 capture.
The verdict is determined by the live upstream response; no match is pre-asserted.
5. Replay a previously-cached answer offline (read primitive — see status note below).
Offline and optional live integration suites are enforced in CI on main (real counts via pytest --collect-only --ignore=tests/integration and pytest --collect-only tests/integration; the offline count includes the v1.1.x mutation-killer files for cache, proteinchem, client, the contract tests for version-consistency / changelog-presence, and the coverage-gap test files that restored full coverage). Line + branch coverage is 100.00 % across all seven source files, with the [tool.coverage.report] gate set to fail_under = 100 so CI enforces it. Two branches carry a justified # pragma: no cover for genuinely-unreachable import-time fallbacks (documented inline and in pyproject.toml). Reproduce locally with pytest tests/unit tests/property tests/client tests/contract --cov=uniprot_mcp --cov-branch --cov-report=term-missing. Mypy (strict), ruff (check + format), bandit (0 issues at any severity), pip-audit (--strict, no known vulnerabilities) all clean. Mutation testing infrastructure ships and is measurement-first: see the per-module table at docs/MUTATION_SCORES.md for the latest matrix-workflow results; the ≥ 95 % gate is the v1.2.0 target, not the current state.
docs/THREAT_MODEL.md — twelve STRIDE-shaped
threats, each receipt-anchored to a code path or commit SHA, plus
the cross-origin allowlist policy (§T3b).docs/INCIDENT_POLICY.md +
docs/POSTMORTEM_TEMPLATE.md +
docs/INCIDENT_LOG.md — every nightly
integration breakage triggers a postmortem entry.AUDIT.md — pre-1.0.1 professional audit, P0/P1
remediations recorded.docs/RELEASE.md — release runbook covering the
tag → PyPI → MCP Registry → Sigstore → GitHub Release → Zenodo chain,
including the release-verify.yml post-tag verification job and the
one-time setup for the Zenodo + PyPI webhooks.docs/archive/ — pre-flip planning docs retained
for audit trail (PENDING_V1.md, MERGE_PLAN.md,
RELEASE_AUDIT_v1.1.3.md). Not part of the published docs site;
current operational status lives in README.md, CHANGELOG.md,
and docs/MUTATION_SCORES.md.mkdocs.yml — Material-themed docs site, deployable to
gh-pages via .github/workflows/docs.yml.
Build locally with pip install -e ".[docs]" && mkdocs serve.alphafold-sovereign-mcp — Model Context Protocol server that integrates AlphaFold DB with eight additional public biomedical data sources, with a local SQLite knowledge graph (pip install alphafold-sovereign-mcp).semantic-scholar-mcp — Model Context Protocol server for Semantic Scholar (200M+ academic papers), providing 14 tools for paper search, citation graph traversal, author profiles, and recommendations (pip install s2-mcp-server).Cite via CITATION.cff (GitHub renders a "Cite this
repository" button). Always also cite the UniProt Consortium:
The UniProt Consortium. UniProt: the Universal Protein Knowledgebase in 2025. Nucleic Acids Research (2025). doi:10.1093/nar/gkae1010
Apache-2.0 — see LICENSE and NOTICE.
This is a standalone, Apache-2.0-licensed UniProt MCP maintained by TOPOLOGICA LLC. It does not require a companion product. Its source provenance and replay features should not be mistaken for a tamper-evident audit ledger or independent scientific validation. Integrations that require persistent, trusted audit records must implement and assess that functionality separately.
Copyright © 2026 Santiago Maniches. TOPOLOGICA LLC.
来源:README.md,提交 c4ce8e9
Fetch a UniProt protein entry by accession (e.g. P04637 for p53, P38398 for BRCA1). Returns function, gene, organism, disease associations, cross-references.
accession必填response_formatThe general-purpose entry point for finding UniProtKB proteins by any combination of gene, organism, keyword, or free text. Use this first when you don't already have an accession; use ``uniprot_get_entry`` once you do. Examples: '(gene:TP53) AND (organism_id:9606)', 'kinase AND reviewed:true'. ``reviewed_only`` and ``organism`` are convenience shortcuts equivalent to adding the corresponding clause to ``query`` yourself.
sizequery必填organismreviewed_onlyresponse_formatFetch the canonical protein sequence in FASTA format. Use this when you need the raw residue string itself (e.g. for local sequence analysis); for pre-computed chemistry derived from this same sequence (molecular weight, pI, hydrophobicity) call ``uniprot_compute_properties`` instead, which fetches the FASTA internally so you don't have to parse it yourself. Always returns markdown/plain-text FASTA — there is no ``response_format`` parameter because FASTA is already the interchange format.
accession必填Return the full, unfiltered feature array for an entry: domains, binding sites, PTMs, signal peptides, and every other annotated region, optionally narrowed by ``feature_types``. For a residue-specific view ('what's at position 175?') use ``uniprot_features_at_position`` instead; for the curated subsets (active/binding sites, processing, PTMs alone) the dedicated ``uniprot_get_active_sites`` / ``uniprot_get_processing_features`` / ``uniprot_get_ptms`` tools apply the same filter server-side.
accession必填feature_typesresponse_formatGet GO annotations grouped by aspect.
aspectaccession必填response_formatList every external-database cross-reference UniProt has curated for an entry (PDB, Pfam, Ensembl, Reactome, KEGG, STRING, and dozens more), optionally narrowed to one ``database``. For the common single-database cases there are dedicated, richer tools that resolve structured details beyond a bare ID: ``uniprot_resolve_pdb`` (structures with method/resolution), ``uniprot_resolve_alphafold``, ``uniprot_resolve_interpro``, and ``uniprot_resolve_chembl``. Use this tool for any other database or to see the full cross-reference set at once.
databaseaccession必填response_formatList every literature-described natural variant UniProt has curated for an entry, including disease-associated mutations. Use this to see the full variant catalogue for a protein; to check one specific HGVS-shorthand change (e.g. 'R175H') use ``uniprot_lookup_variant`` instead, which does the position/residue matching for you. UniProt's natural-variant annotations only cover literature-described variants — for population-scale clinical significance data use ``uniprot_resolve_clinvar``.
accession必填response_formatMap identifiers between UniProt and external databases (or between two external databases) via UniProt's ID mapping service. Submits an async job and polls it to completion server-side, so the call may take a few seconds for large batches.
ids必填to_db必填from_db必填response_formatFetch multiple entries in a single call. Use this instead of repeated ``uniprot_get_entry`` calls when you already have a list of accessions — one network round-trip instead of N, with invalid accessions reported rather than aborting the batch.
accessions必填response_formatResolve an organism name to its NCBI taxonomy ID(s) — the numeric ID other UniProt tools expect (e.g. the ``organism`` parameter of ``uniprot_search``, or ``organism_id:`` in a query string). Returns each match's taxonomy ID, scientific name, common name, and rank (species / genus / etc.); a name can resolve to multiple IDs when it's ambiguous (e.g. a genus with several species), so inspect the rank and full scientific name before picking one. Use this before filtering any other search by organism if you only know the name, not the numeric ID.
sizequery必填response_formatFetch a UniProt keyword by ID (e.g. KW-0007 for Acetylation, KW-0539 for Nucleus). Returns name, definition, category, synonyms, GO cross-refs, and parent/child hierarchy.
keyword_id必填response_formatSearch UniProt's controlled keyword vocabulary (the ``KW-####`` terms) by name or definition. Use this to discover a keyword ID from a concept; once you have the ``KW-####`` ID, call ``uniprot_get_keyword`` for its full record (definition, category, hierarchy, GO cross-references). Returns up to ``size`` matches, or an empty list if nothing matches. Examples: 'acetylation', 'nucleus', 'kinase activity'.
sizequery必填response_formatFetch a UniProt subcellular-location term by ID (e.g. SL-0039 Cell membrane, SL-0086 Cytoplasm, SL-0191 Nucleus). Returns name, definition, category, GO cross-refs, and the is-a / part-of hierarchy.
location_id必填response_formatSearch UniProt's controlled subcellular-location vocabulary (the ``SL-####`` terms) by name or definition. Use this to discover a location ID from a concept; once you have the ``SL-####`` ID, call ``uniprot_get_subcellular_location`` for its full record (definition, category, hierarchy, GO cross-references). Returns up to ``size`` matches, or an empty list if nothing matches. Examples: 'membrane', 'mitochondrion', 'cytoplasm'.
sizequery必填response_formatFetch a UniRef cluster by ID. Examples: UniRef100_P04637 (100 % identity, only exact-match members), UniRef90_P04637 (90 % identity), UniRef50_P04637 (50 %, broadest grouping). Returns representative member, member list, common taxon, last-updated date.
uniref_id必填response_formatSearch for UniRef clusters by content (not by a known cluster ID — for that, use ``uniprot_get_uniref`` directly). Example: query='kinase' identity_tier='90' returns the 90% clusters matching 'kinase'. Use a looser tier (50) to find broad homology groups, a tighter tier (100) to find near-identical sequence sets.
sizequery必填identity_tierresponse_formatGroup every orthology cross-reference in a UniProt entry by source database (KEGG / OMA / OrthoDB / eggNOG / HOGENOM / PhylomeDB / InParanoid / TreeFam / GeneTree / PAN-GO / PANTHER / OrthoInspector). Different databases use different inference methods; surfacing them side-by-side lets the agent reason about consensus when comparing orthologs across species. Pure-Python — no extra HTTP call beyond the entry fetch.
accession必填response_formatOne-call comprehensive characterisation of a UniProt entry, structured for drug-discovery / clinical workflows. Composes nine views over the same entry plus one FASTA fetch (so two upstream network calls, not nine): Identity · Function · Sequence chemistry · Structural evidence (PDB count + best-resolution + AlphaFold model id + InterPro count) · Drug-target context (ChEMBL ids, DrugBank count) · Disease associations (with MIM IDs) · Variants count · Functional annotations (top GO MF, subcellular, ECO diversity) · Cross-references summary For per-residue pLDDT confidence call ``uniprot_get_alphafold_confidence`` separately. For full disease detail call ``uniprot_get_disease_associations``. The dossier is the entry- level summary that decides which deeper tools are worth calling.
accession必填response_formatRead a previously-cached UniProt response without hitting the upstream. The local provenance cache is opt-in via the ``UNIPROT_MCP_CACHE_DIR`` environment variable; when unset, this tool always reports cache-disabled. Useful for: reproducing a year-old answer from a sealed cache snapshot; working offline / behind air-gaps; reducing UniProt's load when running benchmarks twice. Returns the cached body text wrapped in the recorded Provenance. The annotation ``openWorldHint=False`` reflects that this tool consults the local file system only — no upstream call.
url必填response_formatLook up ClinVar records for the gene encoded by a UniProt entry. First fetches the human UniProt entry to extract its gene symbol, then queries NCBI eutils ClinVar by gene (and optional protein-change filter, e.g. ``R175H``). Returns submitted human variant records with their classifications, review status, conditions, molecular consequences, and protein changes where present. ClinVar is a human variation archive. Gene symbols are not species- specific identifiers, so nonhuman or taxonomically unverified entries must not inherit human ClinVar classifications. ClinVar coverage is submission-dependent; a missing record does not establish benignity. Calls https://eutils.ncbi.nlm.nih.gov — declared in PRIVACY.md.
sizechangeaccession必填response_formatFetch model-level AlphaFold DB confidence metadata for an accession. Returns mean pLDDT and the four-band distribution of local model confidence, not individual residue scores. Checks the exact UniProt accession so an isoform's prediction cannot be substituted for the canonical protein. For multiple same-accession models or fragments, JSON output includes additionalModelSummaries with separate ranges. Global pLDDT does not prove experimental accuracy or validate confidence at a particular residue or between domains. Call ``uniprot_resolve_alphafold`` for the UniProt cross-reference. This tool calls https://alphafold.ebi.ac.uk — declared in PRIVACY.md as a third party. Provenance carries source = AlphaFoldDB.
accession必填response_formatList the publications UniProt cites on an entry, with PubMed IDs, DOIs, titles, authors, journal, year, and the 'reference position' annotation (the experimental work each citation supports — e.g. 'CRYSTALLIZATION', 'PHOSPHORYLATION AT SER-15', 'INVOLVEMENT IN LI-FRAUMENI SYNDROME'). Pure composition over the entry's ``references`` block — no extra HTTP call beyond the entry fetch.
accession必填response_formatDerived sequence chemistry for a UniProt entry: molecular weight, theoretical pI, GRAVY hydrophobicity, aromaticity, net charge at pH 7, extinction coefficient at 280 nm, amino-acid composition. Computed from the canonical FASTA via standard methods (Lehninger pK values, Kyte-Doolittle hydropathy, Pace 1995 ε₂₈₀ formula). Pure-Python — no additional external API call beyond the FASTA fetch.
accession必填response_formatList every UniProt feature that overlaps a residue position (1-indexed). Answers the question 'what's at residue 175 of TP53?' by intersecting the entry's features with the given position. Useful for variant-effect interpretation — surfaces every domain, binding site, modification, mutagenesis annotation, and natural variant at a single residue in one call.
position必填accession必填response_formatReturn the active sites, binding sites, metal-binding residues, and DNA-binding regions annotated on a UniProt entry. Filtered view over the entry's feature array — this is the residue-level chemistry of the protein, the input to enzyme drug-design and antibiotic target-validation workflows.
accession必填response_formatReturn the maturation and processing features (signal peptide, propeptide, transit peptide, initiator methionine, chain, peptide). These describe how the translated polypeptide is cleaved and targeted into its mature form — essential for therapeutic-protein engineering and pathogen-secretion-system analysis. A pre-filtered view over ``uniprot_get_features``; for post-translational chemical modifications instead of cleavage/targeting, use ``uniprot_get_ptms``.
accession必填response_formatReturn the post-translational modification features (modified residues, glycosylation sites, lipidation sites, disulfide bonds, cross-links). PTMs are functionally critical: they switch enzymes on, target proteins for degradation, anchor them to membranes, and fold them via disulfides. A pre-filtered view over ``uniprot_get_features``; for cleavage/targeting features instead of chemical modifications, use ``uniprot_get_processing_features``. The empty case carries an honest pointer to mass-spec databases (PhosphoSitePlus, GlyConnect) for additional evidence.
accession必填response_formatLook up an HGVS-shorthand amino-acid change (e.g. ``R175H``, ``V600E``, ``R248*``) in the UniProt entry's natural-variant annotations. Returns the matching variant feature(s) including the UniProt-curated description (often a disease association). A null result here does NOT mean a variant is benign — UniProt only annotates literature-described variants; ClinVar / dbSNP carry population-level data.
change必填accession必填response_formatStructured disease associations for a UniProt entry. Returns the diseases recorded in DISEASE-type comments with name, acronym, UniProt disease ID, OMIM cross-reference, description, and the annotation note. Critical for clinical interpretation — distinguishes a UniProt-curated disease association (literature-anchored) from a raw cross-reference. Empty result does not imply disease-irrelevant; see Open Targets / OMIM / DisGeNET for population-level evidence.
accession必填response_formatFetch a UniParc sequence-archive record by its known UPI. Returns sequence, MD5/CRC64 checksums, cross-reference counts, linked UniProtKB accessions, and the common-taxa list. UniParc is the non-redundant sequence archive — every protein sequence ever submitted to a major public database has exactly one UniParc record, making this the tool to use when a UniProtKB accession doesn't exist for a sequence you have. Don't have a UPI yet? Use ``uniprot_search_uniparc`` to find one first.
upi必填response_formatSearch the UniParc non-redundant sequence archive by taxonomy, source database, or other UniParc query fields — the entry point when you don't already have a UPI. Examples: 'taxonomy_id:9606' for human sequences, 'database:Ensembl' for Ensembl-derived entries. Once you have a UPI from the results, use ``uniprot_get_uniparc`` for the full record.
sizequery必填response_formatFetch a UniProt proteome by UP ID (e.g. UP000005640 = human reference). Returns organism, taxonomy lineage, protein count, gene count, BUSCO completeness score, annotation score, and component breakdown (chromosomes / contigs).
proteome_id必填response_formatSearch UniProt proteomes (whole-organism protein sets) by organism or proteome field. Use this to find a proteome's ``UP#########`` ID; once you have it, call ``uniprot_get_proteome`` for the full record (protein / gene counts, BUSCO completeness, component breakdown). Returns up to ``size`` matches, or an empty list if nothing matches. Examples: 'organism_id:9606' for human, 'proteome_type:1' for reference proteomes only, 'taxonomy_name:bacteria' for all bacterial proteomes.
sizequery必填response_formatFetch a UniProt citation record by ID (typically a PubMed ID, e.g. 9840937). Returns title, authors, journal, year, volume, pages, and cross-references.
citation_id必填response_formatSearch the UniProt citations index (the literature UniProt references) by title, author, or year. Use this to find a citation's ID (typically a PubMed ID); once you have it, call ``uniprot_get_citation`` for the full record. For the publications attached to one specific protein entry, use ``uniprot_get_publications`` instead. Returns up to ``size`` matches, or an empty list if nothing matches. Examples: 'p53 AND author:Vogelstein', 'BRCA1 AND year:[2020 TO 2024]'.
sizequery必填response_formatList every PDB structure cross-referenced from a UniProt entry, with method, resolution, and chain coverage. Faster than parsing the raw cross-references blob — returns a structured list typed for downstream analysis.
accession必填response_formatResolve the AlphaFoldDB cross-reference for a UniProt entry — typically one canonical model per accession. Includes a direct EBI viewer link.
accession必填response_formatList InterPro signatures (domain / family classifications) for a UniProt entry, with names extracted from the entry's cross-reference properties.
accession必填response_formatResolve ChEMBL drug-target cross-references for a UniProt entry. Returns the ChEMBL target IDs with EBI viewer links — empty if the protein has no documented bioactivity data in ChEMBL.
accession必填response_formatSummarise and grade the ECO (Evidence and Conclusion Ontology) codes attached to a UniProt entry's annotations. Counts how many features and comments cite each evidence code, then classifies every occurrence as experimental (wet-lab, ECO:0000269), manual (curator-reviewed inference), or automatic (un-reviewed pipeline call). A project-defined 0-100 index describes the annotation evidence mix, NOT annotation correctness, biological certainty, or a calibrated probability (unlike AlphaFold pLDDT). The legacy JSON key ``evidence_confidence`` includes ``calibrated=False`` and the raw ``evidence_counts`` remain available.
accession必填response_formatRe-fetch a previously recorded UniProt URL and verify it still returns the same release identifier and the same canonical response body (SHA-256). Pass the values from a prior response's provenance footer (`url`, `release`, `response_sha256`, `accept_header`); empty optional fields skip the corresponding check. Only both matches earn `verified`; absent checks return `incomplete_evidence` if nothing drifted. Reachability, mismatch and per-check fields remain available. ``accept_header`` must match the Accept header used for the original request (default ``application/json``; use ``text/plain;format=fasta`` for FASTA-originated provenance). Replaying the wrong header causes a guaranteed hash mismatch because the upstream serves different content depending on content negotiation. Verification applies to individual UniProt REST responses only. It does not independently validate derived biological conclusions, composite dossiers, or cross-origin ClinVar and AlphaFold DB responses. Check the recorded source and digest for each upstream input separately.
url必填releaseaccept_headerresponse_formatresponse_sha256已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
uvx uniprot-mcp-serverSource: UniProt release 2026_03 (02-September-2026)Retrieved: 2026-10-15T10:32:43ZURL: https://rest.uniprot.org/uniprotkb/P04637Canonical SHA-256: 112540dcb662c3ce2feba05272ce0e946ce76089a5bcf8346eb55141892f7fcfpytest -q tests/contract/test_tp53_capture_binding.pyuvx uniprot-mcp-serverpip install uniprot-mcp-serverexport UNIPROT_PIN_RELEASE=2026_01uniprot-mcp# every response is checked against the pinned release;# any drift raises `ReleaseMismatchError`, which the server surfaces# as an agent-actionable error envelope.export UNIPROT_MCP_CACHE_DIR=~/.uniprot-mcp-cacheuniprot-mcp# uniprot_replay_from_cache(url) returns the entry at# $UNIPROT_MCP_CACHE_DIR/<sha256(url)>.json if present.python tests/benchmark/verify_against_hashes.py tests/benchmark/expected.hashes.jsonl# Re-derives all 30 answers live and prints them (informational; exit 0).python tests/benchmark/verify_answers.py tests/benchmark/expected.jsonl# OK: all 30 prompts verified against https://rest.uniprot.org
python tests/benchmark/verify.py tests/benchmark/expected.jsonl tests/benchmark/expected.hashes.jsonl# OK: 30 commitments verifiedpip install uniprot-mcp-server # PyPI distribution# or, for a pinned, isolated install:uvx --from uniprot-mcp-server uniprot-mcpgit clone https://github.com/smaniches/uniprot-mcp.gitcd uniprot-mcppip install -e .{ "mcpServers": { "uniprot": { "command": "uvx", "args": ["uniprot-mcp-server"] } }}{ "mcpServers": { "uniprot": { "command": "uniprot-mcp", "args": ["--pin-release=2026_01"] } }}{ "mcpServers": { "uniprot": { "command": "uniprot-mcp", "env": { "UNIPROT_MCP_CACHE_DIR": "/absolute/path/to/cache" } } }}claude mcp add uniprot -- uniprot-mcpuniprot-mcp --self-test# [tools] registered: 41/41# [live] P04637 -> TP53 OK# [PASS]> What's at residue 175 of P04637? Is R175H a known variant? Pull> the UniProt and ClinVar evidence and tell me how confident the> AlphaFold model is at that residue.→ uniprot_features_at_position("P04637", 175)→ uniprot_lookup_variant("P04637", "R175H")→ uniprot_resolve_clinvar("P04637", change="R175H")→ uniprot_get_alphafold_confidence("P04637")> Give me a complete drug-target characterisation of human BRCA1.→ uniprot_target_dossier("P38398") # nine sections, two upstream calls (entry + FASTA), one tool call.> What's the molecular weight, pI, and hydrophobicity of human insulin?→ uniprot_compute_properties("P01308") # MW 11,981 Da, pI 4.93, ε₂₈₀ 24,980 M⁻¹·cm⁻¹ — pure Python on the FASTA.> Check the 2026-10-15 UniProt P04637 response for drift.> Supply the captured release, URL, and canonical SHA-256:uniprot_provenance_verify( url="https://rest.uniprot.org/uniprotkb/P04637", release="2026_03", response_sha256="112540dcb662c3ce2feba05272ce0e946ce76089a5bcf8346eb55141892f7fcf")# Pre-condition: $UNIPROT_MCP_CACHE_DIR/<sha256(url)>.json already exists,# populated by the maintainer benchmark capture script or an external# wrapper. Automatic cache write-through is not currently wired into the# request path; cache entries must be populated explicitly or by an# external capture workflow.export UNIPROT_MCP_CACHE_DIR=~/sealed-cache> uniprot_replay_from_cache("https://rest.uniprot.org/uniprotkb/P04637")# Fast, offline (CI on every push):pytest tests/unit tests/property tests/client tests/contract -v
# Live UniProt (opt-in, nightly in CI):pytest --integration tests/integration -v
# Lint / type-check / security / SCA:ruff check . && ruff format --check . && mypy src/uniprot_mcpbandit -r src/uniprot_mcp && pip-audit --strict