首页库存知识图谱
使用MCP和知识图跟踪家中物品的实验。
特性
- Neo4j知识图谱:存储项目、位置、类别及其关系
- MCP服务器:通过模型上下文协议公开知识图
- 灵活的架构:跟踪具有购买日期、价值、数量和注释等属性的项目
- 丰富的查询:按位置、类别查找项目,或获取详细的项目信息
先决条件
- Neo4j数据库:安装并运行Neo4j
- 下载自 neo4j.com/下载 - 或者使用Docker: docker run -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/your_password neo4j:latest
- Python 3.14+:此项目需要
设置
- 克隆并导航到项目:
cd /run/media/drews/src/home-alog/home-alog1.安装Neo4j
选项A:Docker(最简单)
docker run -p 7474:7474 -p 7687:7687 \
-e NEO4J_AUTH=neo4j/your_password \
neo4j:latest选项B:下载
- 访问 neo4j.com/下载
- 安装Neo4j桌面版或社区版
2.配置环境
cp .env.example .env
# Edit .env with your Neo4j password3.安装依赖项
pip install -e .4.填充样本数据
python examples/populate_sample_data.py这将创建:
- 5个地点(客厅、厨房、车库、工具箱、厨房抽屉)
- 4个类别(电子产品、工具、厨房、家具)
- 6个有关系的项目
5.运行MCP服务器
python -m home_alog.server.mcp_server6.连接到克劳德桌面
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"home-alog": {
"command": "python",
"args": ["-m", "home_alog.server.mcp_server"],
"cwd": "/run/media/drews/src/home-alog/home-alog/src",
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "your_password"
}
}
}
}项目结构
home-alog/
├── src/home_alog/
│ ├── database/
│ │ ├── __init__.py # Database package exports
│ │ ├── connection.py # Neo4j connection manager
│ │ ├── operations.py # Graph CRUD operations
│ │ └── schema.py # Graph schema definitions
│ ├── server/
│ │ ├── __init__.py # Server package exports
│ │ └── mcp_server.py # MCP server implementation
│ └── __init__.py # Main package exports
├── examples/
│ └── populate_sample_data.py # Sample data script
├── .env.example # Environment template
├── pyproject.toml # Project dependencies
└── README.md # This file可用工具
MCP服务器提供以下工具:
create_item-将新项目添加到库存create_location-创建一个位置(房间、架子、盒子等)create_category-创建项目类别link_item_to_location-将物品放置在某个位置link_item_to_category-将项目分配到类别find_items_in_location-查找某个位置的所有项目find_items_by_category-查找类别中的所有项目get_item_details-获取详细的商品信息
示例用法
看 examples/populate_sample_data.py 以获取用示例数据填充图形的完整示例。
图形架构
节点类型
- 物品:名称、描述、购买日期、价值、数量、备注
- 位置:名称、类型(房间/架子/盒子)、描述
- 类别:名称、描述
- 人:名称
关系类型
- LOCATED IN:项目→ 位置
- BELONGS_TO:项目→ 类别
- 所有权_由:项目→ 人
- 包含:位置→ 项目(与LOCATED_IN相反)
发展
要直接浏览图表,请执行以下操作:
- 打开Neo4j浏览器http://localhost:7474
- 运行Cypher查询,例如:
MATCH (i:Item)-[:LOCATED_IN]->(l:Location)
RETURN i.name, l.name