VirtualFlyBrain について
VirtualFlyBrainは、Drosophilaの神経解剖や関連データを調べる研究者向けのMCPサーバーです。検索、実体照会、コネクトーム照会、オントロジー探索を、ホスト型HTTPサービスまたはローカル環境で利用できます。
主な機能
- 01条件を指定したVFB実体検索
- 02用語メタデータの取得とクエリ実行
- 03FlyBase実体とsplit-GAL4名の解決
- 04コネクトームデータセットと接続の照会
- 05神経伝達物質とオントロジー階層の確認
活用シーン
- 01脳領域に関連するニューロンの検索
- 02上流・下流の接続関係の探索
- 03遺伝子発現や試薬データの確認
MCP 対応
MCPクライアントに、用語検索、クエリ、接続関係、階層探索などVirtualFlyBrainのデータ検索・分析ツールを公開します。ホスト型HTTPエンドポイントまたはローカル環境で利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://vfb3-mcp.virtualflybrain.orgclaude mcp add --transport http org-virtualflybrain-vfb3 https://vfb3-mcp.virtualflybrain.org{"mcpServers":{"org-virtualflybrain-vfb3":{"type":"http","url":"https://vfb3-mcp.virtualflybrain.org"}}}Cursor で開く{"servers":{"org-virtualflybrain-vfb3":{"type":"http","url":"https://vfb3-mcp.virtualflybrain.org"}}}VS Code で開く{"mcpServers":{"org-virtualflybrain-vfb3":{"type":"http","url":"https://vfb3-mcp.virtualflybrain.org"}}}{"mcpServers":{"org-virtualflybrain-vfb3":{"serverUrl":"https://vfb3-mcp.virtualflybrain.org"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
11| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| id | any | はい | 検索する1つ以上の VFB ID |
| force_refresh | boolean | いいえ | 応答キャッシュをバイパスして結果を再計算します。処理コストが高いため、初回呼び出しでは設定しないでください。この会話内の以前の呼び出しで明らかに誤った結果、古い結果、または失敗の報告が返された場合に限り、再試行のために設定してください。同じ呼び出しの再試行で設定できるのは1回までです。 |
詳細
VFB3-MCP Server
Virtual Fly Brain(VFB)向けの Model Context Protocol(MCP)サーバーです。Claude、Copilot、その他の MCP クライアントから、Drosophila melanogaster の神経解剖学、コネクトミクス、発現データ、試薬データを検索できます。
正規リポジトリ: VirtualFlyBrain/VFB3-MCP(このリポジトリ)— Virtual Fly Brain チームが保守しています。
ホスト型サービス: https://vfb3-mcp.virtualflybrain.org — インストール、API キー、アカウントは不要です。
claude mcp add --transport http virtual-fly-brain https://vfb3-mcp.virtualflybrain.org
以前の Robbie1977/VFB3-MCP のコピーは v1.3.0 でアーカイブされており、保守されていません。こちらのリポジトリと上記の URL を使用してください。
このサーバーは、VFB データの検索、クエリの実行、用語の検索に使えるツールを提供します。HTTP モードではステートレスに動作し(セッション追跡なし)、どのレプリカでも任意のリクエストを処理でき、標準的な負荷分散が機能します。
🚀 クイックスタート
ライブサービスを利用する(推奨)
VFB3-MCP を最も簡単に利用する方法は、https://vfb3-mcp.virtualflybrain.org のホスト型サービスを使うことです。お使いのマシンへのインストールやセットアップは不要です。
Claude Desktop のセットアップ
- Claude Desktop を開き、Settings に移動します
- MCP セクションに移動します
- 次の設定で新しい MCP サーバーを追加します:
- サーバー名:
virtual-fly-brain(または任意の名前) - 種類:HTTP
- サーバー URL:
https://vfb3-mcp.virtualflybrain.org
- サーバー名:
設定 JSON(別の方法):
{
"mcpServers": {
"virtual-fly-brain": {
"type": "http",
"url": "https://vfb3-mcp.virtualflybrain.org",
"tools": ["*"]
}
}
}
Claude Code のセットアップ
-
Claude の設定ファイルを見つけます:
- macOS/Linux:
~/.claude.json - Windows:
%USERPROFILE%\.claude.json
- macOS/Linux:
-
VFB3-MCP サーバーを設定に追加します:
{
"mcpServers": {
"virtual-fly-brain": {
"type": "http",
"url": "https://vfb3-mcp.virtualflybrain.org",
"tools": ["*"]
}
}
}
- 変更を反映するため、Claude Code を再起動します
GitHub Copilot のセットアップ
- GitHub Copilot がインストールされた VS Code を開きます
- Settings を開きます(
Ctrl/Cmd + ,) - 設定検索で 「MCP」 を検索します
- MCP Servers の設定を見つけます
- サーバー URL を追加します:
https://vfb3-mcp.virtualflybrain.org - 「Virtual Fly Brain」などの名前を付けます
別の JSON 設定方法(mcp.json 内):
{
"servers": {
"virtual-fly-brain": {
"type": "http",
"url": "https://vfb3-mcp.virtualflybrain.org"
}
}
}
Visual Studio Code(MCP 拡張機能を使用)
- マーケットプレイスから VS Code 用の MCP 拡張機能をインストールします
- コマンドパレットを開きます(
Ctrl/Cmd + Shift + P) - **「MCP: Add server」**と入力して選択します
- サーバーの種類として **「HTTP」**を選択します
- サーバーの詳細を入力します:
- 名前:
virtual-fly-brain - URL:
https://vfb3-mcp.virtualflybrain.org
- 名前:
- プロンプトが表示されたら、保存して VS Code を再起動します
その他の MCP クライアント
HTTP サーバーに対応した MCP 互換クライアントの場合:
{
"mcpServers": {
"virtual-fly-brain": {
"type": "http",
"url": "https://vfb3-mcp.virtualflybrain.org",
"tools": ["*"]
}
}
}
Gemini のセットアップ
Google Gemini で Virtual Fly Brain(VFB)Model Context Protocol(MCP)サーバーを使うには、MCP に対応したカスタム Python/Node.js クライアントを介して接続できます。
注: 現在、Gemini のウェブインターフェースと MCP の直接連携には対応していません。接続には開発者向けツールが必要です。
オプション 1:Python を使用
アプリケーション開発では、mcp および google-genai ライブラリを使って接続します。
セットアップ:pip install google-genai mcp
実装:ストリーム可能な HTTP トランスポートを JSON レスポンスモード(例:enableJsonResponse: true)で使用し、VFB の URL に接続してツールを一覧表示します。そのスキーマを関数宣言として Gemini モデルに渡します。
接続のテスト
設定が完了したら、次のような質問を AI アシスタントにして、VFB3-MCP が動作していることを確認できます。
基本的なクエリ:
- 「ニューロン VFB_jrcv0i43 の情報を取得して」
- 「ハエの脳の髄質に関連する用語を検索して」
- 「触角葉にはどのようなニューロンがありますか?」
高度なクエリ:
- 「キノコ体に接続するすべてのニューロンを見つけて」
- 「遺伝子 repo の発現パターンを表示して」
- 「嗅覚処理に関わる脳領域は何ですか?」
- 「ニューロン VFB_00101567 の接続解析を実行して」
検索例:
- 「視覚系の成体ニューロンを検索して」
- 「中心複合体で発現する遺伝子を見つけて」
- 「VFB で利用可能なすべてのテンプレートを表示して」
ニューロン名、脳領域、遺伝子発現、接続情報などの VirtualFlyBrain データを含む応答が表示されれば、セットアップは成功です!
詳しい使用例と API 呼び出しについては、examples.md をご覧ください。
ワークフローの例
- 用語を検索する:「視葉のニューロンを検索して」
- 詳細情報を取得する:「VFB_00101567 の情報を取得して」
- 特定のクエリを実行する:「VFB_00101567 の接続を表示して」
- 関係を調べる:「キノコ体ではどのニューロンがシナプスを形成しますか?」
🛠️ 利用可能なツール
MCP サーバーは、次のツールを公開しています(Claude や Copilot などのアシスタントで利用できます)。
get_term_info— VFB ID の詳細なメタデータを取得しますrun_query— VFB ID の事前計算済み解析クエリを実行します(get_term_infoのQueriesフィールドを参照)search_terms— フィルタリング/ブーストオプションを使って、テキストで VFB エンティティを検索します。virtualflybrain.org 自体が実行する検索と同じですlist_search_facets—search_termsのfilter_types/exclude_types/boost_types/demote_typesで指定できるfacets_annotation型の名前を一覧表示します。部分文字列での絞り込みも可能ですresolve_entity— 解決されていない FlyBase 関連のクエリ文字列(例:P{VT054895-GAL4.DBD}、ドライバー系統名、細胞型ラベル)を VFB/FlyBase の ID とメタデータに解決します(VFB 用語検索とは異なります)resolve_combination— 解決されていない split-GAL4 の組み合わせ名または同義語を、その構成要素の ID に解決しますlist_connectome_datasets— 利用可能なコネクトームデータセット(例:Hemibrain、FAFB)を一覧表示しますquery_connectivity— 上流/下流フィルターを使って、コネクトームデータセット全体の接続を照会します。最も強い接続から順に並べたページと、見つかったすべての接続から算出した要約を返しますget_predicted_neurotransmitters— インスタンスごとのコネクトーム予測から、ニューロンクラス(およびそのサブクラス)の予測神経伝達物質を取得します。インスタンスごと、または平均信頼度を集計した形で取得でき、データセットごとの分割も指定できますget_known_neurotransmitters— オントロジーの分類から、ニューロンクラスとそのサブクラスの既知の(キュレーション済み)神経伝達物質を取得します(信頼度はありません)get_hierarchy— VFB ID のオントロジー階層をたどります。part_of(領域/組織構造)および/またはsubclass_of(細胞型分類)の祖先および/または子孫を取得します
🛠️ ローカルインストール
前提条件
- Node.js 18 以降
- npm または yarn
インストール手順
-
リポジトリをクローンします:
git clone https://github.com/VirtualFlyBrain/VFB3-MCP.git cd VFB3-MCP -
依存関係をインストールします:
npm install -
プロジェクトをビルドします:
npm run build -
サーバーを起動します:
npm start
プラットフォーム別のセットアップ
Claude Desktop(ローカル開発)
Claude Desktop でローカル開発するには、MCP 設定に以下を追加します。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"vfb3-mcp": {
"command": "node",
"args": ["/absolute/path/to/VFB3-MCP/dist/index.js"]
}
}
}
Claude Code
claude.json ファイルに追加します:
{
"mcpServers": {
"vfb3-mcp": {
"command": "node",
"args": ["/absolute/path/to/VFB3-MCP/dist/index.js"]
}
}
}
Visual Studio Code
- VS Code 用の MCP 拡張機能をインストールします
Cmd + Shift + P(macOS)またはCtrl + Shift + P(Windows/Linux)を押します- MCP: Add server… を選択します
- Command タイプを選択します
- 次のように入力します。
- Name:
vfb3-mcp - Command:
node - Arguments:
/absolute/path/to/VFB3-MCP/dist/index.js
- Name:
GitHub Copilot
Copilot の設定で MCP サーバーの URL をローカルサーバーに向けるように設定します:
http://localhost:3000
HTTP モードのテストの場合:
MCP_MODE=http PORT=3000 node dist/index.js
Docker のインストール
Docker Compose を使用(推奨):
docker-compose up --build
Docker を手動でビルド:
# Build the image
docker build -t vfb3-mcp .
# Run the container
docker run -p 3000:3000 vfb3-mcp
ビルド済みイメージをプル:
docker pull virtualflybrain/vfb3-mcp:latest
docker run -p 3000:3000 virtualflybrain/vfb3-mcp:latest
使用可能なツール
get_term_info
ID を使用して VFB 用語の詳細情報を取得します。
パラメーター:
id(文字列):VFB ID(例:「VFB_jrcv0i43」)force_refresh(ブール値、任意):応答キャッシュをバイパスして再計算します(コストとホワイトリストに関する注意点については、以下のrun_queryを参照してください)
run_query
VFB データに対して定義済みのクエリを実行します。
パラメーター:
id(文字列または配列):1 つ以上の VFB ID(例:「VFB_00101567」)query_type(文字列):エンティティのQueries配列に含まれるクエリタイプ(例:「PaintedDomains」)queries(配列、任意):混在するバッチクエリ用の{id, query_type}ペアlimit(数値、任意):呼び出しごとの最大行数(デフォルトは 25)。実際の合計数は常にcountで返されます。すべての行を取得するには 0 を指定します(それでも約 25000 件が上限です)offset(数値、任意):ページング用の行オフセット(デフォルトは 0)。次のページを取得するには、offset += limitで再実行しますinclude_images(ブール値、任意):thumbnail列を含めます(デフォルトは false — 容量節約のため除外され、再追加方法は応答の_noteに記載されます)force_refresh(ブール値、任意):応答キャッシュをバイパスして再計算します。コストがかかるため、古い結果または失敗した結果を返した呼び出しを一度だけ再試行する場合にのみ使用してください。失敗したクエリはすでに自動で 1 回再試行されています。サーバーの送信元 IP が v3-cached のホワイトリストに登録されている必要があります。ホワイトリストに登録されていないホストからは、nginx がヘッダーを無視し、キャッシュ済みのエントリーを変更せずに返します。
応答では count とともに count_status が報告されます。値は exact(count は実際の合計数)、row_count(合計数が提供されていないため、count は返された行数のみ)、または unavailable(クエリが上流で失敗し、count は -1)です。-1 はエラーを示すものであり、空の結果セットではありません。その旨は _note に文章で記載されます。
FlyBase のストックと split-GAL4 組み合わせの論文も、run_query のクエリタイプです。FindStocks と FindComboPublications を使用します。split 組み合わせ(FBco)については、FindStocks は両方のヘミドライバーを含むストックがあればそれを返し、なければ各ヘミドライバーのストックにフォールバックします。どちらに一致したかは match 列に示されます。
search_terms
VFB 用語を検索します。VFBquery の /search を呼び出します。これは virtualflybrain.org 自体が実行する検索で、同じ Solr クエリ、同じフィルターとブースト、同じ最終ソートが適用されるため、ここでの結果はサイト上でユーザーに表示される結果と同じです。非推奨の用語はサーバー側ですでに除外されているため、その指定は不要です。
パラメーター:
query(文字列):検索クエリ(例:"medulla")filter_types(配列、任意):これらのfacets_annotationタイプすべてに一致する結果のみを残します(AND 論理)exclude_types(配列、任意):これらのfacets_annotationタイプのいずれかに一致する結果を除外します(OR 論理)boost_types(配列、任意):これらのタイプに一致する結果を、他の結果を除外せずにランキング上位へ引き上げますdemote_types(配列、任意):これらのタイプに一致する結果を、除外せずにランキング下位へ移動します。boost_typesにも含まれるタイプには適用されませんunique(ブール値、任意):用語ごとに 1 行を返します(デフォルトは true)。false にすると、一致した同義語ごとに 1 行を返します。どの名前が一致したかがわかる一方、ID は重複しますstart(数値、任意):ページの開始インデックス(デフォルトは 0)rows(数値、任意):返す行数(デフォルトは 150、最大 1000)minimize_results(ブール値、任意):最初の確認用に、フィールドを減らして上位 10 件のみを返します(デフォルトは false)auto_fetch_term_info(ブール値、任意):クエリが用語 1 件の名前と完全一致した場合、その用語の情報も取得します(デフォルトは false)
タイプ名はライブ語彙から取得されます。200 を超えるタイプがあり、データの追加に伴って変わるため、推測するのではなく list_search_facets を呼び出してください。レスポンスでは、returned(返された行数)、total(ランキングされたリストの長さ)、distinct_terms、solr_matches(ランキング前に Solr が一致と判定した用語数)がそれぞれ報告されるため、ページが途中で切り詰められていても、結果セットが少ないと誤解することはありません。
list_search_facets
上記 4 つのタイプフィルターで使用できる、有効な facets_annotation タイプ名をライブ語彙から取得して一覧表示します。
パラメーター:
contains(文字列、任意):大文字・小文字と区切り文字を区別しない部分文字列フィルター(例:"neuron"、"nervous system")
デプロイされた VFBquery が /facets エンドポイントより古い場合は、サーバーに同梱されたスナップショットにフォールバックし、その旨を示します。スナップショットの結果に含まれない名前も、有効な場合があります。
query_connectivity
すべてのコネクトームデータセットにわたって、ニューロンのクラス間のシナプス結合を検索します。upstream_type または downstream_type の少なくとも一方が必要です。結果は強い順にランク付けされ、ページ分割されます。limit 件の行に加えて、見つかったすべての結合を対象に算出した summary(重みの最小値/最大値/合計/平均、データセットごとの件数、ニューロンの種類数、上位のクラスペア)が返されます。そのため、行が途中で切り詰められていても、合計値は正確です。広範なクエリでは数万件の結合が見つかることがあるため、ページ分割はデフォルトで有効になっています。
パラメーター:
upstream_type/downstream_type(文字列、任意):ニューロンのクラス OWL ID またはラベル。解剖学的領域は指定できませんweight(数値、任意):シナプス数の最小値(5 を推奨。両端を指定する場合は ≥50 を使用してください)group_by_class(ブール値、任意):ニューロンペアではなくクラスペアごとに集計します。広範なクエリでの最初の呼び出しには、通常こちらが適していますexclude_dbs(配列、任意):除外するデータセットの記号(["hb","fafb"]を推奨)。list_connectome_datasetsを参照してくださいlimit(数値、任意):返す行数。強い順に並びます(デフォルトは 50、0ですべて)offset(数値、任意):ランキング内で取得を開始する行(デフォルトは 0)
get_predicted_neurotransmitters
ニューロンクラス(クラス自体またはそのサブクラス)の、ニューロンごとのコネクトーム予測に基づく予測神経伝達物質です(再構築された各ニューロンには、信頼度付きの予測神経伝達物質が付与されています)。デフォルトではクラスごとのフラットな行に集約されます(細胞タイプ × 神経伝達物質ごとに1行で、instances、percent_of_class、mean_confidenceを含みます)。aggregate=falseにするとニューロンごとに1行になります。split_by_dataset=trueにするとdataset列が追加され、コネクトーム間の一致を確認できます。神経伝達物質はGO分泌項(nt_id/nt_label)であり、get_known_neurotransmittersと同じID空間を使用します。信頼度を含まないキュレーション済み分類であるget_known_neurotransmittersとは異なります。
パラメーター:
neuron_type(文字列、必須):ニューロンクラスのOWL IDまたはラベル(クラスとそのサブクラスを意味します)aggregate(ブール値、任意):クラスごとの行にする場合はtrue(デフォルト)、ニューロンごとの行にする場合はfalsesplit_by_dataset(ブール値、任意):true(集約時のみ)にすると、(細胞タイプ、神経伝達物質、データセット)ごとに1行になりますexclude_dbs(配列、任意):除外するデータセットのシンボル(デフォルトは["hb","fafb"]、すべてを対象にする場合は[])min_confidence(数値、任意):この信頼度を下回る予測を除外します(0~1)
get_known_neurotransmitters
ニューロンクラスとそのサブクラスの既知(キュレーション済み)神経伝達物質です。ニューロンごとの予測ではなく、オントロジーの分類に基づくため、信頼度はありません。(細胞タイプ、神経伝達物質)ごとに1行で、{cell_type_id, cell_type, nt_id, nt_label}の形式です。nt_idはGO分泌項です。オントロジーで何も定義されていない場合は空になります(データに基づく結果を確認するにはget_predicted_neurotransmittersをお試しください)。
パラメーター:
neuron_type(文字列、必須):ニューロンクラスのOWL IDまたはラベル(クラスとそのサブクラスを意味します)
🧠 VirtualFlyBrainについて
VirtualFlyBrain(VFB)は、Drosophila melanogasterの神経生物学に関する包括的なナレッジベースです。3D画像、遺伝子発現データ、神経接続情報、およびハエの脳研究向けの標準化された用語を提供します。
📖 ドキュメント
- LLM向けガイダンス:このMCPを効果的に使用するためのAIアシスタント向けガイド
- 例:使用例と統合ガイド
- 技術ドキュメント:インフラストラクチャ、デプロイ、開発の詳細
📄 ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。