2
2b3pro/roam-research-mcp
MCP Server and CLI tool for Roam Research Graph Integration
在 GitHub 查看 ↗链接已于 2026-11-12 核查 · 自动访问被拒(HTTP 429),状态未能确认
安装与配置
- 复制上面的命令
- 粘成
claude_desktop_config.json里mcpServers的一项(本地服务器用 command + args,示例见 客户端接法) - 重启客户端
客户端配置(取自该仓库的安装命令)
{
"mcpServers": {
"2b3pro-roam-research-mcp": {
"command": "npx",
"args": ["roam-research-mcp"]
}
}
}解析自我们于 2026-11-04 抓取的该仓库 README;我们未执行过。
command/args 来自仓库写明的安装命令;不确定时请以该项目 README 为准。
VS Code(.vscode/mcp.json —— 键名是 servers)
{
"servers": {
"2b3pro-roam-research-mcp": {
"command": "npx",
"args": ["roam-research-mcp"]
}
}
}VS Code 顶层键是 <code>servers</code>,其余与上面那份相同。
Claude Code(命令行)
claude mcp add --transport stdio 2b3pro-roam-research-mcp -- npx roam-research-mcp
Claude Code 不收 JSON 文件,用这条命令直接加。
配置项的键名以你的客户端为准:客户端与 CLI
- 来源明细
- 收录自 abordage/awesome-mcp 榜单(我们从中收集的条目之一) · 条目类型:MCP 服务
- 收录与活跃
- 收录于 2026-11-05 · 最近见到 2026-11-14 · 共见到 10 次 · 被 10 个来源列出
- 评分构成
- 综合分 1,003 · 10 个来源 · mcp
- 安装
npx roam-research-mcp
常见问题(答案都来自我们的记录)
怎么安装?
该仓库给出的安装命令是
npx roam-research-mcp。我们的记录里它是仓库自己提供的;不保证在你的客户端上直接可用。它适合谁 / 用来做什么?
我们把它归在这些标签下: MCP 服务。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
我们收录于 2026-11-05;最近见到 2026-11-14。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。
# Roam Research MCP + CLI
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
## Introduction
I created this project to solve a personal problem: I wanted to manage my Roam Research graph directly from Claude Code (and other LLMs). As I built the Model Context Protocol (MCP) server to give AI agents access to my notes, I realized the underlying tools were powerful enough to stand on their own.
What started as an backend for AI agents evolved into a full-featured Standalone CLI. Now, you can use the same powerful API capabilities directly from your terminal—piping content into Roam, searching your graph, and managing tasks—without needing an LLM at all.
Whether you want to give Claude superpowers over your knowledge base or just want a robust CLI for your own scripts, this project has you covered.
## What's New in v5.0
In one line: roam save now has one flag for each way of naming a parent block, and neither one guesses. --parent-uid is always a UID; --parent is always text.
Until 4.1.0, --parent took either a block UID or heading text and decided which by looking for a digit in the value. About one Roam UID in five has no digit, so those saves were silently misrouted. 4.1.0 added --parent-uid and deprecated passing a UID to --parent. 5.0 finishes the split.
--parent-uid nests under the block with that UID. It accepts uid or ((uid)), and if no such block exists the command exits non-zero and writes nothing.
--parent " " nests under the block with that text on the target page, creating it if missing. It is never read as a UID. --parent "((uid))" finds or creates a block whose content is that reference, which was not reliably possible before.
Creating a parent block is announced on stderr, with its UID. If the text you gave --parent looks like a UID, a second line says what happened and gives the --parent-uid command to use instead. Stdout is unchanged.
roam save --help leads with the choice. A "Choosing a parent block" section sits above the examples, so the difference between the two flags is the first thing you read.
Why a major. roam save --parent "((uid))" and roam save --parent used to nest under that block and now nest under a block containing that text. If a script passes a UID to --parent, change the flag to --parent-uid. Only the CLI is affected: the MCP tools take parent-uid as a typed field and behave exactly as before, so if you use the server through an AI assistant, nothing is required of you.
Full detail is in the changelog.
## What's New in v4.0
In one line: a block containing a soft line break (Shift+Enter) now survives a page rewrite. Read a page, write it back, and nothing moves.
Until now, a multi-line block rendered as two physical lines, the second at column 0. That reset the parser's indentation baseline, so every block after it collapsed toward the root and roamupdatepagemarkdown dutifully generated the moves to make your real page match. Reading a page and writing back a revision, the documented purpose of the tool, was enough to trigger it. Callout bodies and fenced code blocks are exactly the blocks that carry soft breaks.
Soft breaks render as ⏎. A page containing one gains a leading marker line; keep it if you write the markdown back. Pages with no multi-line block render byte-identical to 3.x, with no marker and no encoding.
I created this project to solve a personal problem: I wanted to manage my Roam Research graph directly from Claude Code (and other LLMs). As I built the Model Context Protocol (MCP) server to give AI agents access to my notes, I realized the underlying tools were powerful enough to stand on their own.
What started as an backend for AI agents evolved into a full-featured Standalone CLI. Now, you can use the same powerful API capabilities directly from your terminal—piping content into Roam, searching your graph, and managing tasks—without needing an LLM at all.
Whether you want to give Claude superpowers over your knowledge base or just want a robust CLI for your own scripts, this project has you covered.
## What's New in v5.0
In one line: roam save now has one flag for each way of naming a parent block, and neither one guesses. --parent-uid is always a UID; --parent is always text.
Until 4.1.0, --parent took either a block UID or heading text and decided which by looking for a digit in the value. About one Roam UID in five has no digit, so those saves were silently misrouted. 4.1.0 added --parent-uid and deprecated passing a UID to --parent. 5.0 finishes the split.
--parent-uid nests under the block with that UID. It accepts uid or ((uid)), and if no such block exists the command exits non-zero and writes nothing.
--parent " " nests under the block with that text on the target page, creating it if missing. It is never read as a UID. --parent "((uid))" finds or creates a block whose content is that reference, which was not reliably possible before.
Creating a parent block is announced on stderr, with its UID. If the text you gave --parent looks like a UID, a second line says what happened and gives the --parent-uid command to use instead. Stdout is unchanged.
roam save --help leads with the choice. A "Choosing a parent block" section sits above the examples, so the difference between the two flags is the first thing you read.
Why a major. roam save --parent "((uid))" and roam save --parent used to nest under that block and now nest under a block containing that text. If a script passes a UID to --parent, change the flag to --parent-uid. Only the CLI is affected: the MCP tools take parent-uid as a typed field and behave exactly as before, so if you use the server through an AI assistant, nothing is required of you.
Full detail is in the changelog.
## What's New in v4.0
In one line: a block containing a soft line break (Shift+Enter) now survives a page rewrite. Read a page, write it back, and nothing moves.
Until now, a multi-line block rendered as two physical lines, the second at column 0. That reset the parser's indentation baseline, so every block after it collapsed toward the root and roamupdatepagemarkdown dutifully generated the moves to make your real page match. Reading a page and writing back a revision, the documented purpose of the tool, was enough to trigger it. Callout bodies and fenced code blocks are exactly the blocks that carry soft breaks.
Soft breaks render as ⏎. A page containing one gains a leading marker line; keep it if you write the markdown back. Pages with no multi-line block render byte-identical to 3.x, with no marker and no encoding.
收录徽章(可选)
想把收录标记放进 README 就复制这行,可选,不影响收录。
[](https://anclum.com/zh/s/2b3pro-roam-research-mcp/)
- 来源
- awesome · https://github.com/2b3pro/roam-research-mcp
- 按领域浏览
- MCP 服务
- 收录来源
- 10 个独立来源
- 收录于
- 今天
同类推荐
所属领域与标签
每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。