DSR MCP 服务器
一个MCP(模型上下文协议)服务器,提供了一套全面的工具,用于查询、操作和分析深度状态表示(DSR)图。该服务器使人工智能助手能够通过标准化的MCP工具,实时进行图操作并智能管理节点关系,从而与机器人感知和场景理解数据进行交互。
工具
| 工具名称 | 描述 | 参数 |
|---|---|---|
| 检查DSR连接 | 检查DSR连接并返回状态信息 | — |
| 获取所有节点 | 从DSR图中检索所有节点 | — |
| 按类型获取节点 | 根据节点类型过滤(例如:机器人、人、房间) | node_type: str |
获取节点详情 获取特定节点的详细信息,包括属性和边 node_identifier: str | ||
| 获取所有边 | 从DSR图中检索所有边 | — |
| 插入节点 | 在DSR图中插入一个新节点 | name: str, node_type: str |
插入边(或:插入边缘) 在DSR图中,为两个节点之间插入一条新边 origin_id: str, destination_id: str, edge_type: str | ||
插入边属性 在DSR图中插入或更新边的属性 origin_id: str, destination_id: str, attribute_name: str, attribute_value: str, attribute_type: str = 'string' | ||
更新节点 在DSR图中更新节点的新属性 node_id: str, attribute_name: str, attribute_value: str, attribute_type: str = 'string' | ||
| 删除节点 | 从DSR图中删除一个节点 | node_id: str |
| 删除边(或边删除) | 从DSR图中删除一条边 | origin_id: str, destination_id: str, edge_type: str |
| 保存图表 | 将当前DSR图的状态保存到JSON文件中 | 交互式选择文件路径 |
资源
资源提供对DSR图数据的只读且高效访问方式。它们非常适合在不修改图状态的情况下查询信息。
| 资源URI | 描述 | 返回结果 |
|---|---|---|
\dsr://nodes\ 翻译成中文可以是:“DSR(分布式系统资源)节点”。不过,这里的“dsr”可能是一个特定上下文或系统中的术语,具体翻译可能需要根据上下文进行调整。如果“dsr”没有特定含义,那么“DSR://nodes”可以理解为指向某个分布式系统或资源中的节点列表或集合的地址或标识 | DSR图中的所有节点及其基本信息 | 包含节点数组、计数和DSR名称的JSON |
\dsr://nodes/type/{type}\ 可以翻译为:“DSR协议:节点/类型/{类型}”。不过,这里的“DSR”和“nodes”等术语可能需要根据具体上下文来确定其准确含义,但基于常见的技术用语,这个翻译是相对通用的。如果“DSR”是某个特定系统或协议的缩写,那么可能需要更具体的翻译 | 按类型过滤的节点,包含完整详细信息(属性、边) | 包含详细节点数组、计数和类型的JSON |
| dsr://nodes/{node_id} 翻译为中文是:“DSR协议://节点/{节点ID}” | 关于特定节点的详细信息 | 包含节点详细信息、属性及连接边的JSON |
| dsr://edges 翻译成中文可以是:“DSR协议下的边缘(或边界)服务”。不过,这里的“edges”可能是一个特定上下文或技术环境中的术语,具体翻译可能需要根据上下文进行调整。在没有具体上下文的情况下,“DSR协议下的边缘服务”是一个较为通用的翻译 | 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 run dsr_mcp_server使用 pip 安装后运行
python3 -m dsr_mcp_server服务器将启动并尝试使用配置的参数自动初始化DSR连接。
Claude Desktop/Cursor/VSCode的配置示例
使用紫外线(推荐)
将此配置添加到您的应用程序设置(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的连接通过自动初始化和连接监控来完成。
- 节点属性经过过滤,以排除内部渲染属性(颜色、深度、高度、级别等),从而生成更清晰的输出。
- 边关系支持多种类型,包括空间(邻近)、归属(拥有)、同一性(是)和关联(与……一起)语义。
- 图操作通过DSR库内置的验证机制保持一致性。
- 所有工具均返回标准化的JSON响应,包含成功/错误状态及详细信息。
- 通过MCP激发机制实现图形导出操作中的交互式文件选择。
- 资源 提供只读且幂等的DSR图数据访问方式,相比其他工具,具有更高效的缓存机制和更低的开销。使用资源进行数据查询,使用工具进行数据修改。
贡献
- 克隆(或“分叉”)该仓库
- 创建一个特性分支
- 按照编码规范进行修改
- 如适用,请添加测试
- 提交拉取请求
支持
对于问题、疑问或贡献,请参考 项目的错误跟踪系统(或问题追踪器) 或者联系开发团队。
