interpro-mcp-server

v0.1.2 pre-1.0

Search InterPro entries, map protein domains and functional sites, and find proteins by domain via MCP. STDIO or Streamable HTTP.

interpro.caseyjhand.com/mcp
claude mcp add --transport http interpro-mcp-server https://interpro.caseyjhand.com/mcp
codex mcp add interpro-mcp-server --url https://interpro.caseyjhand.com/mcp
{
  "mcpServers": {
    "interpro-mcp-server": {
      "url": "https://interpro.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http interpro-mcp-server https://interpro.caseyjhand.com/mcp
{
  "mcpServers": {
    "interpro-mcp-server": {
      "command": "bunx",
      "args": [
        "mcp-remote",
        "https://interpro.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "mcpServers": {
    "interpro-mcp-server": {
      "type": "http",
      "url": "https://interpro.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://interpro.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

6

interpro_list_reference

open-world

List supported InterPro database slugs, entry types, accession routing patterns, common taxon IDs, or current release information.

read
scope read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "interpro_list_reference",
    "arguments": {
      "topic": "<topic>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "topic": {
      "type": "string",
      "enum": [
        "databases",
        "entry_types",
        "accession_patterns",
        "taxa",
        "release"
      ],
      "description": "Reference topic; release retrieves current upstream metadata."
    }
  },
  "required": [
    "topic"
  ],
  "additionalProperties": false
}
view source ↗

interpro_search_entries

open-world

Search InterPro entries or member signatures by text or entry type. GO filters require sourceDatabase interpro; integratedInto selects member signatures for an InterPro accession. Results are cursor-paged; use interpro_get_entry for full metadata.

read
scope read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "interpro_search_entries",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "sourceDatabase": {
      "description": "Database to search; defaults to interpro.",
      "default": "interpro",
      "type": "string",
      "enum": [
        "interpro",
        "pfam",
        "prosite",
        "profile",
        "smart",
        "cdd",
        "panther",
        "cathgene3d",
        "ssf",
        "ncbifam",
        "hamap",
        "prints",
        "pirsf",
        "sfld",
        "antifam"
      ]
    },
    "query": {
      "description": "Text to search; omit all filters to browse the database.",
      "type": "string",
      "minLength": 1,
      "maxLength": 300
    },
    "entryType": {
      "description": "Entry annotation type.",
      "type": "string",
      "enum": [
        "domain",
        "family",
        "repeat",
        "homologous_superfamily",
        "active_site",
        "binding_site",
        "conserved_site",
        "ptm",
        "region",
        "coiled_coil",
        "disordered"
      ]
    },
    "goTerm": {
      "description": "GO annotation identifier such as GO:0003677; requires sourceDatabase interpro.",
      "type": "string",
      "pattern": "^GO:\\d{7}$"
    },
    "goCategory": {
      "description": "GO category: P biological process, F molecular function, C cellular component; requires sourceDatabase interpro.",
      "type": "string",
      "enum": [
        "P",
        "F",
        "C"
      ]
    },
    "integratedInto": {
      "description": "Integrating InterPro accession; requires a member sourceDatabase.",
      "type": "string",
      "pattern": "^IPR\\d{6}$"
    },
    "limit": {
      "default": 20,
      "description": "Positive integer page size; values above 100 are clamped to 100 with a notice; defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "cursor": {
      "description": "Opaque nextCursor from this tool with unchanged filters; limit may change.",
      "type": "string",
      "maxLength": 4096
    }
  },
  "required": [
    "sourceDatabase",
    "limit"
  ],
  "additionalProperties": false
}
view source ↗

interpro_get_entry

open-world

Retrieve one InterPro or member-database entry, including description, hierarchy, member signatures, GO terms, literature, cross-references, clan membership, and coverage counters.

read
scope read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "interpro_get_entry",
    "arguments": {
      "accession": "<accession>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "accession": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_.:-]+$",
      "description": "InterPro or member-database entry accession, such as IPR011615 or PF00870; no URL syntax."
    },
    "sourceDatabase": {
      "description": "Database slug; inferred from standard accession prefixes when omitted.",
      "type": "string",
      "enum": [
        "interpro",
        "pfam",
        "prosite",
        "profile",
        "smart",
        "cdd",
        "panther",
        "cathgene3d",
        "ssf",
        "ncbifam",
        "hamap",
        "prints",
        "pirsf",
        "sfld",
        "antifam"
      ]
    },
    "includeThumbnail": {
      "default": false,
      "description": "Include each Wikipedia thumbnail image, base64 data often hundreds of KB; defaults to false.",
      "type": "boolean"
    }
  },
  "required": [
    "accession",
    "includeThumbnail"
  ],
  "additionalProperties": false
}
view source ↗

interpro_get_clan

open-world

Retrieve a Pfam, CDD, or PIRSF clan/set and a cursor page of member entries; optionally include its relationship graph, returned in slices that fit the response budget and paged with relationshipOffset.

read
scope read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "interpro_get_clan",
    "arguments": {
      "accession": "<accession>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "accession": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_.:-]+$",
      "description": "Set accession, such as CL0016 (Pfam), cl21453 (CDD), or PIRSF000047; no URL syntax."
    },
    "sourceDatabase": {
      "description": "Inferred from uppercase CL (Pfam), lowercase cl (CDD), or PIRSF; supply explicitly for mixed-case CL prefixes.",
      "type": "string",
      "enum": [
        "pfam",
        "cdd",
        "pirsf"
      ]
    },
    "includeRelationships": {
      "default": false,
      "description": "Include the relationship graph, one slice per call that fits the response budget; defaults to false.",
      "type": "boolean"
    },
    "relationshipOffset": {
      "default": 0,
      "description": "Position of the first relationship item to return, counting nodes, then links; defaults to 0. A value above 0 requires includeRelationships: true; pass relationshipsPage.nextOffset to continue.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "includeThumbnail": {
      "default": false,
      "description": "Include each Wikipedia thumbnail image, base64 data often tens of KB; defaults to false.",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "description": "Positive integer member page size; values above 100 are clamped to 100 with a notice; defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "cursor": {
      "description": "Opaque nextCursor with unchanged accession, sourceDatabase, and includeRelationships; limit, relationshipOffset, and includeThumbnail may change.",
      "type": "string",
      "maxLength": 4096
    }
  },
  "required": [
    "accession",
    "includeRelationships",
    "relationshipOffset",
    "includeThumbnail",
    "limit"
  ],
  "additionalProperties": false
}
view source ↗

interpro_get_protein_domains

open-world

Retrieve InterPro and member-signature matches on a canonical UniProt protein, preserving every location and discontinuous fragment. Optionally retain matches covering a residue and include extra predicted features. Large maps arrive in segments of whole matches that fit the response budget: the first segment carries the protein metadata, requested extra features follow the last match, and coverage.nextCursor continues until hasMore is false.

read
scope read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "interpro_get_protein_domains",
    "arguments": {
      "accession": "<accession>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "accession": {
      "type": "string",
      "pattern": "^(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2})$",
      "description": "Canonical six- or ten-character UniProt accession, without an isoform suffix."
    },
    "residuePosition": {
      "description": "Residue position, 1-based and inclusive; must not exceed protein length.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "includeExtraFeatures": {
      "default": false,
      "description": "Include complete extra predicted features, returned after the last match; defaults to false.",
      "type": "boolean"
    },
    "cursor": {
      "description": "Opaque coverage.nextCursor with unchanged accession, residuePosition, and includeExtraFeatures.",
      "type": "string",
      "maxLength": 4096
    }
  },
  "required": [
    "accession",
    "includeExtraFeatures"
  ],
  "additionalProperties": false
}
view source ↗

interpro_find_proteins_by_domain

open-world

Find UniProt proteins carrying an InterPro or member signature. Defaults to reviewed human proteins; reviewedOnly=false includes reviewed and unreviewed proteins in the chosen taxon. Optional isFragment filters fragment annotations; false does not prove a complete canonical sequence.

read
scope read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "interpro_find_proteins_by_domain",
    "arguments": {
      "accession": "<accession>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "accession": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_.:-]+$",
      "description": "InterPro or member-database entry accession, such as IPR011615 or PF00870; no URL syntax."
    },
    "sourceDatabase": {
      "description": "Entry database slug, inferred from standard accession prefixes when omitted.",
      "type": "string",
      "enum": [
        "interpro",
        "pfam",
        "prosite",
        "profile",
        "smart",
        "cdd",
        "panther",
        "cathgene3d",
        "ssf",
        "ncbifam",
        "hamap",
        "prints",
        "pirsf",
        "sfld",
        "antifam"
      ]
    },
    "taxonId": {
      "description": "Positive NCBI taxonomy identifier of at most 10 digits; defaults to human 9606.",
      "default": "9606",
      "type": "string",
      "maxLength": 10,
      "pattern": "^[1-9][0-9]*$"
    },
    "reviewedOnly": {
      "default": true,
      "description": "Defaults to reviewed proteins; false includes reviewed and unreviewed proteins.",
      "type": "boolean"
    },
    "isFragment": {
      "description": "Select fragment annotations: true for fragments, false for proteins not annotated as fragments; omit to include both. False does not establish sequence completeness.",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "description": "Positive integer page size; values above 50 are clamped to 50 with a notice; defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "cursor": {
      "description": "Opaque nextCursor with unchanged target, taxonId, reviewedOnly, and isFragment selection; limit may change.",
      "type": "string",
      "maxLength": 4096
    }
  },
  "required": [
    "accession",
    "taxonId",
    "reviewedOnly",
    "limit"
  ],
  "additionalProperties": false
}
view source ↗