Skip to main content
Glama

Server Details

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

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
cyanheads/uniprot-mcp-server
GitHub Stars
1
Server Listing
@cyanheads/uniprot-mcp-server

Available Tools

6 tools
uniprot_get_entryuniprot-mcp-server: get entryA
Read-onlyIdempotent
Inspect

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/withdrawn accessions in failed[]. Pass fields to trim the upstream projection. A single oversized record returns kind: "outline" (a section listing with byte sizes) instead of overflowing context — re-call the same accession with sections:[...] (e.g. ["disease","variants"]) to pull only those. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-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.
sectionsNoOnly used to re-call after a kind: "outline" response — pass a subset of the outlined section keys to fetch just those sections. Do not pass on the initial call.
accessionsYesAccessions to fetch (1–20). From uniprot_search_proteins or uniprot_map_ids.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindNoResult kind. "full": the batch resolved — read succeeded[] and failed[]. "outline": a single record exceeded the context budget and is returned as a section listing — re-call the same accession with sections:[...] to pull specific sections.
errorNoPresent when the call failed. Absent on success.
failedNoAccessions that were well-formed but not found in UniProtKB. Present when kind is "full".
noticeNoRe-call guidance when kind is "outline" — re-call the same accession with sections:[...] to pull specific sections.
sectionsNoSection outline returned when a single record exceeds the context budget. Present when kind is "outline".
succeededNoEntries that resolved successfully. Present when kind is "full".

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description adds key behavioral details: partial failures populate succeeded[] and failed[], oversized records trigger an 'outline' response with byte sizes, and isoform suffixes must be stripped before calling. This is substantial non-obvious behavior an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than the typical two-sentence ideal, but every sentence carries substantive information: batch behavior, entry contents, trimming, outline handling, and source requirement. It is front-loaded with the core purpose and uses structured clauses without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and annotations, the description sufficiently covers the remaining workflow: batch size, partial failure results, oversized record handling, section re-calls, accession sources, and preprocessing requirements. It is complete enough for reliable tool invocation and adaptation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all parameters at 100% coverage. The description adds valuable usage semantics beyond schema: 'fields' is for trimming the initial projection, 'sections' is only used for re-calls after an outline and should not be passed initially, and accessions require canonical form with suffixes stripped.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific action: 'Fetch full curated UniProtKB entries by accession in one batch (up to 20)', clearly identifying the tool's resource and scope. It also distinguishes itself from search behavior with 'This tool does not search', preventing confusion with sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when not to use this tool: 'This tool does not search: accessions come from uniprot_search_proteins.results[].accession or uniprot_map_ids.' It also explains the workflow for trimming fields initially and using sections only after an 'outline' response, which guides invocation steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uniprot_get_proteomeuniprot-mcp-server: get proteomeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoProteins per page when include_proteins is true (max 500). Omit for the server default.
upidNoProteome UPID. Provide this OR taxon_id, not both.
queryNoOptional UniProtKB Lucene filter to narrow the protein list, e.g. "reviewed:true AND keyword:KW-0067". Only applies when include_proteins is true.
cursorNoForward-pagination cursor from a prior protein page. Only meaningful with include_proteins.
taxon_idNoNCBI taxon ID, e.g. 9606 for human. Resolves to the reference proteome. Provide this OR upid, not both.
include_proteinsNoWhen true, also return a capped, cursor-paginated page of the proteome's proteins. Defaults to false — metadata alone is the common case.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe page-size cap that was applied.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of proteins returned in this page.
cursorNoForward cursor for the next protein page. Absent on the last page.
noticeNoTruncation guidance when the protein page was capped — how to reach the rest (walk the cursor or narrow with the query filter).
proteinsNoA capped page of the proteome's proteins. Present only when include_proteins is true.
proteomeNoProteome metadata.
truncatedNoTrue when the protein page hit the size cap — more remain via cursor.
totalProteinsMatchedNoTotal proteins matching the (optionally filtered) proteome query.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, openWorld, idempotent), the description discloses concrete behavior: the returned metadata fields, large protein set size (~147,506 for human), capped pages with a forward cursor, and optional query filtering. This gives the agent strong expectations about cost and paging behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but efficient, with no filler. Each sentence carries distinct value: what the tool fetches, what metadata comes back, how proteins are paginated and filtered, and what to call first for organism names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, an output schema, and sibling tools, the description is complete: it covers input selection rules, output highlights, pagination, size caveats, query behavior, and the relevant prerequisite workflow. The output schema covers the full return shape, so the description does not need to repeat it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% parameter coverage, so the baseline is 3. The description adds useful context beyond schema details: the protein list is very large, pagination is capped, and the query filter applies specifically to the protein subset. It reinforces the exclusive upid/taxon_id relationship though the schema already states it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Fetch the reference proteome for an organism by UPID... or NCBI taxon ID.' It clearly distinguishes this from sibling tools by focusing on proteome-level retrieval rather than individual entries, sequences, or ID mapping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: provide exactly one of upid or taxon_id, metadata-only is the common case, proteins are opt-in via include_proteins, and query can be narrowed with a Lucene filter. It also names the prerequisite tool, uniprot_get_taxonomy, for resolving organism names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uniprot_get_sequenceuniprot-mcp-server: get sequenceA
Read-onlyIdempotent
Inspect

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. Accessions come from uniprot_search_proteins or uniprot_map_ids; strip any "-N" isoform suffix (P04637-2 to P04637) before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
accessionYesUniProtKB primary accession, e.g. "P04637". Canonical form only — strip any "-N" isoform suffix.
include_isoformsNoWhen true, also return the isoform sequences. Defaults to false (canonical only).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
isoformsNoIsoform sequence records. Present only when include_isoforms is true and isoforms exist.
accessionNoThe accession that was fetched.
canonicalNoThe canonical sequence record.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds valuable behavioral context beyond those: the 'cheap sequence-only' cost characterization, the toggle behavior for include_isoforms (alternatively-spliced sequences), and the output shape (length, parsed header). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each earning its place: purpose/outputs, isoform parameter behavior, alternative tool, and input provenance + constraint. Front-loaded with the core action, no filler or repetition of annotation data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (so return format doesn't need restating), full schema coverage, and rich annotations, the description covers everything else: purpose, output components, param toggle, cheaper-vs-fuller alternative, input chain, and a handling caveat. Nothing critical is missing for a 2-param fetch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both parameters are fully documented in the schema (accession pattern + canonical-only instruction; include_isoforms default and behavior). The description adds minimal param-level value beyond what the schema provides, so the baseline of 3 applies. The isoform-stripping note is duplicated in schema, not new semantic info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb+resource ('Fetch the canonical amino-acid sequence (FASTA) for a UniProtKB accession') and names the exact outputs delivered (sequence, length, parsed header). It explicitly contrasts with uniprot_get_entry ('full functional record'), clearly distinguishing itself from its sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance ('This is the cheap sequence-only path') and names the alternative for full records (uniprot_get_entry). It also tells the agent where inputs originate (uniprot_search_proteins or uniprot_map_ids) and gives a concrete prerequisite instruction (strip '-N' isoform suffix) before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uniprot_get_taxonomyuniprot-mcp-server: get taxonomyA
Read-onlyIdempotent
Inspect

Resolve a taxonomy record by NCBI taxon ID (e.g. 9606) or scientific name (e.g. "Homo sapiens") — provide exactly one. Returns the scientific and common name, mnemonic, rank, parent, and the full lineage. Set include_children to also fetch immediate child taxa (a separate lookup — not inline on the record). Use this to turn an organism name into the taxon ID that uniprot_search_proteins (organism_id) and uniprot_get_proteome (taxon_id) expect.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOrganism scientific name, e.g. "Homo sapiens". Provide this OR taxon_id, not both. Matched against the scientific name.
taxon_idNoNCBI taxonomy ID, e.g. 9606. Provide this OR name, not both.
include_childrenNoWhen true, also fetch the immediate child taxa via a follow-up search. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
taxonNoThe taxonomy record.
lineageNoFull lineage from root to the taxon's near ancestor.
childrenNoImmediate children. Present only when include_children is true.
childCountNoNumber of immediate children returned (when include_children is true).

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context: it notes that include_children triggers a separate follow-up lookup (not inline), and that the tool returns a specific set of fields. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose, and every clause earns its place. It packs essential information (input options, output fields, include_children behavior, and cross-references to sibling tools) without redundancy. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 params, output schema present, annotations provided), the description is complete. It covers input constraints, output contents, the optional children behavior, and how it integrates with sibling tools. The output schema exists, so return values don't need elaboration. This is a well-rounded description for the context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters well. The description adds value by clarifying the mutual exclusivity of name and taxon_id ('provide exactly one') and by explaining the purpose of include_children as a separate lookup. This is slightly above the baseline 3 because it reinforces the constraint and adds context about the follow-up behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves a taxonomy record by NCBI taxon ID or scientific name, and lists the returned fields (scientific/common name, mnemonic, rank, parent, lineage). It distinguishes itself from siblings by explicitly mentioning how it feeds into uniprot_search_proteins and uniprot_get_proteome, which is a specific verb+resource+scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to provide exactly one of name or taxon_id, and explains when to use this tool: to turn an organism name into a taxon ID for other tools. It also clarifies that include_children is a separate lookup, not inline, which prevents misuse. This is explicit when-to-use guidance with alternatives named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uniprot_map_idsuniprot-mcp-server: map IDsA
Read-onlyIdempotent
Inspect

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 / UniProtKB_AC-ID to include TrEMBL. Pair a gene-symbol from_db with tax_id to disambiguate species. Chain the resulting accessions into uniprot_get_entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoIdentifiers to translate. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.
to_dbNoTarget database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB / UniProtKB_AC-ID also include unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.
tax_idNoNCBI taxon ID to disambiguate ambiguous source IDs (e.g. a gene symbol across species). Recommended with Gene_Name; e.g. 9606 for human.
ticketNoRunning-job ticket from a prior status "running" response. Pass it alone to poll that job; do not combine it with continuation or submission inputs.
from_dbNoSource database. Gene_Name = HGNC symbol (pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.
continuationNoCompleted-page continuation from a prior status "finished" response. Pass it alone to fetch the next page without polling or re-submitting.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoStatus guidance — e.g. that the job is still running, or that no IDs mapped.
statusNoJob state: "finished" (one completed results page included) or "running" (poll with ticket).
ticketNoRunning-job ticket (present only when status is "running"). Pass it alone to poll the same job.
resultsNoResolved mappings on this completed page (present only when status is "finished"). Failed source IDs are reported in unmappedIds.
mappedCountNoNumber of resolved mappings (finished jobs only).
unmappedIdsNoSource IDs UniProt reported as failed on this completed page. Absent when none failed.
continuationNoNext completed-page continuation (finished jobs only). Pass it alone to fetch the next page; absent on the terminal page.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, openWorldHint, idempotentHint), the description reveals that jobs run asynchronously, return 'running' with a ticket or 'finished' with a results page, and support paginated continuation. It also explains the reviewed vs. unreviewed Swiss-Prot/TrEMBL distinction, which materially affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: core purpose first, then async mechanics, then the reviewed/unreviewed nuance, species disambiguation, and successor tool. It packs substantial guidance into a compact paragraph without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully covers the non-obvious workflow: submitting, polling by ticket, fetching continuation pages, and choosing the right target database. Since an output schema exists, the absence of a return-field breakdown is not a gap. This is complete for a complex asynchronous tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds crucial operational meaning: which parameters apply only to submission, that ticket and continuation must be passed alone, and that tax_id should accompany Gene_Name. This goes well beyond the schema's per-field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Translate identifiers across databases via UniProt's ID-mapping service,' and gives concrete examples of mappings. This clearly distinguishes it from sibling tools like uniprot_get_entry or uniprot_search_proteins.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use context, including the async submission/poll/continuation workflow, when to pass a ticket vs. a continuation, and species disambiguation with tax_id. It also tells the agent to chain results into uniprot_get_entry, which is actionable routing to a sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uniprot_search_proteinsuniprot-mcp-server: search proteinsA
Read-onlyIdempotent
Inspect

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 include TrEMBL. Request facets (e.g. reviewed, model_organism) for server-side count breakdowns. Results page forward with an opaque cursor; UniProtKB has no offset paging. This is the discovery entry point — chain results[].accession into uniprot_get_entry for full records, or uniprot_get_sequence for FASTA.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoNumber of hits per page (max 500). Omit for the server default.
queryNoUniProtKB 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 AND reviewed:true". Provide this OR text_search, not both.
cursorNoOpaque forward-pagination cursor from a prior response. Walk pages with this; random access to page N is not supported.
facetsNoComma-separated upstream facet names for count breakdowns, e.g. "reviewed,model_organism,proteins_with". Returns a facets array alongside the hits.
fieldsNoComma-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 snippet.
reviewedNoRestrict to reviewed Swiss-Prot entries. Defaults to true (curated only); set false to include unreviewed TrEMBL. Ignored when query already pins a reviewed: clause.
organism_idNoRestrict to an NCBI taxon ID, e.g. 9606 for human. A convenience filter ANDed onto the query; resolve names with uniprot_get_taxonomy.
text_searchNoPlain-language search across protein names, gene names, and function, e.g. "kinase apoptosis". Provide this OR query, not both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
cursorNoForward cursor for the next page. Absent on the last page.
facetsNoUpstream facet count breakdowns. Present only when facets were requested.
noticeNoGuidance when nothing matched — echoes the query and suggests how to broaden.
resultsNoMatching protein hits for this page.
totalResultsNoTotal matches for the query before pagination (from the upstream result count).
effectiveQueryNoThe query as the server assembled and sent it to UniProtKB.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent, but the description adds substantive behavioral context: the reviewed=true default exists to avoid drowning in ~30x more TrEMBL predictions, paging is forward-only via an opaque cursor with no offset support, and facets produce server-side count breakdowns. This is exactly the kind of value that goes beyond the annotation hints while remaining consistent with them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized: it leads with the core purpose, then covers query modes, filtering defaults, facets, paging, and integration with sibling tools. Every sentence earns its place, and the structured flow from usage to boundaries to follow-up actions makes it easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, two mutually exclusive query modes, server-side facets, cursor pagination, and downstream chaining), the description covers all critical operational behavior while the output schema handles return details. It leaves no major usage question unanswered and explicitly names sibling tools for next steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema has 100% parameter coverage, the description adds complementary semantics: it frames text_search vs query as the 80% case versus the advanced syntax, explains the rationale for the reviewed default, states the exclusivity constraint, and clarifies that organism_id is a convenience filter ANDed onto the query. These are meaning-enriching details not fully derivable from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Search UniProtKB and return curated protein records.' It clearly distinguishes this tool from siblings by calling it 'the discovery entry point' and explaining that result accessions chain into uniprot_get_entry and uniprot_get_sequence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: use text_search for the 80% plain-language case, use query for full Lucene syntax, and exactly one is required. It also specifies when to include TrEMBL via reviewed=false, explains cursor paging limitations, and points alternatives for follow-up record retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Changeduniprot_map_ids13 fields changed
      • addedInput schema / properties / continuation
        Added value: +{
        +  "description": "Completed-page continuation from a prior status \"finished\" response. Pass it alone to fetch the next page without polling or re-submitting.",
        +  "properties": {
        +    "cursor": {
        +      "description": "Opaque cursor for the next completed results page.",
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "jobId": {
        +      "description": "UniProt ID-mapping job identifier for the completed job.",
        +      "minLength": 1,
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "jobId",
        +    "cursor"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / from_db / description
        Previous value: -"Source database. Gene_Name = HGNC symbol (pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required unless resuming with a ticket."New value: +"Source database. Gene_Name = HGNC symbol (pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."
      • changedInput schema / properties / ids / description
        Previous value: -"Identifiers to translate. Required unless resuming with a ticket."New value: +"Identifiers to translate. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."
      • changedInput schema / properties / ticket / description
        Previous value: -"A ticket from a prior status \"running\" response. Pass this alone (no from_db/to_db/ids) to fetch the completed result."New value: +"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."
      • addedInput schema / properties / ticket / minLength
        Added value: +1
      • changedInput schema / properties / to_db / description
        Previous value: -"Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB / UniProtKB_AC-ID also include unreviewed TrEMBL. Required unless resuming with a ticket."New value: +"Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB / UniProtKB_AC-ID also include unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."
      • addedOutput schema / properties / continuation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Next completed-page continuation (finished jobs only). Pass it alone to fetch the next page; absent on the terminal page.",
        +  "properties": {
        +    "cursor": {
        +      "description": "Opaque cursor for the next completed results page.",
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "jobId": {
        +      "description": "UniProt ID-mapping job identifier for the completed job.",
        +      "minLength": 1,
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "jobId",
        +    "cursor"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `missing_inputs`: Neither a ticket nor the full from_db/to_db/ids triple was provided. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is unknown or has expired server-side (UniProt holds jobs only temporarily). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation refers to a result page that is unknown or expired. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "missing_inputs",
        -  "unsupported_db_pair",
        -  "invalid_ticket"
        -]New value: +[
        +  "missing_inputs",
        +  "conflicting_inputs",
        +  "unsupported_db_pair",
        +  "invalid_ticket",
        +  "invalid_continuation"
        +]
      • changedOutput schema / properties / results / description
        Previous value: -"Resolved mappings (present when status is \"finished\"). A source ID with no mapping is simply absent."New value: +"Resolved mappings on this completed page (present only when status is \"finished\"). Failed source IDs are reported in unmappedIds."
      • changedOutput schema / properties / status / description
        Previous value: -"Job state: \"finished\" (results included) or \"running\" (re-call with the ticket)."New value: +"Job state: \"finished\" (one completed results page included) or \"running\" (poll with ticket)."
      • changedOutput schema / properties / ticket / description
        Previous value: -"Resumable job ticket (present when status is \"running\"). Re-call this tool with ticket set, and nothing else, to fetch the result."New value: +"Running-job ticket (present only when status is \"running\"). Pass it alone to poll the same job."
      • changedOutput schema / properties / unmappedIds / description
        Previous value: -"Input IDs with no mapping in the target database (finished jobs only). Absent when resuming or all mapped."New value: +"Source IDs UniProt reported as failed on this completed page. Absent when none failed."
  2. 6 tool updates
    • First observeduniprot_get_entry
    • First observeduniprot_get_proteome
    • First observeduniprot_get_sequence
    • First observeduniprot_get_taxonomy
    • First observeduniprot_map_ids
    • First observeduniprot_search_proteins

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: retrieving entries, proteomes, sequences, taxonomy, mapping IDs, and searching proteins. There is no overlap; even the batch entry retrieval is distinct from the sequence-only retrieval.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with a consistent prefix: uniprot_get_entry, uniprot_get_proteome, uniprot_get_sequence, uniprot_get_taxonomy, uniprot_map_ids, uniprot_search_proteins. This makes it easy to predict available operations.

Tool Count5/5

With 6 tools, the server is well-scoped for its purpose of querying and retrieving UniProt data. Each tool serves a core function and no tool feels redundant.

Completeness4/5

The toolset covers the main workflows: search proteins, fetch full entries, fetch sequences, map IDs, resolve taxonomy, and fetch proteomes. Minor gaps include lack of tools for browsing taxonomy children inline or fetching isoforms in entries, but these can be worked around with existing tools.