dsr_mcp_server について
dsr_mcp_serverは、ロボット認識やシーン理解に使われるDeep State Representation(DSR)グラフとAIアシスタントを接続します。グラフの検索・編集操作に加え、読み取り専用リソースも提供します。
主な機能
- 01グラフノードの取得と絞り込み
- 02ノード属性と接続エッジの確認
- 03ノードやエッジの追加・更新・削除
- 04グラフをJSONファイルに保存
- 05リソースからグラフデータを読み取り
活用シーン
- 01ロボットやシーンのグラフ要素を調べる
- 02種類別にノードを検索して関係を確認
- 03シーン操作中にグラフ属性を更新
- 04現在のグラフ状態をエクスポート
MCP 対応
DSRグラフの操作をMCPツールとして公開し、ノードとエッジを読み取る読み取り専用リソースも提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
DSR MCP サーバー
Deep State Representation(DSR)グラフのクエリ、操作、分析を行うための包括的なツールセットを提供するMCP(Model Context Protocol)サーバーです。このサーバーにより、AI アシスタントは標準化されたMCPツールを使ってロボットの知覚データやシーン理解データを操作でき、リアルタイムのグラフ操作とインテリジェントなノード間関係の管理が可能になります。
ツール
| ツール名 | 説明 | パラメーター |
|---|---|---|
| check_dsr_connection | DSR接続を確認し、ステータス情報を返します | — |
| get_all_nodes | DSRグラフからすべてのノードを取得します | — |
| get_nodes_by_type | ノードの種類(例:ロボット、人、部屋)で絞り込みます | node_type: str |
| get_node_details | 属性とエッジを含む、特定のノードの詳細情報を取得します | node_identifier: str |
| get_all_edges | DSRグラフからすべてのエッジを取得します | — |
| insert_node | DSRグラフに新しいノードを挿入します | name: str, node_type: str |
| insert_edge | DSRグラフ内の2つのノード間に新しいエッジを挿入します | origin_id: str, destination_id: str, edge_type: str |
| insert_edge_attribute | DSRグラフ内のエッジの属性を挿入または更新します | origin_id: str, destination_id: str, attribute_name: str, attribute_value: str, attribute_type: str = 'string' |
| update_node | DSRグラフ内のノードを新しい属性で更新します | node_id: str, attribute_name: str, attribute_value: str, attribute_type: str = 'string' |
| delete_node | DSRグラフからノードを削除します | node_id: str |
| delete_edge | DSRグラフからエッジを削除します | origin_id: str, destination_id: str, edge_type: str |
| save_graph | DSRグラフの現在の状態をJSONファイルに保存します | ファイルパスを対話的に選択 |
リソース
リソースを使用すると、DSR グラフデータに読み取り専用で効率的にアクセスできます。グラフの状態を変更せずに情報を照会する場合に最適です。
| リソース URI | 説明 | 戻り値 |
|---|---|---|
| dsr://nodes | 基本情報を含む、DSR グラフ内のすべてのノード | ノード配列、件数、DSR 名を含む JSON |
| dsr://nodes/type/{type} | タイプで絞り込んだ、詳細情報(属性、エッジ)を含むノード | 詳細なノード配列、件数、タイプを含む JSON |
| dsr://nodes/{node_id} | 特定のノードに関する詳細情報 | ノードの詳細、属性、接続されたエッジを含む JSON |
| dsr://edges | DSR グラフ内のすべてのエッジ | エッジ配列、件数、DSR 名を含む JSON |
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
DSR_AGENT_ID | 42 | DSR 接続に使用する一意のエージェント識別子 |
DSR_NAME | mcp_server | 接続先の DSR グラフ名 |
SERVER_HOST | 127.0.0.1 | サーバーのホストアドレス |
SERVER_PORT | 3000 | サーバーのポート番号 |
インストール
依存関係
注: 互換性を確保するため、仮想環境内で Cortex をビルドする必要があります。
cd dsr_mcp_server
source .venv/bin/activate
cd ${CORTEX_DIR} && make -p build && cd build
cmake .. && make -j$(nproc) && sudo make install
uv でインストール(推奨)
リポジトリをクローンし、uv でインストールします:
git clone https://github.com/grupo-avispa/dsr_mcp_server.git
cd dsr_mcp_server
uv sync
または、リポジトリから直接インストールします:
uv add git+https://github.com/grupo-avispa/dsr_mcp_server.git
pip でインストール
パッケージを次のモードでインストールします:
git clone https://github.com/grupo-avispa/dsr_mcp_server.git
cd dsr_mcp_server
python3 -m pip install .
または、リポジトリから直接インストールします:
python3 -m pip install git+https://github.com/grupo-avispa/dsr_mcp_server.git
使い方
uv で実行
uv run dsr_mcp_server
pip でインストールして実行
python3 -m dsr_mcp_server
サーバーが起動し、設定されたパラメーターを使用して DSR 接続の初期化を自動的に試みます。
Claude Desktop/Cursor/VSCode の設定例
uv を使用(推奨)
アプリケーションの設定(mcp.json)に、次の設定を追加します:
{
"dsr mcp server": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/dsr_mcp_server",
"dsr_mcp_server"
],
"env": {
"DSR_AGENT_ID": "42",
"DSR_NAME": "your_dsr_graph_name"
}
}
}
pip でインストールして使用
{
"dsr mcp server": {
"type": "stdio",
"command": "python3",
"args": [
"-m",
"dsr_mcp_server"
],
"env": {
"DSR_AGENT_ID": "42",
"DSR_NAME": "your_dsr_graph_name"
}
}
}
HTTP サーバーモード
HTTP トランスポートと連携する場合:
{
"servers": {
"dsr_mcp_server": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}
技術的な注意事項
- DSR への接続は、自動初期化と接続監視を行って実行されます。
- ノードの属性は、出力を見やすくするため、内部レンダリング用のプロパティ(color、depth、height、level など)を除外するようにフィルタリングされます。
- エッジの関係には、空間(near)、所有(has)、同一性(is)、関連(is_with)のセマンティクスなど、さまざまなタイプがサポートされています。
- グラフ操作の整合性は、DSR ライブラリに組み込まれた検証メカニズムによって維持されます。
- すべてのツールは、成功/エラーのステータスと詳細情報を含む、標準化された JSON レスポンスを返します。
- グラフのエクスポート操作では、MCP の elicit メカニズムを通じてファイルを対話的に選択できます。
- リソースは、ツールと比べて効率的なキャッシュと低いオーバーヘッドで、DSR グラフデータに読み取り専用かつ冪等にアクセスできます。データの照会にはリソースを、変更にはツールを使用してください。
コントリビューション
- リポジトリをフォークします
- 機能ブランチを作成します
- コーディング規約に従って変更を加えます
- 該当する場合はテストを追加します
- プルリクエストを送信します
サポート
問題や質問、コントリビューションについては、プロジェクトの課題トラッカーを参照するか、開発チームにお問い合わせください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。