使用说明
黑曜石存储器MCP
MCP(模型上下文协议)服务器,将AI内存存储为Markdown文件,以便在Obsidian的图形视图中可视化。使用TypeScript和Docker构建,易于部署。
关于
此项目是的修改版本 Anthropic的存储服务器 它已经适应了黑曜石的融合。原始服务器以JSON格式存储内存,而此版本将它们存储为与Obsidian兼容的单独Markdown文件 [[link]] 图形可视化语法。
与原始版本相比的主要变化
- 存储格式:从JSON更改为单个Markdown文件
- 黑曜石融合:已添加
[[link]]关系语法 - YAML前端编辑器:元数据存储在frontmatter而不是JSON中
- 文件结构:每个实体都成为一个独立的实体
.md文件 - Docker支持:增加了容器化,便于部署
- HTTP传输:通过HTTP公开MCP,以实现更广泛的兼容性
特性
- Markdown存储:个人
.md每个实体的文件 - 黑曜石融合:用途
[[link]]图形可视化语法 - 知识图谱:存储实体、关系和观察结果
- 搜索功能:查询所有存储的内存
- YAML前端编辑器:元数据存储在frontmatter中
- Docker支持:具有持久存储功能的生产就绪容器
- HTTP传输:用于MCP通信的REST API端点
- 健康检查:内置监控端点
快速开始
选项1:使用Docker运行(推荐)
# Clone the repository
git clone https://github.com/Ntrakiyski/obsidian-memory-mcp.git
cd obsidian-memory-mcp
# Build and start the container
docker-compose up -d
# Verify it's running
curl http://localhost:6666/health
选项2:本地运行(开发)
# Clone the repository
git clone https://github.com/Ntrakiyski/obsidian-memory-mcp.git
cd obsidian-memory-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Start the server
npm start
# Server runs on http://localhost:6666
存储格式
每个实体都存储为一个单独的Markdown文件,其中包含:
- YAML 前置元数据 元数据(entityType、已创建、已更新)
- 黑曜石兼容
[[links]]关系 - 有组织的部分 用于观察和关系
实体文件示例(John_Doe.md):
---
entityType: person
created: 2025-07-10
updated: 2025-07-10
---
# John Doe
## Observations
- Works at Tech Corp
- Expert in TypeScript
- Lives in Tokyo
## Relations
- [[Manager of::Alice Smith]]
- [[Collaborates with::Bob Johnson]]
- [[Located in::Tokyo Office]]
配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT |
6666 |
HTTP服务器端口 |
MEMORY_DIR |
/app/data/root_vault |
用于存储Markdown文件的目录 |
NODE_ENV |
production |
节点环境 |
Docker配置
这 docker-compose.yml 包括:
- 命名卷
obsidian-data必定./data在主机上 - 健康检查监测
- 自动重启策略
- 端口映射
6666:6666
数据持久化
文件存储在:
- 主机:
./data/root_vault/(绑定支架) - 容器:
/app/data/root_vault/
这允许:
- 从主机访问文件
- 跨容器重启的数据持久性
- 易于备份和管理
API 参考
端点
GET/健康
健康检查端点。
curl http://localhost:6666/health
答复:
{
"status": "ok",
"server": "memory-server",
"storageDir": "/app/data/root_vault"
}
POST/mcp
用于工具调用的MCP协议端点。
curl -X POST http://localhost:6666/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
可用工具
- create_entities -在知识图中创建新实体
- 创建关系 -在实体之间创建关系
- 添加观察结果 -向现有实体添加观察结果
- 删除内容 -删除实体和相关数据
- 删除观察 -删除具体观察结果
- 删除关系 -删除关系
- read_graph -获取整个知识图谱
- 搜索节点 -按查询搜索实体
- open_nodes -按名称获取特定实体
使用Claude Desktop
选项1:直接Node.js(本地)
在Claude Desktop中配置:
{
"mcpServers": {
"obsidian-memory": {
"command": "node",
"args": ["/full/path/to/obsidian-memory-mcp/dist/index.js"],
"env": {
"MEMORY_DIR": "/path/to/your/obsidian/vault"
}
}
}
}
选项2:HTTP传输(Docker或远程)
{
"mcpServers": {
"obsidian-memory-http": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-http"],
"env": {
"MCP_SERVER_URL": "http://localhost:6666/mcp"
}
}
}
}
使用黑曜石
- 使用上述选项之一配置Claude Desktop或MCP客户端
- 重新启动克劳德桌面
- 使用MCP内存工具创建实体和关系
- 打开Obsidian并查看图表
知识图将通过以下方式可视化:
- 实体文件作为节点
[[links]]作为边缘- 不同实体类型的不同颜色(如果在黑曜石中配置)
Docker管理
启动服务
# Start in detached mode
docker-compose up -d
# Start with logs visible
docker-compose up
停止服务
# Stop without removing volumes
docker-compose down
# Stop and remove volumes (deletes all data)
docker-compose down -v
更改后重建
docker-compose build
docker-compose up -d
查看日志
# All logs
docker-compose logs
# Follow logs
docker-compose logs -f
# Specific service
docker-compose logs obsidian-memory-mcp
检查状态
docker-compose ps
验证存储
# Check container is running
docker-compose ps
# Check health
curl http://localhost:6666/health
# Check volume exists
docker volume ls | grep obsidian
# Check host data directory
ls -la data/
ls -la data/root_vault/
发展
命令
# Install dependencies
npm install
# Build TypeScript
npm run build
# Start production server
npm start
# Watch mode (auto-rebuild on changes)
npm run watch
# Type checking
npm run typecheck
# Clean build artifacts
npm run clean
项目结构
obsidian-memory-mcp/
├── src/
│ ├── index.ts # Main entry point
│ ├── types.ts # TypeScript type definitions
│ ├── storage/
│ │ └── MarkdownStorageManager.ts # Storage layer
│ └── utils/
│ ├── pathUtils.ts # Path handling utilities
│ └── markdownUtils.ts # Markdown parsing/generation
├── dist/ # Compiled JavaScript
├── data/ # Persistent storage (bind mount)
├── docker-compose.yml # Docker configuration
├── Dockerfile # Docker image definition
├── package.json # NPM dependencies
└── tsconfig.json # TypeScript configuration
故障排除
权限被拒绝错误
症状: EACCES: permission denied 或 ENOENT: no such file or directory
解决方案:
# Manually create directory with proper permissions
mkdir -p data/root_vault
chmod 755 data/root_vault
docker-compose restart obsidian-memory-mcp
容器无法启动
症状:容器立即退出或显示错误
解决方案:
# Check logs for errors
docker-compose logs obsidian-memory-mcp
# Rebuild and restart
docker-compose down -v
docker-compose build
docker-compose up -d
文件不持久
症状:文件在容器运行期间存在,但在重新启动后消失
解决方案:
# Verify volume is properly mounted
docker inspect obsidian-memory-mcp | grep -A 20 Mounts
# Look for: "Type": "volume" and "Name": "obsidian-data"
健康检查失败
症状: docker-compose ps 显示不健康
解决方案:
# Check if port is in use
lsof -i :6666
# Check if server is responding
curl http://localhost:6666/health
# Restart the service
docker-compose restart obsidian-memory-mcp
学分
该项目基于 Anthropic的存储服务器 来自模型上下文协议服务器集合。我们感谢Anthropic在MIT许可下发布了原始实现。
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
原始存储服务器:版权所有(c)2024 Anthropic,PBC
黑曜石集成修改:版权所有(c)2025 Ntrakiyski
支持
对于问题和功能请求,请打开GitHub问题。
