mcpField
U
UniProt MCP Server

UniProt MCP Server

ローカル
github.com/TakumiY235科学・教育143 週間前に更新

UniProt MCP Server について

UniProt MCP Serverは、UniProtのタンパク質情報をAIアシスタントに提供し、検索や比較を伴う研究・分析に利用できます。複数件の取得に対応し、配列特徴と利用可能な構造を返します。同一エントリーのデータは24時間キャッシュされます。

主な機能

  1. 01名称、遺伝子、キーワードで検索
  2. 02アクセッション番号で情報取得
  3. 03複数タンパク質の一括取得
  4. 04注釈付き配列特徴と位置の表示
  5. 05PDBとAlphaFoldの構造取得

活用シーン

  1. 01タンパク質名からエントリーを検索
  2. 02複数タンパク質情報の比較
  3. 03配列境界と活性部位の確認
  4. 04利用可能なタンパク質構造の調査

MCP 対応

UniProtの検索、タンパク質情報、配列特徴、構造を取得するツールをMCPクライアントに提供します。同一エントリーへの関連クエリでは24時間キャッシュを共有します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MseeP.ai Security Assessment Badge

UniProt MCP サーバー

UniProt のタンパク質情報にアクセスできる Model Context Protocol(MCP)サーバーです。このサーバーを使用すると、AI アシスタントは UniProt からタンパク質の機能や配列に関する情報を直接取得できます。

UniProt Server MCP server

特長

  • アクセッション番号がまだ分からない場合に、タンパク質名、遺伝子名、またはキーワードで UniProtKB を検索
  • UniProt のアクセッション番号でタンパク質情報を取得
  • 複数のタンパク質を一括取得
  • 注釈付き配列フィーチャーとその位置を取得:シグナルペプチド、プロペプチド、成熟鎖、活性部位および結合部位、ジスルフィド結合、ドメイン、グリコシル化、自然変異、変異誘発
  • 利用可能な構造を取得:手法、分解能、対象残基範囲を含む PDB エントリー、および AlphaFold DB モデル
  • パフォーマンス向上のためのキャッシュ(TTL は 24 時間)。同じエントリーを読み取るツール間で共有されます
  • エラー処理とロギング

要件

  • Python 3.10 以降
  • MCP Python SDK 1.x(mcp>=1.1,<2)

このプロジェクトの基盤となっている低レベルの Server クラスから、MCP SDK 2.0 リリースでは @server.list_tools() / @server.call_tool() デコレーターが削除されました。mcp 2.x をインストールすると、サーバーの起動時に AttributeError: 'Server' object has no attribute 'list_tools' が発生するため、依存関係は 1.x 系に固定されています。2.x サーバー API への移行は別途追跡されています。

クイックスタート

  1. Python 3.10 以降がインストールされていることを確認します
  2. このリポジトリをクローンします:
    git clone https://github.com/TakumiY235/uniprot-mcp-server.git
    cd uniprot-mcp-server
    
  3. 依存関係をインストールします:
    # Using uv (recommended)
    uv pip install -r requirements.txt
    
    # Or using pip
    pip install -r requirements.txt
    

設定

Claude Desktop の設定ファイルに追加します:

  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "uniprot": {
      "command": "uv",
      "args": ["--directory", "path/to/uniprot-mcp-server", "run", "uniprot-mcp-server"]
    }
  }
}

使用例

Claude Desktop でサーバーを設定した後、次のような質問ができます:

Can you get the protein information for UniProt accession number P98160?

一括クエリの場合:

Can you get and compare the protein information for both P04637 and P02747?

アクセッション番号が手元にない場合:

Find the reviewed human phospholipase A2 entries and show me their lengths.

コンストラクトやバリアントパネルを設計する前に、境界と遵守すべき残基を確認する場合:

What are the signal peptide, propeptide and mature chain boundaries of P04054,
and where are its active sites and disulfide bonds?

作業に使用する構造を探す場合:

Which PDB structures cover P04054, and at what resolution?

API リファレンス

ツール
  1. get_protein_info

    • 1 つのタンパク質の情報を取得します
    • 必須パラメーター:accession(UniProt アクセッション番号)
    • レスポンスの例:
      {
        "accession": "P12345",
        "protein_name": "Example protein",
        "function": ["Description of protein function"],
        "sequence": "MLTVX...",
        "length": 123,
        "organism": "Homo sapiens"
      }
      
  2. get_batch_protein_info

    • 複数のタンパク質の情報を取得します
    • 必須パラメーター:accessions(UniProt アクセッション番号の配列)
    • タンパク質情報オブジェクトの配列を返します
    • 検索に失敗した場合はアクセッションごとに報告されるため、1 つのエントリーに問題があっても、バッチ内のほかの情報は失われません
  3. search_proteins

    • アクセッション番号がまだ分からない場合にエントリーを検索します
    • 必須パラメーター:query(検索語。UniProt のクエリ構文を使用できます。 例:gene:PLA2G1B)
    • 任意:organism_id(NCBI 分類 ID。ヒトの場合は 9606)、 reviewed_only(デフォルトは true、Swiss-Prot のみ)、limit(1~50、 デフォルトは 10)
    • 配列は含まれないため、結果リストは小さく保たれます
    • レスポンスの例:
      {
        "count": 1,
        "results": [
          {
            "accession": "P04054",
            "entry_name": "PA2GA_HUMAN",
            "protein_name": "Phospholipase A2",
            "gene_names": ["PLA2G1B"],
            "organism": "Homo sapiens",
            "taxon_id": 9606,
            "length": 148,
            "reviewed": true
          }
        ]
      }
      
  4. get_protein_features

    • 1 始まりの包含位置で注釈付き配列フィーチャーを取得します
    • 必須パラメーター:accession
    • 任意:types(指定したフィーチャータイプのみを含めます。大文字と小文字を区別せず照合します。 例:["Active site", "Disulfide bond"])、 include_secondary_structure(デフォルトは false)
    • 二次構造(Helix、Beta strand、Turn)は要素ごとに報告されるため、1 つのエントリーに何十個も含まれますが、配列設計の判断には役立ちません。include_secondary_structure を設定するか、types で指定しない限り、これらは返されません。
    • レスポンスの例:
      {
        "accession": "P04054",
        "length": 148,
        "feature_counts": {"Signal": 1, "Propeptide": 1, "Chain": 1,
                           "Active site": 2, "Disulfide bond": 7},
        "features": [
          {"type": "Signal", "start": 1, "end": 15, "description": ""},
          {"type": "Propeptide", "start": 16, "end": 22,
           "description": "Activation peptide"},
          {"type": "Chain", "start": 23, "end": 148,
           "description": "Phospholipase A2"}
        ]
      }
      
    • フィーチャーは位置順に並びます。UniProt で位置が設定されていないフィーチャーは null として報告され、最後に並びます。
  5. get_protein_structures

    • タンパク質で利用可能な構造を取得します
    • 必須パラメーター:accession
    • レスポンスの例:
      {
        "accession": "P04054",
        "pdb_entries": [
          {"pdb_id": "3ELO", "method": "X-ray", "resolution": "1.55 A",
           "chains": "A=16-148"},
          {"pdb_id": "6Q42", "method": "X-ray", "resolution": "1.90 A",
           "chains": "A/B=23-148"}
        ],
        "alphafold_id": "P04054"
      }
      
    • 構造が解明されていないタンパク質の場合、エラーではなく空のリストと null の alphafold_id が返されます

get_protein_info、get_protein_features、get_protein_structures は、同じ UniProt エントリーの異なる部分を読み取るため、アクセッションごとに 1 つのリクエストをキャッシュして共有します。3 つすべてを呼び出しても、ラウンドトリップは 1 回だけです。

開発

開発環境のセットアップ
  1. リポジトリをクローンします
  2. 仮想環境を作成します:
    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. 開発用依存関係をインストールします:
    pip install -e ".[dev]"
    
テストの実行
pytest
コードスタイル

このプロジェクトでは、以下を使用します。

  • コードのフォーマットには Black
  • インポートの並べ替えには isort
  • リントには flake8
  • 型チェックには mypy
  • セキュリティチェックには bandit
  • 依存関係の脆弱性チェックには pip-audit

すべてのチェックを実行します。

black .
isort .
flake8 .
mypy .
bandit -r src/
pip-audit .

技術的な詳細

  • MCP Python SDK を使用して構築されています
  • 非同期 HTTP リクエストには httpx を使用します
  • OrderedDict ベースのキャッシュを使用し、TTL は 24 時間です
  • すべての UniProt リクエストにタイムアウトを設定します(接続 10 秒、合計 30 秒)
  • 429 によるレート制限を含む UniProt API エラーをツールエラーとして通知します。自動再試行やバックオフは行いません
  • 詳細なエラーメッセージを提供します
エラー処理

サーバーは、さまざまなエラーシナリオに対応します。

  • 無効なアクセッション番号(UniProt は 404 ではなく 400 を返します)
  • API 接続の問題(ネットワークエラー)
  • レート制限(429 応答):呼び出し元に通知しますが、再試行はしません
  • 不正な形式のレスポンス(JSON 解析エラー)
  • キャッシュ管理(TTL とサイズ制限)

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。貢献する手順は以下のとおりです。

  1. リポジトリをフォークします
  2. 機能ブランチを作成します(git checkout -b feature/amazing-feature)
  3. 変更をコミットします(git commit -m 'Add some amazing feature')
  4. ブランチにプッシュします(git push origin feature/amazing-feature)
  5. プルリクエストを作成します

必要に応じてテストを更新し、既存のコーディングスタイルに従ってください。

ライセンス

このプロジェクトは MIT ライセンスのもとでライセンスされています。詳細については、LICENSE ファイルをご覧ください。

謝辞

  • タンパク質データ API を提供している UniProt
  • Model Context Protocol の仕様を提供している Anthropic
  • このプロジェクトの改善に協力してくださるコントリビューター

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。