uniprot-mcp-server
Server Details
Protein research over UniProtKB — search by function, fetch curated records, map IDs, proteomes.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/uniprot-mcp-server
- GitHub Stars
- 1
- Server Listing
- @cyanheads/uniprot-mcp-server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.8/5 across 6 of 6 tools scored.
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.
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.
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.
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.
Available Tools
6 toolsuniprot_get_entryuniprot-mcp-server: get entryARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | 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. | |
| sections | No | Only 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. | |
| accessions | Yes | Accessions to fetch (1–20). From uniprot_search_proteins or uniprot_map_ids. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | No | Result 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. |
| error | No | Present when the call failed. Absent on success. |
| failed | No | Accessions that were well-formed but not found in UniProtKB. Present when kind is "full". |
| notice | No | Re-call guidance when kind is "outline" — re-call the same accession with sections:[...] to pull specific sections. |
| sections | No | Section outline returned when a single record exceeds the context budget. Present when kind is "outline". |
| succeeded | No | Entries that resolved successfully. Present when kind is "full". |
Tool Definition Quality
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.
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.
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.
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.
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.
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 proteomeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Proteins per page when include_proteins is true (max 500). Omit for the server default. | |
| upid | No | Proteome UPID. Provide this OR taxon_id, not both. | |
| query | No | Optional UniProtKB Lucene filter to narrow the protein list, e.g. "reviewed:true AND keyword:KW-0067". Only applies when include_proteins is true. | |
| cursor | No | Forward-pagination cursor from a prior protein page. Only meaningful with include_proteins. | |
| taxon_id | No | NCBI taxon ID, e.g. 9606 for human. Resolves to the reference proteome. Provide this OR upid, not both. | |
| include_proteins | No | When true, also return a capped, cursor-paginated page of the proteome's proteins. Defaults to false — metadata alone is the common case. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The page-size cap that was applied. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of proteins returned in this page. |
| cursor | No | Forward cursor for the next protein page. Absent on the last page. |
| notice | No | Truncation guidance when the protein page was capped — how to reach the rest (walk the cursor or narrow with the query filter). |
| proteins | No | A capped page of the proteome's proteins. Present only when include_proteins is true. |
| proteome | No | Proteome metadata. |
| truncated | No | True when the protein page hit the size cap — more remain via cursor. |
| totalProteinsMatched | No | Total proteins matching the (optionally filtered) proteome query. |
Tool Definition Quality
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.
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.
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.
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.
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.
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 sequenceARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| accession | Yes | UniProtKB primary accession, e.g. "P04637". Canonical form only — strip any "-N" isoform suffix. | |
| include_isoforms | No | When true, also return the isoform sequences. Defaults to false (canonical only). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| isoforms | No | Isoform sequence records. Present only when include_isoforms is true and isoforms exist. |
| accession | No | The accession that was fetched. |
| canonical | No | The canonical sequence record. |
Tool Definition Quality
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.
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.
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.
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.
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.
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 taxonomyARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Organism scientific name, e.g. "Homo sapiens". Provide this OR taxon_id, not both. Matched against the scientific name. | |
| taxon_id | No | NCBI taxonomy ID, e.g. 9606. Provide this OR name, not both. | |
| include_children | No | When true, also fetch the immediate child taxa via a follow-up search. Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| taxon | No | The taxonomy record. |
| lineage | No | Full lineage from root to the taxon's near ancestor. |
| children | No | Immediate children. Present only when include_children is true. |
| childCount | No | Number of immediate children returned (when include_children is true). |
Tool Definition Quality
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.
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.
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.
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.
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.
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 IDsARead-onlyIdempotentInspect
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. If it finishes in time you get status "finished" with the mappings; if it runs long you get status "running" with a ticket — re-call with that ticket (and no other inputs) to fetch the result without re-submitting. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Identifiers to translate. Required unless resuming with a ticket. | |
| to_db | No | 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. | |
| tax_id | No | NCBI taxon ID to disambiguate ambiguous source IDs (e.g. a gene symbol across species). Recommended with Gene_Name; e.g. 9606 for human. | |
| ticket | No | A ticket from a prior status "running" response. Pass this alone (no from_db/to_db/ids) to fetch the completed result. | |
| from_db | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Status guidance — e.g. that the job is still running, or that no IDs mapped. |
| status | No | Job state: "finished" (results included) or "running" (re-call with the ticket). |
| ticket | No | Resumable job ticket (present when status is "running"). Re-call this tool with ticket set, and nothing else, to fetch the result. |
| results | No | Resolved mappings (present when status is "finished"). A source ID with no mapping is simply absent. |
| mappedCount | No | Number of resolved mappings (finished jobs only). |
| unmappedIds | No | Input IDs with no mapping in the target database (finished jobs only). Absent when resuming or all mapped. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint. The description adds crucial behavioral details: async job with polling, status 'finished' vs 'running' with ticket, and the caveat about gene names mapping to many TrEMBL entries. This goes beyond annotations and is highly informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (about 4 sentences) but packs a lot of critical information. It fronts the core purpose and then explains async behavior and practical tips. Slightly dense but every sentence earns its place; a model might need to parse carefully.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (async, multiple databases, ambiguous gene symbols) and the rich schema with enums and descriptions, the description covers all critical aspects: async polling, ticket resumption, reviewed vs unreviewed distinction, tax_id disambiguation, and chaining to uniprot_get_entry. It's complete for effective use even with annotations and output schema present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each parameter, but the description adds significant value by explaining the practical semantics: e.g., 'Gene_Name = HGNC symbol (pair with tax_id)', 'UniProtKB-Swiss-Prot = reviewed only (the usual intent)', and the ticket parameter for resuming. It clarifies the 'required unless resuming' condition for multiple params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: translate identifiers across databases via UniProt's ID-mapping service. It explicitly distinguishes it from siblings by mentioning chaining results into uniprot_get_entry and by naming the async behavior and ticket mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: pair gene symbols with tax_id for disambiguation, choose reviewed-only to avoid TrEMBL noise, and re-call with ticket when running. Mentions chaining to uniprot_get_entry as next step, which helps agent plan.
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 proteinsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of hits per page (max 500). Omit for the server default. | |
| query | No | 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 AND reviewed:true". Provide this OR text_search, not both. | |
| cursor | No | Opaque forward-pagination cursor from a prior response. Walk pages with this; random access to page N is not supported. | |
| facets | No | Comma-separated upstream facet names for count breakdowns, e.g. "reviewed,model_organism,proteins_with". Returns a facets array alongside the hits. | |
| fields | No | 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 snippet. | |
| reviewed | No | Restrict 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_id | No | Restrict to an NCBI taxon ID, e.g. 9606 for human. A convenience filter ANDed onto the query; resolve names with uniprot_get_taxonomy. | |
| text_search | No | Plain-language search across protein names, gene names, and function, e.g. "kinase apoptosis". Provide this OR query, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| cursor | No | Forward cursor for the next page. Absent on the last page. |
| facets | No | Upstream facet count breakdowns. Present only when facets were requested. |
| notice | No | Guidance when nothing matched — echoes the query and suggests how to broaden. |
| results | No | Matching protein hits for this page. |
| totalResults | No | Total matches for the query before pagination (from the upstream result count). |
| effectiveQuery | No | The query as the server assembled and sent it to UniProtKB. |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides seamless access to UniProtKB protein database, enabling queries for protein entries, sequences, Gene Ontology annotations, full-text search, and ID mapping across 200+ database types.52MIT
- AlicenseNot gradedqualityCmaintenanceProvides access to UniProt protein sequence and function knowledge base, enabling search and retrieval of protein entries, proteomes, taxonomy, and feature annotations.7MIT
- FlicenseCqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server providing advanced access to the UniProt protein database.2619
- AlicenseBqualityDmaintenanceProvides seamless access to UniProtKB protein data, enabling querying of protein entries, sequences, Gene Ontology annotations, and ID mappings through a typed, resilient interface.5MIT
Your Connectors
Sign in to create a connector for this server.