Roam Research 服务器 API 为开发者提供了强大的功能,可与 Roam Research 图纸进行交互。它实现了 Model Context Protocol (MCP),让开发者能以编程方式访问和操作 Roam 研究数据。本文档将详细介绍服务器提供的各类工具、其功能、参数、输入输出格式以及错误处理机制。
Roam Research 服务器 API 实现了 Model Context Protocol (MCP),允许开发者通过编程方式访问和操作 Room 研究数据。以下将详细介绍其提供的各种工具。
需要以下依赖:
const response = await fetch('/api/create-block', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"page_title_uid": "My Page",
"string": "New block content"
})
});
const response = await fetch('/api/query', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"query": "SELECT * FROM blocks WHERE content LIKE '%test%'"
})
});
try {
const response = await fetch('/api/search-page', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"string": "NonExistentPage"
})
});
} catch (error) {
console.error('Error:', error);
}
使用字符串内容查找特定块:
use_roam_search {
"string": "要搜索的字符串",
"page_title_uid": "页面标题或 UID(可选)"
}
根据页面标题进行搜索:
use_roam_page_search {
"string": "要搜索的页面标题",
"exact_match": boolean(可选,默认:false)
}
通过 UID 获取页面内容:
use_roam_page_get {
"page_title_uid": "页面标题或 UID"
}
在页面中创建新块:
use_roam_create_block {
"page_title_uid": "目标页面标题或 UID",
"string": "要插入的字符串内容"
}
更新现有块的内容:
use_roam_update_block {
"block_uid": "要更新的块 UID",
"string": "新的字符串内容"
}
删除指定块:
use_roam_delete_block {
"block_uid": "要删除的块 UID"
}
直接访问 Roam 的查询引擎:
use_roam_query {
"query": "Datalog 查询语句",
"inputs": []
}
服务器提供全面的错误处理机制:
每个错误响应都包含:
服务器基于 Node.js 和 Express 框架构建,使用 TypeScript 进行类型安全开发。主要依赖模块包括:
@roamjs/core - Roam 核心功能库express - Web 应用框架typescript - 静态类型支持src/
├── server.ts - 主服务器文件
├── routes/ - 路由模块
│ ├── blocks.ts - 块相关路由
│ └── pages.ts - 页面相关路由
├── middleware/ - 中间件
│ ├── auth.ts - 认证中间件
│ └── errorHandling.ts - 错误处理中间件
└── types/ - 定义类型文件
文档中未提及相关信息。