A side-by-side look at the Opentargets and Uniprot MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Opentargets for biology, medicine and bioinformatics work as a local process; choose Uniprot MCP for biology, medicine and bioinformatics as a local process. You can also run both side by side in one mcpServers block.
MCP_TRANSPORT, FASTMCP_SERVER_HOST, FASTMCP_SERVER_PORT, OPEN_TARGETS_API_URL, OPEN_TARGETS_RATE_LIMIT_RPS, OPEN_TARGETS_RATE_LIMIT_BURST, OPEN_TARGETS_RATE_LIMIT_ENABLED.get_target_alternative_genes, get_target_associated_diseases, get_target_chemical_probes.UNIPROT_MCP_CACHE_DIR.uniprot_get_entry, uniprot_search, uniprot_get_sequence.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Biology, Medicine and Bioinformatics | Biology, Medicine and Bioinformatics |
| Quality signal | 61/100 · Good | 61/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | No auth required |
| Pricing | Free | Free |
| Required env vars | MCP_TRANSPORTFASTMCP_SERVER_HOSTFASTMCP_SERVER_PORTOPEN_TARGETS_API_URLOPEN_TARGETS_RATE_LIMIT_RPSOPEN_TARGETS_RATE_LIMIT_BURSTOPEN_TARGETS_RATE_LIMIT_ENABLED | UNIPROT_MCP_CACHE_DIR |
| Verified owner | Community listing | Community listing |
| GitHub stars | 19 | 3 |
| Directory activity | 3 views 0 installs 0 upvotes | 4 views 0 installs 0 upvotes |
| Tools | 68 | 41 |
| Full listing | View Opentargets | View Uniprot MCP |
get_target_alternative_genesList alternate gene symbols and database cross-references for a target.get_target_associated_diseasesList diseases linked to a target with association scores.get_target_chemical_probesList available chemical probes and their quality metrics.get_target_classReturn ChEMBL target class annotations for a gene.get_target_depmap_essentialityFetch DepMap CRISPR essentiality scores across cell lines.get_target_expressionReturn baseline expression measurements for a target across biosamples.get_target_genetic_constraintFetch genetic constraint metrics (gnomAD) for a target.get_target_hallmarksReturn cancer hallmark annotations associated with a target.get_target_homologuesRetrieve cross-species homologues for a target gene.get_target_infoRetrieve core identity details for a target gene.get_target_interactionsRetrieve protein interaction partners for a target from curated databases.get_target_known_drugsReturn compounds with known activity on the target.uniprot_get_entryFetch a UniProt protein entry by accession (e.g. P04637 for p53, P38398 for BRCA1).
Returns function, gene, organism, disease associations, cross-references.uniprot_searchThe general-purpose entry point for finding UniProtKB proteins by any
combination of gene, organism, keyword, or free text. Use this first when
you don't already have an accession; use ``uniprot_get_entry`` once you
do. Examples: '(gene:TP53) AND (organism_id:9606)', 'kinase AND reviewed:true'.
``reviewed_only`` and ``organism`` are convenience shortcuts equivalent to
adding the corresponding clause to ``query`` yourself.uniprot_get_sequenceFetch the canonical protein sequence in FASTA format. Use this when
you need the raw residue string itself (e.g. for local sequence
analysis); for pre-computed chemistry derived from this same sequence
(molecular weight, pI, hydrophobicity) call ``uniprot_compute_properties``
instead, which fetches the FASTA internally so you don't have to parse
it yourself. Always returns markdown/plain-text FASTA — there is no
``response_format`` parameter because FASTA is already the interchange
format.uniprot_get_featuresReturn the full, unfiltered feature array for an entry: domains,
binding sites, PTMs, signal peptides, and every other annotated region,
optionally narrowed by ``feature_types``. For a residue-specific view
('what's at position 175?') use ``uniprot_features_at_position``
instead; for the curated subsets (active/binding sites, processing,
PTMs alone) the dedicated ``uniprot_get_active_sites`` /
``uniprot_get_processing_features`` / ``uniprot_get_ptms`` tools apply
the same filter server-side.uniprot_get_go_termsGet GO annotations grouped by aspect.uniprot_get_cross_refsList every external-database cross-reference UniProt has curated for
an entry (PDB, Pfam, Ensembl, Reactome, KEGG, STRING, and dozens more),
optionally narrowed to one ``database``. For the common single-database
cases there are dedicated, richer tools that resolve structured details
beyond a bare ID: ``uniprot_resolve_pdb`` (structures with
method/resolution), ``uniprot_resolve_alphafold``, ``uniprot_resolve_interpro``,
and ``uniprot_resolve_chembl``. Use this tool for any other database or
to see the full cross-reference set at once.uniprot_get_variantsList every literature-described natural variant UniProt has curated
for an entry, including disease-associated mutations. Use this to see
the full variant catalogue for a protein; to check one specific
HGVS-shorthand change (e.g. 'R175H') use ``uniprot_lookup_variant``
instead, which does the position/residue matching for you. UniProt's
natural-variant annotations only cover literature-described variants —
for population-scale clinical significance data use
``uniprot_resolve_clinvar``.uniprot_id_mappingMap identifiers between UniProt and external databases (or between
two external databases) via UniProt's ID mapping service. Submits an
async job and polls it to completion server-side, so the call may take
a few seconds for large batches.uniprot_batch_entriesFetch multiple entries in a single call. Use this instead of repeated
``uniprot_get_entry`` calls when you already have a list of accessions —
one network round-trip instead of N, with invalid accessions reported
rather than aborting the batch.uniprot_taxonomy_searchResolve an organism name to its NCBI taxonomy ID(s) — the numeric ID
other UniProt tools expect (e.g. the ``organism`` parameter of
``uniprot_search``, or ``organism_id:`` in a query string). Returns
each match's taxonomy ID, scientific name, common name, and rank
(species / genus / etc.); a name can resolve to multiple IDs when
it's ambiguous (e.g. a genus with several species), so inspect the
rank and full scientific name before picking one. Use this before
filtering any other search by organism if you only know the name,
not the numeric ID.uniprot_get_keywordFetch a UniProt keyword by ID (e.g. KW-0007 for Acetylation, KW-0539 for Nucleus).
Returns name, definition, category, synonyms, GO cross-refs, and parent/child hierarchy.uniprot_search_keywordsSearch UniProt's controlled keyword vocabulary (the ``KW-####`` terms)
by name or definition. Use this to discover a keyword ID from a concept;
once you have the ``KW-####`` ID, call ``uniprot_get_keyword`` for its full
record (definition, category, hierarchy, GO cross-references). Returns up
to ``size`` matches, or an empty list if nothing matches.
Examples: 'acetylation', 'nucleus', 'kinase activity'.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"opentargets": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/nickzren/opentargets-mcp",
"opentargets-mcp"
],
"env": {
"MCP_TRANSPORT": "YOUR_MCP_TRANSPORT_HERE",
"FASTMCP_SERVER_HOST": "YOUR_FASTMCP_SERVER_HOST_HERE",
"FASTMCP_SERVER_PORT": "YOUR_FASTMCP_SERVER_PORT_HERE",
"OPEN_TARGETS_API_URL": "YOUR_OPEN_TARGETS_API_URL_HERE",
"OPEN_TARGETS_RATE_LIMIT_RPS": "YOUR_OPEN_TARGETS_RATE_LIMIT_RPS_HERE",
"OPEN_TARGETS_RATE_LIMIT_BURST": "YOUR_OPEN_TARGETS_RATE_LIMIT_BURST_HERE",
"OPEN_TARGETS_RATE_LIMIT_ENABLED": "YOUR_OPEN_TARGETS_RATE_LIMIT_ENABLED_HERE"
}
}
}
}
{
"mcpServers": {
"smaniches-uniprot-mcp": {
"command": "uvx",
"args": [
"uniprot-mcp-server"
],
"env": {
"UNIPROT_MCP_CACHE_DIR": "YOUR_UNIPROT_MCP_CACHE_DIR_HERE"
}
}
}
}