Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cyanheads/uniprot-mcp-server

REMOTE · UNIPROT.CASEYJHAND.COM · 2 COMPONENTS

Protein research over UniProtKB: search by function, fetch curated records, map IDs, proteomes.

0 this week 89 Trust /100

Last scanned (21 hours ago)

Scores higher than 97% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Health and Science

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security83
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3085 tokens (~440/item across 7 items; 6 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
What we tested

Checks we ran (13)

  • TLS certificate
  • Authorization
  • HTTPS
  • HSTS header
  • DNSSEC
  • Transport
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 0
    • Tool “uniprot_get_taxonomy” rewrote its description, which is the text the model reads security
    • New resource “uniprot-guide” functional
    • Server version: 0.3.0 → 0.4.0 functional
    • “uniprot_search_proteins” reworded the description of “organism_id” cosmetic
    • “uniprot_search_proteins” reworded the description of “reviewed” cosmetic
    • “uniprot_search_proteins” reworded the description of “text_search” cosmetic
    • “uniprot_get_proteome” reworded the description of “taxon_id” cosmetic
    • “uniprot_map_ids” reworded the description of “from_db” cosmetic
    • “uniprot_get_taxonomy” reworded the description of “name” cosmetic
    • “uniprot_map_ids” reworded the description of “tax_id” cosmetic
  • 22 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “uniprot_get_entry” rewrote its description, which is the text the model reads security
    • Server version: 0.2.6 → 0.3.0 functional
    • “uniprot_search_proteins” reworded the description of “cursor” cosmetic
    • “uniprot_get_proteome” reworded the description of “cursor” cosmetic
  • 13 Oct 26 0
    • Tool “uniprot_get_entry” rewrote its description, which is the text the model reads security
    • Tool “uniprot_get_sequence” rewrote its description, which is the text the model reads security
    • Tool “uniprot_get_taxonomy” rewrote its description, which is the text the model reads security
    • Tool “uniprot_map_ids” rewrote its description, which is the text the model reads security
    • Tool “uniprot_search_proteins” rewrote its description, which is the text the model reads security
    • Schema quality: 385 → 460 ▼ functional
    • Server version: 0.2.5 → 0.2.6 functional
    • “uniprot_get_entry” added an optional parameter “section_limit” cosmetic
    • “uniprot_get_entry” added an optional parameter “section_offset” cosmetic
    • “uniprot_get_taxonomy” added an optional parameter “cursor” cosmetic
    • “uniprot_get_entry” reworded the description of “sections” cosmetic
    • “uniprot_get_taxonomy” reworded the description of “include_children” cosmetic
    • “uniprot_map_ids” reworded the description of “to_db” cosmetic
    • “uniprot_search_proteins” reworded the description of “organism_id” cosmetic
    • “uniprot_search_proteins” reworded the description of “reviewed” cosmetic
  • 10 Oct 26 0
    • Server version: 0.2.4 → 0.2.5 functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 21 Sept 26 0
    • Stability: 0.97 → pass security
  • 20 Sept 26 0
    • Server version: 0.2.3 → 0.2.4 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://uniprot.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 2 Nov 2026 31 Jan 2027 ECDSA 256 ECDSA-SHA256 995a30681ab772540e934241ca1d576c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of uniprot.caseyjhand.com. — Secure

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
com. DS published 19718 13 Verified
caseyjhand.com. DS published 2371 13 Verified
uniprot.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://uniprot.caseyjhand.com/mcp Verified 200
http (plaintext) http://uniprot.caseyjhand.com/mcp HTTPS enforced 301 https://uniprot.caseyjhand.com/mcp
MCP tools · 6 exposed · ~2,782 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
uniprot_get_entry ~579

Fetch full curated UniProtKB entries by accession in one batch (up to 20). Each entry carries function, catalytic activity, cofactors, subcellular location, disease involvement, PTMs, natural variants, isoforms, domains, GO terms, keywords, and cross-references. Partial failures do not abort the batch — resolved entries land in succeeded[] and unknown or inactive (merged, demerged, deleted) accessions in failed[], where an inactive accession names its replacement or UniParc ID. Pass fields to trim the upstream projection. Initial responses exceeding 24,000 UTF-8 bytes across both output surfaces return kind: "outline": a single resolved record lists sections with byte sizes; a batch lists outlinedEntries in request order and retains failed[]. Re-call each outlined accession individually, e.g. accessions:["P04637"], for its full record or section outline, then add sections:["disease","variants"] to select sections. sections takes exactly one accession; trim a batch with fields instead. All returned list items and cross-reference IDs render in full. A large list section pages with section_limit/section_offset on a re-call naming that one section. This tool does not search: accessions come from uniprot_search_proteins.results[].accession or uniprot_map_ids. Strip any isoform suffix (P04637-2 to P04637) before calling.

NameTypeReqDescription
accessionsarrayyesAccessions to fetch (1–20). From uniprot_search_proteins or uniprot_map_ids.
fieldsstring–Comma-separated UniProtKB field names to project, e.g. "accession,gene_names,cc_function,ft_variant". Omit for the full curated default set. Use this on the initial call to trim payload.
section_limitinteger–Window size for one list section on a sections re-call: return at most this many items of it (1–500). Requires sections naming exactly one list section, e.g. ["variants"] (or ptms, domains, goTerms).…
section_offsetinteger–Zero-based index of the first item in the windowed section. Defaults to 0. Pass the previous response's nextOffset to page forward. Same requirements as section_limit; set without section_limit, retu…
sectionsarray–Only used to re-call one accession after a kind: "outline" response — pass a subset of the outlined section keys to fetch just those sections. Requires exactly one accession: a batch with sections is…
NameTypeReqDescription
absentSectionsarray–Requested section keys this record does not carry — UniProt holds no annotation of that kind for it, or fields excluded it. Not an error: the other requested sections are returned. Present only on a…
capnumber–The section_limit applied. Present when truncated.
errorobject–Present when the call failed. Absent on success.
failedarray–Accessions that did not resolve to an active entry — unknown to UniProtKB, or inactive (merged, demerged, or deleted). Retained on batch outlines as well as full results.
kindstring–Result kind. "full": read succeeded[] and failed[]. "outline": the complete inline result exceeded 24,000 UTF-8 bytes; read outlinedEntries for a batch or sections for a single record, and re-call on…
nextOffsetnumber–section_offset for the next window (same section_limit). Present while items remain.
noticestring–Re-call guidance. On a single-record outline: re-call that accession with sections:[...] to pull specific sections. On a batch outline: re-call each outlined accession individually with accessions:[a…
outlinedEntriesarray–Successful entries omitted when the aggregate inline result exceeds 24,000 UTF-8 bytes, in request order. Re-call each accession individually for its full record or section outline.
sectionsarray–Section outline for a single fully resolved accession whose inline result exceeds the budget. Absent on batch outlines, which return outlinedEntries instead.
shownnumber–Items in the returned window. Present when truncated.
succeededarray–Entries that resolved successfully. Present when kind is "full".
totalCountnumber–Items in the windowed section before section_limit/section_offset applied. Present on every windowed call; 0 when the record lacks the section.
truncatedboolean–True when items remain past the returned window. Absent on the final window.
windowobject–The window applied to succeeded[0]'s one requested section. Present only when section_limit or section_offset was set; totalCount and nextOffset place it in the full section.

No examples provided.

uniprot_get_proteome ~406

Fetch the reference proteome for an organism by UPID (e.g. "UP000005640") or NCBI taxon ID (e.g. 9606) — provide exactly one. Returns metadata inline: proteome type, total protein count, BUSCO completeness (score, complete/fragmented/missing counts, lineage dataset), and the genome assembly accession. The protein set is opt-in via include_proteins (it is large — human is ~147,506) and returns a capped page with a forward cursor; narrow it with the query filter (UniProtKB Lucene syntax) for a subset. Resolve an organism name to a taxon ID first with uniprot_get_taxonomy.

NameTypeReqDescription
cursorstring–Opaque cursor from this tool for the same resolved UPID and exact query. Identifier aliases resolving to that UPID and size changes are allowed. Older raw cursors are rejected; restart without cursor…
include_proteinsboolean–When true, also return a capped, cursor-paginated page of the proteome's proteins. Defaults to false — metadata alone is the common case.
querystring–Optional UniProtKB Lucene filter to narrow the protein list, e.g. "reviewed:true AND keyword:KW-0067". Only applies when include_proteins is true.
sizeinteger–Proteins per page when include_proteins is true (max 500). Omit for the server default.
taxon_idinteger–NCBI taxon ID, e.g. 9606 for human. Prefers an exact reference proteome; otherwise resolves a unique descendant reference, or returns candidate UPIDs and taxon IDs for explicit selection. Provide thi…
upid––Proteome UPID. Provide this OR taxon_id, not both.
NameTypeReqDescription
capnumber–The page-size cap that was applied.
cursorstring–Forward cursor for the next protein page. Absent on the last page.
errorobject–Present when the call failed. Absent on success.
noticestring–Truncation guidance when the protein page was capped — how to reach the rest (walk the cursor or narrow with the query filter).
proteinsarray–A capped page of the proteome's proteins. Present only when include_proteins is true.
proteomeobject–Proteome metadata.
querystring–The protein filter as supplied by the caller.
shownnumber–Number of proteins returned in this page.
totalProteinsMatchednumber–Total proteins matching the (optionally filtered) proteome query.
truncatedboolean–True when the protein page hit the size cap — more remain via cursor.

No examples provided.

uniprot_get_sequence ~212

Fetch the canonical amino-acid sequence (FASTA) for a UniProtKB accession, with length and the parsed header. Set include_isoforms to also return the alternatively-spliced isoform sequences. This is the cheap sequence-only path — for the full functional record use uniprot_get_entry. A merged accession returns the sequences of its merge target, labelled with the target accession and the requested one in mergedFrom; a demerged or deleted accession fails not_found naming its replacements or UniParc ID. Accessions come from uniprot_search_proteins or uniprot_map_ids; strip any "-N" isoform suffix (P04637-2 to P04637) before calling.

NameTypeReqDescription
accessionstringyesUniProtKB primary accession, e.g. "P04637". Canonical form only — strip any "-N" isoform suffix.
include_isoformsboolean–When true, also return the isoform sequences. Defaults to false (canonical only).
NameTypeReqDescription
accessionstring–The accession whose sequences are returned — the requested one, or its merge target when mergedFrom is present.
canonicalobject–The canonical sequence record.
errorobject–Present when the call failed. Absent on success.
isoformsarray–Isoform sequence records. Present only when include_isoforms is true and isoforms exist.
mergedFromstring–The requested accession, present only when UniProt merged it into accession; every record here is the merge target. Omitted for an active accession.

No examples provided.

uniprot_get_taxonomy ~339

Resolve a taxonomy record by NCBI taxon ID (e.g. 9606) or organism name (e.g. "Homo sapiens" or "human") — provide exactly one. Exact case-insensitive scientific names take priority, then common names, mnemonic and aliases; stray double quotes and backslashes are tolerated after exact matching. Ties and partial matches return candidate taxon IDs instead of guessing. Returns the scientific and common name, mnemonic, rank, parent, and full lineage. Set include_children for immediate child taxa in pages of 100; pass the returned cursor for the next page. Use the resolved taxon ID with uniprot_search_proteins (organism_id) or uniprot_get_proteome (taxon_id).

NameTypeReqDescription
cursorstring–Forward-pagination cursor from a prior children page, for the next page of the same taxon; a cursor issued for another taxon is rejected. Only meaningful with include_children.
include_childrenboolean–When true, also fetch a page of up to 100 immediate child taxa via a follow-up search. Defaults to false.
namestring–Organism name, e.g. "Homo sapiens" or "human". Exact case-insensitive scientific names take priority, then common names, mnemonic and aliases. Stray double quotes and backslashes are tolerated only a…
taxon_idinteger–NCBI taxonomy ID, e.g. 9606. Provide this OR name, not both.
NameTypeReqDescription
capnumber–The page size that was applied, when more remain.
childCountnumber–Number of immediate children on this page (when include_children is true).
childrenarray–One page of immediate children (up to 100). Present only when include_children is true.
cursorstring–Forward cursor for the next children page. Absent on the last page.
errorobject–Present when the call failed. Absent on success.
lineagearray–Full lineage from root to the taxon's near ancestor.
noticestring–Paging guidance when more children remain — the total and how to continue.
shownnumber–Number of children on this page, when more remain.
taxonobject–The taxonomy record.
totalChildrennumber–Total immediate children of the taxon across all pages (when include_children is true).
truncatedboolean–True when more children remain past this page — fetch them with cursor.

No examples provided.

uniprot_map_ids ~551

Translate identifiers across databases via UniProt's ID-mapping service — gene names to accessions, accession to PDB / Ensembl / RefSeq / ChEMBL / GeneID, and back. The job runs asynchronously; this tool submits it and polls within a budget. A running job returns status "running" with a ticket; pass that ticket alone to poll the same job. A completed call returns status "finished" with one results page; when continuation is present, pass it alone to fetch the next completed page without re-submitting or polling the job. A gene name often maps to one reviewed Swiss-Prot accession plus dozens of unreviewed TrEMBL ones, so target UniProtKB-Swiss-Prot (reviewed only) for the usual intent, or UniProtKB to include TrEMBL. Pair a gene-symbol from_db with tax_id to disambiguate species. A row whose UniProtKB target is inactive (merged, demerged, or deleted) carries an inactive marker naming its replacements. Chain the resulting active accessions into uniprot_get_entry.

NameTypeReqDescription
continuationobject–Completed-page continuation from a prior status "finished" response. Pass it alone to fetch the next page without polling or re-submitting.
from_dbstring–Source database. Gene_Name = gene symbol (e.g. TP53; pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_…
idsarray–Identifiers to translate. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.
tax_idinteger–Exact NCBI taxon node for submission, e.g. 9606 for human. Unlike protein search taxonomy filters, this excludes descendant strains and subspecies. Resolve the strain taxon with uniprot_get_taxonomy…
ticketstring–Running-job ticket from a prior status "running" response. Pass it alone to poll that job; do not combine it with continuation or submission inputs.
to_dbstring–Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB also includes unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming…
NameTypeReqDescription
continuationobject–Next completed-page continuation (finished jobs only). Pass it alone to fetch the next page; absent on the terminal page.
errorobject–Present when the call failed. Absent on success.
mappedCountnumber–Number of resolved mappings on this page (finished jobs only).
noticestring–Status guidance — e.g. that the job is still running, that no IDs mapped, that target identity is unavailable, or that inactive targets could not be marked on this page.
resultsarray–Resolved mappings on this completed page (present only when status is "finished"). Failed source IDs are reported in unmappedIds.
statusstring–Job state: "finished" (one completed results page included) or "running" (poll with ticket).
ticketstring–Running-job ticket (present only when status is "running"). Pass it alone to poll the same job.
totalMappingsnumber–Job-wide total mappings reported by UniProt; absent when unavailable.
unmappedIdsarray–Job-wide source IDs UniProt reported as failed, repeated on every completed page. Absent when none failed.

No examples provided.

uniprot_search_proteins ~695

Search UniProtKB and return curated protein records. Pass text_search for a plain-language query (the 80% case) or query for the full Lucene field syntax (gene:TP53 AND organism_id:9606 AND reviewed:true) — exactly one is required. Reviewed (Swiss-Prot) entries are manually curated; unreviewed (TrEMBL) are computationally predicted and ~30x more numerous, so reviewed defaults to true to avoid drowning in predictions — set it false to search both tiers together (for TrEMBL only, put reviewed:false in query). The organism_id and reviewed filters apply to the whole query. Request facets (e.g. reviewed, model_organism) for server-side count breakdowns. Results page forward with an opaque cursor; UniProtKB has no offset paging. An inactive accession the query matches (merged, demerged, or deleted) comes back in inactive[] with the accessions that replace it, never as a result. This is the discovery entry point — chain results[].accession into uniprot_get_entry for full records, or uniprot_get_sequence for FASTA.

NameTypeReqDescription
cursorstring–Opaque forward cursor from this tool for the same exact effective query and filters. Size, fields, and facets may change. Older raw cursors are rejected; restart without cursor. Random access to page…
facetsstring–Comma-separated upstream facet names for count breakdowns, e.g. "reviewed,model_organism,proteins_with". Returns a facets array alongside the hits.
fieldsstring–Comma-separated UniProtKB field names to project, e.g. "accession,gene_names,cc_function". Omit for a sensible default set covering name, gene, organism, length, reviewed, score, and a function snipp…
organism_idinteger–Restrict to an NCBI taxon and its descendants, including strains and subspecies, e.g. 9606 for human or 562 for E. coli. Applies taxonomy_id to the whole query; use an explicit organism_id: clause in…
querystring–UniProtKB Lucene query with field prefixes — gene, organism_id, keyword (KW-xxxx), go (GO id), reviewed, protein_name, family, length, existence, accession. Example: "gene:BRCA1 AND organism_id:9606…
reviewedboolean–Restrict to reviewed Swiss-Prot entries. Defaults to true (curated only). false applies no tier filter, returning reviewed and unreviewed TrEMBL entries together; for TrEMBL only, put reviewed:false…
sizeinteger–Number of hits per page (max 500). Omit for the server default.
text_searchstring–Plain-language search across protein names, gene names, and function, e.g. "kinase apoptosis". Punctuation and uppercase AND/OR/NOT are searched as text, with UniProt tokenization; use query for oper…
NameTypeReqDescription
cursorstring–Forward cursor for the next page. Absent on the last page.
effectiveQuerystring–The query as the server assembled and sent it to UniProtKB.
errorobject–Present when the call failed. Absent on success.
facetsarray–Upstream facet count breakdowns. Present only when facets were requested.
inactivearray–Matching accessions that are inactive in UniProtKB (merged, demerged, or deleted) — not proteins to read, but pointers to the accessions that replace them. Present only when the page held any.
noticestring–Guidance when nothing matched, distinguishing plain text from a structured query and suggesting how to broaden.
resultsarray–Matching active protein hits for this page. Inactive accessions are in inactive.
totalResultsnumber–Total matches for the query before pagination (from the upstream result count), inactive accessions included.

No examples provided.

Install

How do I install the io.github.cyanheads/uniprot-mcp-server server?

io.github.cyanheads/uniprot-mcp-server is a hosted endpoint at https://uniprot.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · uniprot.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-uniprot-mcp-server 'https://uniprot.caseyjhand.com/mcp'
Common questions

What is the io.github.cyanheads/uniprot-mcp-server server?

io.github.cyanheads/uniprot-mcp-server is listed in the public MCP registry as io.github.cyanheads/uniprot-mcp-server. Protein research over UniProtKB: search by function, fetch curated records, map IDs, proteomes. This page covers its hosted endpoint (https://uniprot.caseyjhand.com/mcp).

Is the io.github.cyanheads/uniprot-mcp-server server safe to use?

io.github.cyanheads/uniprot-mcp-server scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cyanheads/uniprot-mcp-server server expose?

io.github.cyanheads/uniprot-mcp-server exposes 6 tools: uniprot_search_proteins, uniprot_get_entry, uniprot_map_ids, uniprot_get_proteome, uniprot_get_taxonomy, uniprot_get_sequence. Their descriptions and schemas cost roughly 2,782 tokens of context every time the server is loaded.

Does the io.github.cyanheads/uniprot-mcp-server server require authentication?

No. We connected to io.github.cyanheads/uniprot-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.cyanheads/uniprot-mcp-server server still maintained?

io.github.cyanheads/uniprot-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What did VerifyMCP test on the io.github.cyanheads/uniprot-mcp-server server?

VerifyMCP ran 13 checks on io.github.cyanheads/uniprot-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.