UniProt MCP について
UniProt MCPは、UniProtと関連ソースからタンパク質、標的、変異の根拠を調べる研究者向けの読み取り専用サーバーです。出典情報を返し、記録済みのUniProt RESTデータと現行レコードをダイジェストで照合できます。
主な機能
- 01UniProtの検索とエントリー取得
- 02配列、特徴、変異の照会
- 03タンパク質化学特性と残基解析
- 04科学データベースへの構造化リンク
- 05SHA-256ダイジェスト付き出典情報
- 06リリース固定と出典検証
活用シーン
- 01タンパク質アクセッションの根拠を収集
- 02配列位置や変異を調査
- 03構造化された標的ドシエを作成
- 04記録済みのUniProt応答の変更を確認
MCP 対応
UniProt検索、配列解析、生物医学的特徴、関連ソースのワークフローに対応する41個の読み取り専用MCPツールを提供します。出典検証ツールは記録済みのUniProt REST応答を現行データと比較しますが、ClinVarやAlphaFold DBの結果を独立に検証するものではありません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
41掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| accession | string | はい | UniProt アクセッション番号。例:'P04637'(ヒト TP53)、'P38398'(ヒト BRCA1)。レビュー済み(Swiss-Prot)と未レビュー(TrEMBL)のアクセッションを受け付けます。大文字と小文字は区別されます。 |
| response_format | string | いいえ | 'markdown'(デフォルト)は出典情報のフッター付きの人間が読みやすいレポート用、'json' は同じデータを含む機械解析可能な構造化 payload 用です。それ以外の値は拒否されます。 |
詳細
UniProt MCP サーバー
UniProt と関連する科学情報源から、検証可能でリリース情報を含むタンパク質エビデンスパッケージを作成します。
この MCP サーバーを使ってタンパク質を検索し、タンパク質、標的、変異体に関するエビデンスをまとめ、各結果の出典を確認できる記録として残せます。応答には、プロバイダー、取得時刻、ソース URL、SHA-256 ダイジェストなど、情報源ごとの来歴が保持されます。プロバイダーから提供される場合は、リリース識別子も含まれます。uniprot_provenance_verify は、記録された UniProt REST レコードと現在の UniProt データを比較できますが、ClinVar や AlphaFold DB の結果を独立して検証するものではありません。
専門的な研究ワークフロー向けに、完全なツールカタログも引き続き利用できます。
著者:Santiago Maniches · ORCID 0009-0005-6480-1987 · TOPOLOGICA LLC
研究著者情報: Santiago Maniches はこのサーバーを独自に保守しており、プロジェクト固有の研究成果の科学的著者は本人のみです。AI 支援ツールは、本人の指示のもと、開発、テスト、内部レビューを支援しています。UniProt レコード、リンク先のソースデータ、および基盤となるサードパーティの手法は、引き続きそれぞれの元の著者に帰属します。ツールを用いた内部レビューは、外部による科学的検証ではありません。
1 行で実行:
uvx uniprot-mcp-server
出典情報:出典に基づくTP53の取得記録
TP53 R175Hの例は、 仮想のモデルによる書き起こしではなく、2026年10月15日に実際に取得された記録です。UniProt、ClinVar、AlphaFold DBの応答は、元の応答バイト列とともに 取得記録ディレクトリに保存されています。 契約テストでは、保存された上流のバイト列からraw値とcanonical値のSHA-256を再計算し、取得記録のフッターに記載されたURLとハッシュを確認します。 また、書き起こしのテキストと保存されたツール出力の記録を個別に比較しますが、解析されたすべての記述をこれらのバイト列から独立して再導出するわけではありません。
たとえば、取得記録にあるUniProtのP04637応答には次の内容が含まれています。
Source: UniProt release 2026_03 (02-September-2026)
Retrieved: 2026-10-15T10:32:43Z
URL: https://rest.uniprot.org/uniprotkb/P04637
Canonical SHA-256: 112540dcb662c3ce2feba05272ce0e946ce76089a5bcf8346eb55141892f7fcf
リポジトリをチェックアウトした状態で、この過去の取得記録を検証するには、次を実行します。
pytest -q tests/contract/test_tp53_capture_binding.py
取得記録と現在の上流レコードを比較するには、上記のURL、リリース、ダイジェストを指定して
uniprot_provenance_verifyを実行します。
ライブ応答は2026年10月の取得記録と正当に異なる場合があるため、
検証結果がverifiedになるとは限りません。
これは、出典のダイジェストとの紐付けと、記録された2つのテキストのコピーが一致することを検証するものであり、解析されたすべての主張の科学的な正確性を検証するものではありません。ClinVarの生殖細胞系列の分類は体細胞変異の臨床的有用性を立証するものではなく、AlphaFoldのモデル全体に関する信頼度の要約は、特定の残基における信頼度を立証するものではありません。
インストール
インストールせずに実行する方法(推奨):
uvx uniprot-mcp-server
または、環境にインストールします。
pip install uniprot-mcp-server
注: PyPIには、無関係な別のパッケージ
uniprot-mcpがあります (作者が異なり、ツールは5個、ライセンスはMITです)。このパッケージはuniprot-mcp-serverです。pip install uniprot-mcpを実行すると、誤ったパッケージが気付かないうちにインストールされます。
研究者向け — まず確認する場所
このリポジトリを訪れた生物医学研究者の方は、次の情報をご確認ください。
| リソース | 内容 |
|---|---|
| MCPツールのドキュメント | UniProtのライブソースへのアクセス、アクセッション単位の検索、出典情報、任意のAlphaFold構造信頼度の取得を提供します。別途手作業で管理する臨床データコレクションは配布していません。 |
| TP53 R175Hの取得記録 | 日付入りのライブ書き起こし、保存された上流の応答バイト列、ダイジェスト/フッターの確認、記録されたテキストの比較を含みます。生物医学的解釈が独立して検証されたものではありません。例示用の書き起こしは撤回されています。 |
tests/benchmark/ | main上でSHA-256コミットメントを公開済みの、事前登録された30プロンプトのベンチマークです。2026-04-26のv1.1.0実行では、ライブのUniProtを使って30件すべてを検証しました — 書き起こしはtests/benchmark/run-2026-04-26-v1.1.0/にあります。 |
scripts/replicate.sh | 公開済みのPyPIホイールがこのリポジトリそのものからビルドされたことを、1つのコマンドで検証します(PyPI/GitHub Release/SLSAアテステーション間でSHA-256を相互確認し、--self-testを実行し、ベンチマークをライブで再実行します)。POSIXに対応し、Windows向けにはscripts/replicate.ps1があります。 |
docs/COMPETITIVE_LANDSCAPE.md | bio-MCP分野の14サーバーに関する率直な調査(2026年4月)と、このサーバーが主張する具体的な差別化要因です。 |
問題の報告や修正の提案は、https://github.com/smaniches/uniprot-mcp/issues までお寄せください。ツールの結果には出典が示されます。UniProtのアノテーションと予測された構造信頼度には、それぞれの上流でのエビデンス種別が保持されます。別途、臨床疾患インデックスは管理していません。
このツールの特徴
| uniprot-mcp | Vanilla LLM + WebFetch | 一般的な bio-MCP | |
|---|---|---|---|
| ツールの種類 | 41 個のツール、8 ファミリー | なし — 呼び出し側が URL を記述 | 通常 5~10 個 |
| データソースの来歴 | プロバイダー • 日付 • URL • SHA-256(利用可能な場合はリリース) | なし | URL のみの場合あり |
| UniProt REST の検証 | uniprot_provenance_verify は記録された UniProt REST の応答を比較します。外部の ClinVar/AlphaFold 由来データは対象外です | さまざま | さまざま |
| リリースの固定 | --pin-release=YYYY_MM は差異があるとエラーになります | 該当なし | 該当なし |
| 事前登録済みベンチマーク | 30 個のプロンプト、SHA-256 を main にコミット済み + 再現可能な検証ツール | 該当なし | 該当なし |
| ローカルの来歴キャッシュ | uniprot_replay_from_cache の読み取りプリミティブ(自動キャッシュ書き込みはリクエスト経路に接続されていません。§来歴と検証 を参照) | 該当なし | 該当なし |
| 臨床向けプリミティブ | 配列の化学特性/位置を考慮した特徴/HGVS バリアント検索/疾患関連/AlphaFold pLDDT/ClinVar | なし | なし |
| 構成ツール | uniprot_target_dossier — 1 回の呼び出しで 9 セクション | 該当なし | 該当なし |
| 入力検証 | HTTP 呼び出しの前に正規表現と長さの上限を適用 | なし | 部分的 |
| エラーチャネルの安全性 | 上流の例外テキストを LLM に返さない | 該当なし | 部分的 |
| オリジン横断の許可リスト | 列挙済み、脅威モデル化済み、プライバシーリスト掲載済み | 該当なし | 通常は監査なし |
| サプライチェーン | SLSA ビルド来歴 + Sigstore + CycloneDX SBOM(切り替え後) | 該当なし | まれ |
| テスト層 | ユニット + プロパティ + コントラクト + クライアント + 統合 + ベンチマーク | 該当なし | 通常はユニットテストのみ |
| ミューテーションテスト | 週次 + オンデマンドのワークフロー。モジュールごとの測定は cache 82%、proteinchem 92%、client 70%で完了。ゲートは現在 0%(測定優先)。v1.2.0 の目標は 95%以上です。docs/MUTATION_SCORES.md を参照してください | 該当なし | まれ |
私が 2026-04-26 に調査した限り、来歴 + 検証の連携を備えたものは、私が見つけた他の bio-MCP にはありませんでした。規制対象のユーザーは、過去の uniprot-mcp の回答を使い、開発者に連絡することなく、UniProt が現在も同じバイト列を返すことを証明するか、上流データにどのような差異が生じたかを正確に検出できます。見落とした反例があれば、イシューを登録してください。比較内容を更新します。
ツール(41)
8 つのエンドポイントファミリーがあります。すべて読み取り専用です(readOnlyHint: true)。uniprot_replay_from_cache を除き、すべて少なくとも 1 つの上流サービスとやり取りします(openWorldHint: true)。UniProt API キーは不要です。
UniProtKB コア(10)
| ツール | 用途 |
|---|---|
uniprot_get_entry | UniProt エントリー全体(例:p53 の P04637)。機能、遺伝子、生物、疾患、相互参照。 |
uniprot_search | UniProt クエリ言語 — 遺伝子、生物、分類群 ID、レビュー済みフラグ、フリーテキスト。 |
uniprot_get_sequence | FASTA。最初のレコードの前に PIR 形式の来歴コメントブロックが付きます(BLAST+/biopython 互換)。 |
uniprot_get_features | ドメイン、結合部位、PTM、シグナルペプチド — 任意で種類を絞り込めます。 |
uniprot_get_variants | 自然変異および疾患変異。 |
uniprot_get_go_terms | GO アノテーションをアスペクト(F/P/C)ごとにグループ化します。 |
uniprot_get_cross_refs | PDB、Pfam、Ensembl、Reactome、KEGG、STRING などへの未加工の相互参照。 |
uniprot_id_mapping | データベース間で ID を対応付けます(Gene_Name → UniProtKB、PDB → UniProtKB など)。 |
uniprot_batch_entries | 1 回の呼び出しで最大 100 件のエントリーを取得します。無効なアクセッションはクライアント側で除外されます。 |
uniprot_taxonomy_search | 生物名で UniProt の分類を検索します。 |
管理語彙(4)
| ツール | 用途 |
|---|---|
uniprot_get_keyword | ID でキーワードを取得します(例:KW-0007 = アセチル化)。定義、同義語、GO 参照、階層。 |
uniprot_search_keywords | フリーテキストでキーワードを検索します。 |
uniprot_get_subcellular_location | ID で細胞内局在の用語を取得します(例:SL-0039 = 細胞膜)。 |
uniprot_search_subcellular_locations | フリーテキストで細胞内局在を検索します。 |
配列アーカイブとクラスター(4)
| ツール | 目的 |
|---|---|
uniprot_get_uniref | ID(UniRef50_P04637、UniRef90_P04637、UniRef100_P04637)によるUniRefクラスターの取得。 |
uniprot_search_uniref | identity_tierフィルター(50/90/100)を使ったクラスター検索。 |
uniprot_get_uniparc | UPI(UPI000002ED67)による配列アーカイブレコードの取得。 |
uniprot_search_uniparc | UniParcの全文検索。 |
プロテオームと文献(4)
| ツール | 目的 |
|---|---|
uniprot_get_proteome | UP ID(UP000005640 = ヒト)によるプロテオームの取得。カウント、BUSCOスコア、構成要素。 |
uniprot_search_proteomes | 生物種/タイプ/完全性による絞り込み。 |
uniprot_get_citation | ID(通常はPubMedの数値ID)による引用レコードの取得。 |
uniprot_search_citations | UniProtの引用情報全体を対象としたインデックス検索。 |
構造化クロスDBリゾルバー(4)
ゲートウェイのみ — UniProtのオリジン外へ呼び出しは行われません。UniProtエントリーから 関連する相互参照を抽出し、構造化された レコード(文字列のパススルーではなく、型付きリスト/オブジェクト)を返します。
| ツール | 目的 |
|---|---|
uniprot_resolve_pdb | PDB構造:ID + 手法 + 分解能 + チェーンのカバレッジ。 |
uniprot_resolve_alphafold | AlphaFoldモデルID + EBIビューアーURL(モデルIDのみ — pLDDTについては、以下の専用ツールを呼び出してください)。 |
uniprot_resolve_interpro | InterProシグネチャ:ID + エントリー名。 |
uniprot_resolve_chembl | ChEMBLの創薬ターゲットID + EBIターゲットカードURL。 |
生物医学的特徴(7)
エントリーを対象とする純粋なPython合成 — 追加のオリジンはありません。最初の
4つは残基ごとおよびバリアントごとの質問に答えます。最後の3つは、
創薬、治療用タンパク質のエンジニアリング、病原体の分泌解析を対象とした
v1.1.0の拡張です。各ツールはエントリーのfeatures配列を
フィルター処理し、特徴タイプごとに構造化して分類するとともに、
結果が空の場合はその旨を通知します。
| ツール | 目的 |
|---|---|
uniprot_compute_properties | FASTAから配列の化学的特性を算出:MW/pI/GRAVY/芳香族性/電荷/ε₂₈₀。 |
uniprot_features_at_position | 残基位置と重なるすべての特徴。バリアント効果の解釈に不可欠です。 |
uniprot_lookup_variant | UniProtの自然変異特徴に対するHGVS簡略表記(R175H、V600E、R248*)の照合。 |
uniprot_get_disease_associations | DISEASEタイプのコメントから構造化された疾患レコードを取得:名称 + 略称 + UniProt疾患ID + OMIM相互参照 + 説明。 |
uniprot_get_active_sites | 触媒残基およびリガンド結合残基:活性部位、結合部位、部位、金属結合、DNA結合。タンパク質の残基レベルの化学的性質を確認できます。 |
uniprot_get_processing_features | 成熟化に関する特徴:シグナルペプチド、プロペプチド、移行ペプチド、開始メチオニン、鎖、ペプチド。治療用タンパク質のエンジニアリングと病原体の分泌解析に不可欠です。 |
uniprot_get_ptms | 翻訳後修飾:修飾残基(リン酸化/アセチル化/メチル化)、糖鎖付加、脂質修飾(GPI/プレニル化/パルミトイル化)、ジスルフィド結合、架橋。 |
オリジン間の情報拡充(3)
rest.uniprot.org以外のオリジンを参照するツールはこれらのみです。各ツールの詳細は
PRIVACY.mdおよび脅威モデルに記載されています。
| ツール | オリジン | 目的 |
|---|---|---|
uniprot_get_alphafold_confidence | alphafold.ebi.ac.uk | pLDDTの平均値 + 4段階の分布。モデルを信頼できるかどうかをエージェントが判断できます。 |
uniprot_resolve_clinvar | eutils.ncbi.nlm.nih.gov | ヒトのUniProtエントリーのみ(NCBI分類群9606)。遺伝子 + 任意のタンパク質変化によるClinVar分類を返します。ヒト以外のオルソログには適用できません。 |
uniprot_get_publications | rest.uniprot.org | エントリーの参照情報を対象とする純粋なPython処理 — オリジン間の情報拡充を補完するため、ここに記載しています。 |
合成と来歴(5)
| ツール | 目的 |
|---|---|
uniprot_resolve_orthology | オルソロジーの相互参照をソース DB ごとにグループ化します(KEGG / OMA / OrthoDB / eggNOG / ほか8件)。 |
uniprot_get_evidence_summary | UniProt の ECO アノテーション根拠と主張の手法を、重み付けされた0~100の記述的な構成指標とともに要約します。この指標は未調整であり、アノテーションの正確性を示す確率ではなく、AlphaFold pLDDT との比較もできません。 |
uniprot_target_dossier | 1回の呼び出しで包括的な特性評価を行います。9つのセクション(同定/機能/化学/構造/創薬標的/疾患/変異/機能アノテーション/相互参照)。 |
uniprot_provenance_verify | 以前記録された URL を再取得し、リリースタグと正規化された応答の SHA-256 を比較します。6つの判定(verified、incomplete_evidence、release_drift、hash_drift、release_and_hash_drift、url_unreachable)それぞれに助言文が付属します。 |
uniprot_replay_from_cache | 上流にアクセスせず、キャッシュされた UniProt の応答を読み取ります。UNIPROT_MCP_CACHE_DIR を介してオプトインします。 |
来歴と検証
上記の検証可能なソースレシートは、例示または再構成されたトランスクリプトではなく、保存済みの2026年10月の TP53 キャプチャに由来します。
uniprot_provenance_verify ツールは、記録された UniProt のリリースと正規化された SHA-256 を、新たに取得した応答と比較します。結果は、現在の上流のバイト列に応じて、一致または差異の状態として報告されます。
比較に成功しても、それは独立した臨床検証ではありません。
将来の検証結果を先回りして断定しないでください。正確な過去の再現には、元の応答バイト列を保持するか、適切な UniProt ソーススナップショットを取得してください。
UniProt に更新がある場合、ツールはその内容を次のとおり正確に伝えます。
| 判定 | 意味 | 助言 |
|---|---|---|
verified | リリースとハッシュの両方が一致 | 来歴を再現できます |
incomplete_evidence | URL には到達できますが、参照チェックが不足 | 記録されたリリースと SHA-256 を指定してください |
release_drift | UniProt の新しいバージョンがリリースされました | 過去の回答が必要な場合は、FTP スナップショットを指定してください |
hash_drift | リリースは同じですが、本文が変更されています | リリース内の編集です。調査するか、再取得してください |
release_and_hash_drift | リリースとハッシュの両方が更新されています | リリース固有の FTP スナップショットを使用してください |
url_unreachable | エンドポイントが削除されたか、レート制限されています | 再試行するか、UniProt に報告してください |
厳密な再現性が必要な場合は、オプトインしてリリースを固定してください。
export UNIPROT_PIN_RELEASE=2026_01
uniprot-mcp
# every response is checked against the pinned release;
# any drift raises `ReleaseMismatchError`, which the server surfaces
# as an agent-actionable error envelope.
オフラインで再生するには、uniprot_replay_from_cache(url) が
UNIPROT_MCP_CACHE_DIR で指定されたディレクトリから、以前に記録された応答を読み取ります。
export UNIPROT_MCP_CACHE_DIR=~/.uniprot-mcp-cache
uniprot-mcp
# uniprot_replay_from_cache(url) returns the entry at
# $UNIPROT_MCP_CACHE_DIR/<sha256(url)>.json if present.
ステータスに関する注記(v1.1.3)。
uniprot_replay_from_cacheは読み取りプリミティブです。現在、キャッシュは外部プロセスによって事前に作成されている必要があります。たとえば、メンテナー提供のベンチマークキャプチャスクリプトを使う方法や、httpxの呼び出しをラップして、文書化された JSON 形式で自分でディレクトリに書き込む方法があります(src/uniprot_mcp/cache.pyを参照)。リクエスト経路には現在、自動キャッシュ書き込み機能が組み込まれていません。キャッシュエントリは明示的に、または外部のキャプチャワークフローによって作成する必要があります。
2026年10月の TP53 の例では、実際の上流の応答バイト列を保持し、それをオフラインで検証します。 以前の2026年4月のベンチマークトランスクリプトは、ソースのバイト列が保持されていなかったため、来歴を示す証拠として撤回されました。その以前の判定を、科学的または暗号学的な証明として使用しないでください。
事前登録済みベンチマーク
tests/benchmark/ には、main 上で SHA-256 による期待回答のコミットメントを備えた、30 件のプロンプトによる評価(Tier A / B / C × 10)が含まれています。平文の expected.jsonl は、ベンチマークの実行結果が公開されるまでローカルにのみ保持されます。暗号学的コミットメントにより、作成者が事後に「正しい」回答を書き換えることはできません。
第三者向け再現手順(シールファイル不要)。 UniProt から Tier A / B の回答をすべてその場で再導出して出力します。expected.jsonl は不要です。これにより、今日、一次情報源から回答を独立して再現できることを確認できます。シールの再計算は行いません(コミット済みの SHA-256 は非公開の根拠を対象にしています。詳細は以下を参照してください)。
python tests/benchmark/verify_against_hashes.py tests/benchmark/expected.hashes.jsonl
# Re-derives all 30 answers live and prints them (informational; exit 0).
メンテナー向け暗号学的検証手順(ローカルの平文シールあり)。 expected.hashes.jsonl にコミットされたダイジェストは、{prompt_id, answer, rationale} を対象にシールされています。根拠はシール付き事前登録の一部として意図的に非公開にされているため、暗号学的検証を完全に行うにはローカルの expected.jsonl が必要です。
python tests/benchmark/verify_answers.py tests/benchmark/expected.jsonl
# OK: all 30 prompts verified against https://rest.uniprot.org
python tests/benchmark/verify.py tests/benchmark/expected.jsonl tests/benchmark/expected.hashes.jsonl
# OK: 30 commitments verified
プロンプトごとの出典の帰属と、正式な独立性声明(回答の作成時に uniprot-mcp は使用されていません)については、tests/benchmark/AUDIT.md を参照してください。
インストール
pip install uniprot-mcp-server # PyPI distribution
# or, for a pinned, isolated install:
uvx --from uniprot-mcp-server uniprot-mcp
なぜ名前が3種類あるのですか? これは標準的な Python パッケージングのパターンです。PyPI の名前空間はグローバルであり、名前の衝突を避けるために区別が必要になるからです。
概念 値 内容 GitHub リポジトリ smaniches/uniprot-mcpソースコードと課題トラッカー PyPI ディストリビューション uniprot-mcp-serverpip installでインストールするもの(このプロジェクトの公開時には、uniprot-mcpという名前はすでに PyPI で取得されていました)Python モジュール uniprot_mcpimportするもの(PEP-8 のアンダースコア形式)コンソールスクリプトと MCP サーバーの識別子 uniprot-mcpシェルから実行するもの、および Claude Desktop に表示されるもの インストールした wheel がこのリポジトリからビルドされたことを確認するための相互チェックとして、各リリースには Sigstore 署名、SLSA ビルド来歴、CycloneDX SBOM が付属しており、いずれも v1.1.0 GitHub リリースに添付されています。
bash scripts/replicate.sh(POSIX)またはpwsh scripts/replicate.ps1(Windows)を実行すると、チェーン全体をエンドツーエンドで検証できます。同じ「1つのものに3つの名前」パターンの一般的な先例には、pillow/PIL、python-dateutil/dateutil、beautifulsoup4/bs4、python-Levenshtein/Levenshteinがあります。
ソースからインストールする場合:
git clone https://github.com/smaniches/uniprot-mcp.git
cd uniprot-mcp
pip install -e .
Claude Desktop
claude_desktop_config.json:
{
"mcpServers": {
"uniprot": {
"command": "uvx",
"args": ["uniprot-mcp-server"]
}
}
}
バージョンを固定し、再現性を重視して利用する場合:
{
"mcpServers": {
"uniprot": {
"command": "uniprot-mcp",
"args": ["--pin-release=2026_01"]
}
}
}
自身で用意したキャッシュディレクトリに対する uniprot_replay_from_cache の読み取りを有効にするには、次のようにします(自動書き込みはリクエスト処理経路に組み込まれていません。§来歴と検証を参照してください)。
{
"mcpServers": {
"uniprot": {
"command": "uniprot-mcp",
"env": {
"UNIPROT_MCP_CACHE_DIR": "/absolute/path/to/cache"
}
}
}
}
Claude Code(CLI)
claude mcp add uniprot -- uniprot-mcp
セルフテスト(UniProt のライブスモークチェック)
uniprot-mcp --self-test
# [tools] registered: 41/41
# [live] P04637 -> TP53 OK
# [PASS]
ワークフローの例
1. TP53 R175H の臨床バリアント解釈パケット。
> What's at residue 175 of P04637? Is R175H a known variant? Pull
> the UniProt and ClinVar evidence and tell me how confident the
> AlphaFold model is at that residue.
→ uniprot_features_at_position("P04637", 175)
→ uniprot_lookup_variant("P04637", "R175H")
→ uniprot_resolve_clinvar("P04637", change="R175H")
→ uniprot_get_alphafold_confidence("P04637")
2. 1回の呼び出しで作成する創薬標的の詳細資料。
> Give me a complete drug-target characterisation of human BRCA1.
→ uniprot_target_dossier("P38398")
# nine sections, two upstream calls (entry + FASTA), one tool call.
3. バッファーの選択/発現系の選定に向けた配列の化学的特性。
> What's the molecular weight, pI, and hydrophobicity of human insulin?
→ uniprot_compute_properties("P01308")
# MW 11,981 Da, pI 4.93, ε₂₈₀ 24,980 M⁻¹·cm⁻¹ — pure Python on the FASTA.
4. 記録済みの TP53 キャプチャーを使った来歴のドリフトチェック。
> Check the 2026-10-15 UniProt P04637 response for drift.
> Supply the captured release, URL, and canonical SHA-256:
uniprot_provenance_verify(
url="https://rest.uniprot.org/uniprotkb/P04637",
release="2026_03",
response_sha256="112540dcb662c3ce2feba05272ce0e946ce76089a5bcf8346eb55141892f7fcf"
)
判定はライブの上流レスポンスによって決まります。一致することは事前に断言されていません。
5. 以前にキャッシュした回答をオフラインで再生する(読み取りプリミティブ。以下のステータスに関する注記を参照してください)。
# Pre-condition: $UNIPROT_MCP_CACHE_DIR/<sha256(url)>.json already exists,
# populated by the maintainer benchmark capture script or an external
# wrapper. Automatic cache write-through is not currently wired into the
# request path; cache entries must be populated explicitly or by an
# external capture workflow.
export UNIPROT_MCP_CACHE_DIR=~/sealed-cache
> uniprot_replay_from_cache("https://rest.uniprot.org/uniprotkb/P04637")
テスト
| レイヤー | パス | 内容 |
|---|---|---|
| ユニット | tests/unit/ | すべての公開関数の動作。 |
| プロパティ | tests/property/ | 正規表現とクエリ構築に関する、Hypothesis 主導の不変条件。 |
| コントラクト | tests/contract/ | マニフェスト/pyproject/ドキュメント/インシデントポリシー/ベンチマークの不整合を防止。 |
| クライアント | tests/client/ | respx でモックした HTTP に対するリトライ/バックオフ/ID マッピングのポーリング。 |
| 統合 | tests/integration/ | 実際の UniProt と AlphaFold を使用。--integration でオプトインします。 |
| ベンチマーク | tests/benchmark/ | SHA-256 でコミットされた 30 個のプロンプトと、再現可能な検証ツール。 |
オフラインテストと任意のライブ統合テストは、main の CI で必須です(実際の件数は pytest --collect-only --ignore=tests/integration と pytest --collect-only tests/integration で確認します。オフライン件数には、cache、proteinchem、client の v1.1.x ミューテーションキラーのファイル、バージョン整合性/変更履歴の存在を確認するコントラクトテスト、カバレッジを完全に復元したカバレッジ不足テストのファイルが含まれます)。7 つすべてのソースファイルで、行カバレッジと分岐カバレッジは 100.00 % です。また、[tool.coverage.report] のゲートは fail_under = 100 に設定されており、CI でこれを強制します。到達不能なインポート時フォールバックがある 2 つの分岐には、正当な理由を示す # pragma: no cover が付けられています(コード内および pyproject.toml に説明があります)。ローカルでは、pytest tests/unit tests/property tests/client tests/contract --cov=uniprot_mcp --cov-branch --cov-report=term-missing を実行して再現できます。Mypy(strict)、ruff(check + format)、bandit(すべての重大度で問題 0 件)、pip-audit(--strict、既知の脆弱性なし)はすべてクリーンです。ミューテーションテストの基盤は導入済みで、測定を重視しています。 最新のマトリックスワークフロー結果は、モジュールごとの表 docs/MUTATION_SCORES.md を参照してください。95 % 以上のゲートは v1.2.0 の目標であり、現状の数値ではありません。
# Fast, offline (CI on every push):
pytest tests/unit tests/property tests/client tests/contract -v
# Live UniProt (opt-in, nightly in CI):
pytest --integration tests/integration -v
# Lint / type-check / security / SCA:
ruff check . && ruff format --check . && mypy src/uniprot_mcp
bandit -r src/uniprot_mcp && pip-audit --strict
アーキテクチャと脅威モデル
docs/THREAT_MODEL.md— STRIDE に沿った 12 件の脅威。それぞれ、コードパスまたはコミット SHA を根拠として示し、クロスオリジンの許可リストポリシー(§T3b)も含みます。docs/INCIDENT_POLICY.md+docs/POSTMORTEM_TEMPLATE.md+docs/INCIDENT_LOG.md— 夜間の統合テストで不具合が発生するたびに、事後検証の記録を作成します。AUDIT.md— v1.0.1 より前に実施した専門家による監査と、記録された P0/P1 の修正。docs/RELEASE.md— タグ付け → PyPI → MCP Registry → Sigstore → GitHub Release → Zenodo のリリース手順をまとめています。release-verify.ymlによるタグ付け後の検証ジョブと、Zenodo および PyPI のウェブフックを一度だけ設定する手順も含みます。docs/archive/— 監査証跡として保持している、切り替え前の計画ドキュメント(PENDING_V1.md、MERGE_PLAN.md、RELEASE_AUDIT_v1.1.3.md)。公開ドキュメントサイトには含まれません。現在の運用状況はREADME.md、CHANGELOG.md、docs/MUTATION_SCORES.mdに記載されています。mkdocs.yml— Material テーマのドキュメントサイトです。.github/workflows/docs.ymlからgh-pagesにデプロイできます。ローカルでビルドするには、pip install -e ".[docs]" && mkdocs serveを実行します。
同じ作者による関連 MCP サーバー
alphafold-sovereign-mcp— AlphaFold DB と 8 つの追加の公開生物医学データソースを統合する Model Context Protocol サーバーです。ローカルの SQLite ナレッジグラフを備えています(pip install alphafold-sovereign-mcp)。semantic-scholar-mcp— Semantic Scholar(2 億件以上の学術論文)向けの Model Context Protocol サーバーです。論文検索、引用グラフのたどり、著者プロフィール、推薦のための 14 個のツールを提供します(pip install s2-mcp-server)。
引用
CITATION.cff を引用してください(GitHub には「このリポジトリを引用」ボタンが表示されます)。UniProt Consortium も必ず引用してください。
The UniProt Consortium. UniProt: the Universal Protein Knowledgebase in 2025. Nucleic Acids Research (2025). doi:10.1093/nar/gkae1010
ライセンス
Apache-2.0 — LICENSE および NOTICE を参照してください。
これは、TOPOLOGICA LLC が保守する、単独で利用できる Apache-2.0 ライセンスの UniProt MCP です。連携する製品は必要ありません。ソースの出所を追跡する機能や再生機能は、改ざん検知可能な監査台帳や独立した科学的検証と誤解しないでください。永続的で信頼できる監査記録を必要とする統合では、その機能を別途実装し、評価する必要があります。
Copyright © 2026 Santiago Maniches. TOPOLOGICA LLC.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。