interpro_list_reference
InterPro reference vocabulary
List supported InterPro database slugs, entry types, accession and PDB identifier patterns, common taxon IDs, or current release information.
topic必填
io.github.cyanheads由 GitHub 帳號 cyanheads 發布v0.2.0更新於 Oct 30, 2026
Search InterPro entries, map domains onto proteins and PDB structures, and scan raw sequences.
檢索 InterPro 條目,將蛋白質結構域與功能位點對應到 UniProt 蛋白質及 PDB 結構,並可掃描原始蛋白質序列。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.cyanheads%2Finterpro-mcp-server/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"interpro": {
"type": "http",
"url": "https://interpro.caseyjhand.com/mcp"
}
}
}Search InterPro entries, map domains and functional sites onto UniProt proteins and PDB structures, find proteins by domain, and scan raw protein sequences via MCP. STDIO or Streamable HTTP.
Public Hosted Server: https://interpro.caseyjhand.com/mcp
Protein families, domains, repeats, and functional sites from InterPro and the member databases it integrates (Pfam, PROSITE, SMART, CDD, PANTHER, and others), read through the keyless EMBL-EBI InterPro API. Search entries, read their full metadata, map a UniProt protein's or a PDB entry's chains to annotations with residue coordinates, walk Pfam, CDD, and PIRSF clans, find proteins that carry a signature, and scan a raw protein sequence. Runs over STDIO, Streamable HTTP, or the public hosted endpoint above, with no credentials to configure; starting new InterProScan jobs needs an operator-set contact email (see Configuration).
interpro_search_entries toolsourceDatabase (default interpro) plus optional query (1-300 characters), entryType, goTerm (GO:0003677 form), goCategory (P, F, C), and integratedInto (an IPR accession, member databases only); no filter is required, so omitting all of them browses the databasegoTerm and goCategory require sourceDatabase: "interpro"; choose one GO filter per call. Combining them fails before network access because upstream ignores the category when a term is supplied. For member signatures, search InterPro with the GO filter, then read member_databases with interpro_get_entry or search the member database with integratedInto set to the matching InterPro accessionlimit capped at 100 (default 20); larger requests are clamped with a notice. Returns entries, page (total, returned, limit, hasMore, nextCursor), and the applied query; page.limit is the effective page sizeinterpro_get_entry toolaccession required; sourceDatabase is inferred from standard accession prefixes when omitted. A set accession (CL…) fails as entry_not_found and points to interpro_get_clansections selects from description, hierarchy, member_databases, go_terms, literature, cross_references, wikipedia, counters, and overlaps_with. Core metadata and unknown upstream fields remain; omitted sections returns full detailoverlapLimit pages complete overlaps_with records; overlapOffset requires it, starts at zero, and advances using overlapsPage.nextOffset. Paging requires overlaps to be retained. Selection and omissions are disclosed; absent or null overlap data stays distinct from an empty listincludeThumbnail: true, and a notice reports what was left outentry.descriptionText adds readable text with paragraph, list, and table boundaries alongside the unchanged source entry.description, including its HTML and annotation flags. It is omitted when description is excluded or no readable text is suppliedentry_withdrawn with its deletion date and short nameinterpro_get_protein_domains toolaccession (no isoform suffix); optional residuePosition (1-based, inclusive) keeps every match with a fragment covering it, with all of that match's fragments intact; includeExtraFeatures adds predicted features such as disorder and transmembrane regionsincludeResidueAnnotations: true adds residueAnnotations, the provider's functional rule annotations. A residue filter keeps each whole rule with any fragment covering the position, preserving descriptions, residue letters, locations, and provenancecoverage.nextCursor until hasMore is false. The first segment carries protein metadata; an empty segment cannot establish that nothing is annotated. Residue annotations are omitted until their stage is reached, while {} means that stage returned no selected rulesresidue_out_of_range and protein_not_found are typed failuresinterpro_get_clan toolaccession for a Pfam (CL0016), CDD (cl21453), or PIRSF (PIRSF000047) set, with sourceDatabase (pfam, cdd, pirsf) inferred from the prefix; members page by cursor, with positive integer limit capped at 100 (default 20). Larger requests are clamped with a notice; page.limit reports the effective sizeincludeRelationships: true adds the relationship graph in slices that fit the response budget; relationshipsPage.nextOffset goes back in as relationshipOffset, which needs includeRelationships setincludeThumbnail works as on interpro_get_entry; a missing set is clan_not_foundinterpro_find_proteins_by_domain toolaccession plus optional sourceDatabase; taxonId (NCBI, default 9606) and reviewedOnly (default true; false covers reviewed and unreviewed proteins) are echoed in queryisFragment selects proteins annotated as fragments (true) or not annotated as fragments (false); omit it to include both. False does not establish sequence completeness. Explicit selections appear in query and must stay unchanged when following cursorsarchitectureId accepts protein.ida_accession from interpro_get_protein_domains: a 40-character hexadecimal identifier, normalized lowercase. Equality means the provider's Pfam architecture grouping, not equivalent function. Keep it unchanged when following cursorslimit capped at 50 (default 20); larger requests are clamped with a notice, and page.limit is the effective size. Ordinary results keep the protein summary, matched entry locations, taxon lineage, and native extra_fields.is_fragment annotation; missing or null status remains unknown. Architecture-filtered rows retain native extra_fields.ida_id when supplied and use detailAvailability to distinguish unavailable entry/taxon details from actual empty arraysproteomeId (UP plus nine digits, case-insensitive, canonicalized uppercase; for example protein.proteome from interpro_get_protein_domains) intersects one UniProt proteome with every other selection. taxonId still applies, including its 9606 default, and a proteome returns proteins only when taxonId is its organism or an ancestor. Echoed in query; keep it unchanged when following cursors. Rows then carry the upstream proteomes array, and architecture rows add detailAvailability.proteomesinterpro_get_structure_domains toolpdbId required: a four-character PDB ID such as 1tsr, case-insensitive (accession is accepted as an alias); extended pdb_0000… IDs are not supported. Optional chain restricts the map to one protein chain, case-sensitive (A and a differ); nucleic-acid chains are not listedstructures, joined by entry. A record carries locations in chain numbering (start/end, 1-based) beside author numbering (auth_start/auth_end, which can be null or skip), UniProt numbering, and the chain-to-UniProt residue map; protein is null for chains with no UniProt mappingchainRecordLimitReached flags a match at that limit, which may cover chains not returned; set chain to read one chain completelycoverage.nextCursor until hasMore is false. The first segment carries structure (metadata, including the protein chains)structure_not_found, and a chain outside the structure's protein chains as chain_not_found with availableChainsinterpro_scan_sequence toolsequence required: one protein sequence as residue letters, optionally after a single FASTA header line (up to 100,000 characters). Case, spaces, and line breaks are ignored; digits, gaps, and stop symbols (*) are rejected, as are empty input and multiple FASTA recordssource: "precalculated"). Any other sequence starts one InterProScan 6 job through the EBI Job Dispatcher (source: "interproscan"), which commonly runs about ten minutes, so the usual first result for a novel sequence is a jobId with status submitted, queued, or runningwaitSeconds (0-35, default 30) sets how long a newly started job is awaited before returning its jobId. Repeating a sequence whose job is still running returns the same jobId (tracked per server process); at most 25 jobs are in flight per process, beyond which the call fails as rate_limited with retryAfterINTERPRO_SCAN_EMAIL set, only precalculated matches are available and any other sequence fails as scan_not_configured (see Configuration). The hosted endpoint does not set itcoverage.nextCursor with the same sequence. This tool is not read-only: a call can start a jobinterpro_get_scan_result tooljobId required, as returned by interpro_scan_sequence; waitSeconds (0-35, default 30) waits for a pending job, and 0 checks its status oncestatus: "finished" with matches, queued or running with no matches (check again later), plus interproVersion and interproscanVersion for a finished job. Large results continue by coverage.nextCursor with the same jobIdscan_not_found, and a job that ended in error as scan_failed, both pointing back to interpro_scan_sequenceinterpro_list_reference tooltopic required: databases, entry_types, accession_patterns, taxa, or release. The first four are local and make no network call; taxa lists common examples, not every taxonrelease reads the current InterPro version, date, and per-database entry counts, and fails as release_changed if the two upstream responses disagree on the versionBuilt on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
InterPro-specific:
interpro, pfam, prosite, profile, smart, cdd, panther, cathgene3d, ssf, ncbifam, hamap, prints, pirsf, sfld, antifam) and 11 entry types, with the entry database inferred from standard accession prefixes and conflicting routes rejected locallyfetch rejects on Nodenull or omitted rather than filled inAgent-friendly output:
content[] carries the complete output as compact JSON plus an index of every URL as a link and every image as an image, so clients that read only one surface get the same dataentry_not_found, invalid_cursor, upstream_rate_limited, and others) each paired with a recovery hintinterpro-guide agent skill (identifier chains, gates, and chain/author/UniProt numbering) over MCP and in plugin installs, the npm package, and the Docker imageConnect to the hosted instance, no install:
Or run it locally:
For other clients, add this to the MCP config file:
No API key is needed. For Docker or a source build, see Running the server.
The InterPro API is keyless. The server defines one optional variable, and these framework variables are the ones most often set:
See .env.example for the common framework overrides.
Requires Bun v1.4.0 or higher (or Node.js v24+).
Clone and install:
Build and run:
Run checks and tests:
The image defaults to HTTP transport, stateless session mode, and logs to /var/log/interpro-mcp-server. To run it over stdio from an MCP client, use "command": "docker" with "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/interpro-mcp-server:latest"]. To build locally, docker build -t interpro-mcp-server .; OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.
See CLAUDE.md for development guidelines and architectural rules. The short version:
try/catch in tool logicctx.log for request-scoped loggingcreateApp() array in src/index.tsIssues are welcome. Run checks and tests before submitting:
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.
Data comes from InterPro and its member databases through the EMBL-EBI API. Licensing varies by member database, so attribute InterPro and the originating database; see InterPro's license page and the EMBL-EBI terms of use.
來源:README.md,提交 1ae7d45
InterPro reference vocabulary
List supported InterPro database slugs, entry types, accession and PDB identifier patterns, common taxon IDs, or current release information.
topic必填Search InterPro entries
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.
limitquerycursorgoTermentryTypegoCategoryintegratedIntosourceDatabaseInterPro entry metadata
Retrieve one InterPro or member-database entry with full metadata by default. Select optional sections while retaining core and unknown metadata, or supply overlapLimit to page whole overlap records in upstream order; offsets are not a snapshot across calls.
sectionsaccession必填overlapLimitoverlapOffsetsourceDatabaseincludeThumbnailInterPro clan metadata and members
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.
limitcursoraccession必填sourceDatabaseincludeThumbnailrelationshipOffsetincludeRelationshipsMap protein domains
Retrieve InterPro and member-signature matches on a canonical UniProt protein, preserving every location and discontinuous fragment. Optionally select records covering a residue, include extra predicted features, and include functional residue rules with provenance. Budgeted segments hold whole records in order: matches, requested extras, then requested residue rules sorted by key. The first segment carries protein metadata; continue coverage.nextCursor until hasMore is false.
cursoraccession必填residuePositionincludeExtraFeaturesincludeResidueAnnotationsFind proteins by domain
Find UniProt proteins carrying an InterPro or member signature. Defaults to reviewed human proteins; reviewedOnly=false includes all review statuses in the chosen taxon. Optional isFragment filters fragment annotations; false does not prove sequence completeness. architectureId intersects the provider Pfam grouping with these selections, without implying functional equivalence; metadata-only hits disclose unavailable entry and taxon details without per-protein requests. proteomeId intersects one UniProt proteome, such as protein.proteome from interpro_get_protein_domains, with every selection including taxonId.
limitcursortaxonIdaccession必填isFragmentproteomeIdreviewedOnlyarchitectureIdsourceDatabaseMap structure domains
Retrieve InterPro and member-signature matches on one PDB entry's protein chains. Each chain record keeps match locations in chain numbering (1-based start/end beside author auth_start/auth_end, which can be null), in UniProt numbering, and the chain-to-UniProt residue map, with discontinuous fragments preserved; the UniProt protein is null for unmapped chains. InterPro nests at most 20 chain records per match; set chain to read one chain completely. Budgeted segments hold whole matches; the first carries structure metadata listing the protein chains. Continue coverage.nextCursor until hasMore is false.
chainpdbId必填cursorScan a protein sequence
Find InterPro domain, family, and site matches for one raw protein sequence that has no UniProt accession. Sequences already in UniParc return precalculated matches at once; any other sequence starts one InterProScan 6 job, which commonly runs about ten minutes, so the usual first result is a jobId to read with interpro_get_scan_result. Repeating a sequence whose job is still running returns the same jobId instead of starting another. Matches are InterProScan records verbatim, 1-based and inclusive, each naming its member database and release.
cursorsequence必填waitSecondsRead an InterProScan job
Check an InterProScan job started by interpro_scan_sequence, waiting up to waitSeconds for it to finish. Returns the matches once finished, otherwise its queued or running status to check again later. Matches are InterProScan records verbatim, 1-based and inclusive, with the InterPro and InterProScan versions that produced them. Jobs and their results expire seven days after submission.
jobId必填cursorwaitSeconds已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
claude mcp add --transport http interpro-mcp-server https://interpro.caseyjhand.com/mcpclaude mcp add interpro-mcp-server -- npx -y @cyanheads/interpro-mcp-server{ "mcpServers": { "interpro-mcp-server": { "command": "npx", "args": ["-y", "@cyanheads/interpro-mcp-server"] } }}git clone https://github.com/cyanheads/interpro-mcp-server.gitcd interpro-mcp-server && bun installcp .env.example .env # optional; the server needs no keys# One-time buildbun run rebuild
# Run the built serverbun run start:stdio# orbun run start:httpbun run devcheck # Lint, format, typecheck, securitybun run test # Vitest test suitebun run lint:mcp # Validate MCP definitions against specdocker run --rm -p 3010:3010 ghcr.io/cyanheads/interpro-mcp-server:latestbun run devcheckbun run test