知识图谱访问服务

Memory MCP Worker 是一个基于 Cloudflare Worker 的服务,实现了 MCP 协议,用于跨设备访问和管理知识图谱数据,支持 REST API 和 MCP 协议。

  • by 45black-Limited
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 45black/memory-mcp-worker

使用说明

内存MCP工作器

Cloudflare Worker实现了用于跨设备内存/知识图访问的MCP协议。

特性

  • MCP协议支持:通过HTTP传输使用Claude Code
  • REST API:从移动应用程序、桌面应用程序、n8n工作流访问
  • D1数据库:基于SQLite的持久存储
  • 全文搜索:搜索所有观察结果

快速开始

1.安装依赖项

npm install

2.创建D1数据库

# Create the database
wrangler d1 create memory-graph

# Copy the database_id from output to wrangler.toml

3.运行迁移

# Local development
npm run db:migrate:local

# Production
npm run db:migrate

4.部署

npm run deploy

5.设置API密钥机密

# Generate an API key
openssl rand -base64 32 | tr -d '/+=' | head -c 32

# Add as secret
echo "YOUR_API_KEY" | npx wrangler secret put API_KEY

6.配置克劳德代码

添加到您的 ~/.claude/settings.json 或 .mcp.json:

{
  "mcpServers": {
    "memory-remote": {
      "type": "http",
      "url": "https://memory-mcp.45black-limited.workers.dev/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

从本地内存迁移

  1. 导出本地内存:

    claude -p "Use mcp__memory__read_graph and output the raw JSON result" > scripts/local-memory.json
    
  2. 运行迁移:

    npx ts-node scripts/migrate-local-memory.ts
    

API终点

REST API(适用于应用程序)

端点 方法 描述
/api/entities GET 列出所有实体
/api/entities/:name GET 使用观察值获取实体
/api/entities POST 创建实体
/api/entities/:name/observations POST 添加观察结果
/api/relations GET 列出所有关系
/api/relations POST 创建关系
/api/search?q= GET 搜索实体和观察结果
/api/graph GET 获取完整图形
/api/import POST 批量导入

MCP协议

端点 方法 描述
/mcp POST MCP JSON-RPC请求
/mcp/sse MCP的GET SSE连接

MCP工具可用

  • create_entities -创建新实体
  • create_relations -在实体之间创建关系
  • add_observations -向实体添加观察结果
  • read_graph -阅读整个知识图谱
  • search_nodes -按查询搜索
  • open_nodes -按名称获取特定节点
  • delete_entities -删除实体
  • delete_relations -删除关系

认证

全部 /api/* 和 /mcp/* 端点需要通过API密钥进行身份验证。

支持的标头:

  • X-API-Key: YOUR_API_KEY
  • Authorization: Bearer YOUR_API_KEY

健康检查端点(/)是公开的。

移动应用集成

从移动应用程序获取示例:

const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://memory-mcp.45black-limited.workers.dev';

const headers = {
  'Content-Type': 'application/json',
  'X-API-Key': API_KEY,
};

// Search for a project
const response = await fetch(`${BASE_URL}/api/search?q=Household%20Planner`, { headers });
const data = await response.json();

// Add an observation
await fetch(`${BASE_URL}/api/entities/Household%20Planner/observations`, {
  method: 'POST',
  headers,
  body: JSON.stringify({
    contents: ['Added new budget category feature']
  })
});

n8n集成

n8n工作流程包括通过webhook查询Memoryneneneba API。

设置

  1. 导入 n8n-workflow-memory-api.json 进入n8n
  2. 创建“Header Auth”凭据:
    • 姓名: Memory MCP API Key
    • 标题名称: X-API-Key
    • 标题值: YOUR_API_KEY
  3. 将凭据分配给所有三个HTTP请求节点
  4. 激活工作流

端点

搜索 -POST到 /webhook/memory-search:

curl -X POST https://your-n8n-instance/webhook/memory-search \
  -H "Content-Type: application/json" \
  -d '{"query": "Household Planner"}'

获取实体 -POST到 /webhook/memory-entity:

curl -X POST https://your-n8n-instance/webhook/memory-entity \
  -H "Content-Type: application/json" \
  -d '{"name": "Household Planner"}'

获取完整图表 -POST到 /webhook/memory-graph:

curl -X POST https://your-n8n-instance/webhook/memory-graph \
  -H "Content-Type: application/json" \
  -d '{}'

创建实体 -POST到 /webhook/memory-create:

curl -X POST https://your-n8n-instance/webhook/memory-create \
  -H "Content-Type: application/json" \
  -d '{"name": "My Project", "entityType": "Project", "observations": ["First observation"]}'

添加观察结果 -POST到 /webhook/memory-observations:

curl -X POST https://your-n8n-instance/webhook/memory-observations \
  -H "Content-Type: application/json" \
  -d '{"name": "My Project", "contents": ["New observation 1", "New observation 2"]}'

创建关系 -POST到 /webhook/memory-relations:

curl -X POST https://your-n8n-instance/webhook/memory-relations \
  -H "Content-Type: application/json" \
  -d '{"from": "Project A", "to": "Project B", "relationType": "depends_on"}'

删除实体 -POST到 /webhook/memory-delete:

curl -X POST https://your-n8n-instance/webhook/memory-delete \
  -H "Content-Type: application/json" \
  -d '{"name": "Entity Name"}'

删除关系 -POST到 /webhook/memory-delete-relation:

curl -X POST https://your-n8n-instance/webhook/memory-delete-relation \
  -H "Content-Type: application/json" \
  -d '{"from": "Entity A", "to": "Entity B", "relationType": "relation_type"}'

发展

# Start local dev server
npm run dev

# Typecheck
npm run typecheck

建筑

┌─────────────────────────────────────────┐
│         Cloudflare Worker               │
│      memory-mcp.45black.workers.dev     │
├─────────────────────────────────────────┤
│  Hono Framework                         │
│  ├── /api/* → REST API                  │
│  └── /mcp   → MCP Protocol              │
├─────────────────────────────────────────┤
│  Cloudflare D1 (SQLite)                 │
│  ├── entities                           │
│  ├── observations                       │
│  ├── relations                          │
│  └── observations_fts (full-text)       │
└─────────────────────────────────────────┘