Obsidian记忆存储服务器

一个将AI记忆存储为Markdown文件以便在Obsidian图形视图中可视化的服务器,支持Docker部署和HTTP通信。

  • by Ntrakiyski
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Ntrakiyski/obsidian-memory-mcp

使用说明

黑曜石存储器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"}'

可用工具

  1. create_entities -在知识图中创建新实体
  2. 创建关系 -在实体之间创建关系
  3. 添加观察结果 -向现有实体添加观察结果
  4. 删除内容 -删除实体和相关数据
  5. 删除观察 -删除具体观察结果
  6. 删除关系 -删除关系
  7. read_graph -获取整个知识图谱
  8. 搜索节点 -按查询搜索实体
  9. 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"
      }
    }
  }
}

使用黑曜石

  1. 使用上述选项之一配置Claude Desktop或MCP客户端
  2. 重新启动克劳德桌面
  3. 使用MCP内存工具创建实体和关系
  4. 打开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问题。