Search · MODEL CONTEXT PROTOCOL
2b3pro roam research mcp
MCP Server for Roam Research Graph Integration
WHAT IT CONNECTS
2b3pro roam research mcp 为 AI Agent 提供什么
- Environment variable handling with .env support
- Comprehensive input validation
- Case-insensitive page title matching
- Recursive block reference resolution
- Markdown parsing and conversion
- Daily page integration
- Detailed debug logging
- Efficient batch operations
- Hierarchical outline creation
- `roam_fetch_page_by_title`: Fetch and read a page's content by title, recursively resolving block references up to 4 levels deep
- `roam_create_page`: Create new pages with optional content
- `roam_create_block`: Create new blocks in a page (defaults to today's daily page)
- `roam_import_markdown`: Import nested markdown content under specific blocks
- `roam_add_todo`: Add multiple todo items to today's daily page with checkbox syntax
- `roam_create_outline`: Create hierarchical outlines with proper nesting and structure
- `roam_search_block_refs`: Search for block references within pages or across the graph
- `roam_search_hierarchy`: Navigate and search through block parent-child relationships
- `roam_find_pages_modified_today`: Find all pages that have been modified since midnight today
- `roam_search_by_text`: Search for blocks containing specific text across all pages or within a specific page
- `roam_update_block`: Update block content with direct text or pattern-based transformations
- `roam_search_by_date`: Search for blocks and pages based on creation or modification dates
- `roam_search_for_tag`: Search for blocks containing specific tags with optional filtering by nearby tags
- `roam_remember`: Store and categorize memories or information with automatic tagging
- `roam_recall`: Recall memories of blocks marked with tag MEMORIES_TAG (see below) or blocks on page title of the same name
- `roam_datomic_query`: Execute custom Datalog queries on the Roam graph for advanced data retrieval and analysis
- Create a [Roam Research API token](https://x.com/RoamResearch/status/1789358175474327881):
- Go to your graph settings
- Navigate to the "API tokens" section (Settings > "Graph" tab > "API Tokens" section and click on the "+ New API Token" button)
- Create a new token
- Configure the environment variables:
- For Cline (`~/Library/Application Support/claude-code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`):
- For Claude desktop app (`~/Library/Application Support/Claude/claude_desktop_config.json`):
- Build the server (make sure you're in the root directory of the MCP):
- Complete hierarchical structure
- Block references recursively resolved (up to 4 levels deep)
- Proper indentation for nesting levels
- Full markdown formatting
- `page_uid`: Direct reference to target page
- `title`: Name of target page (will be created if it doesn't exist)
- Neither: Block will be added to today's daily page
- Create complex outlines with up to 10 levels of nesting
- Validate outline structure and content
- Maintain proper parent-child relationships
- Optional header block for the outline
- Defaults to today's daily page if no page specified
- Efficient batch operations for creating blocks
- `outline`: Array of outline items, each with:
- `text`: Content of the outline item (required)
- `level`: Nesting level (1-10, required)
- `page_title_uid`: Target page title or UID (optional, defaults to today's page)
- `block_text_uid`: Header text for the outline (optional)
- Adds todos with Roam checkbox syntax (`{{TODO}} todo text`)
- Supports adding multiple todos in a single operation
- Uses batch actions for efficiency when adding >10 todos
- Automatically creates today's page if it doesn't exist
- Adds todos as top-level blocks in sequential order
- Import content under specific blocks:
- Find parent block by UID or exact string match
- Locate blocks within specific pages by title or UID
- Defaults to today's page if no page specified
- Control content placement:
- Add as first or last child of parent block
- Preserve hierarchical structure
- Efficient batch operations for nested content
- Comprehensive return value:
- `content`: Nested markdown content to import
- `page_uid`: UID of the page containing the parent block
- `page_title`: Title of the page containing the parent block (ignored if page_uid provided)
- `parent_uid`: UID of the parent block to add content under
- `parent_string`: Exact string content of the parent block (must provide either page_uid or page_title)
- `order`: Where to add the content ("first" or "last", defaults to "first")
- Find all references to a specific block
- Search for any block references within a page
- Search across the entire graph
- Supports both direct and indirect references
- Includes block content and location context
- `block_uid`: UID of the block to find references to (optional)
- `page_title_uid`: Title or UID of the page to search in (optional)
- Search for any text across all blocks in the graph
- Optional page-scoped search
- Case-sensitive or case-insensitive search
- Returns block content with page context
- Efficient text matching using Datalog queries
- `text`: The text to search for (required)
- `page_title_uid`: Title or UID of the page to search in (optional)
- `case_sensitive`: Whether to perform a case-sensitive search (optional, default: true to match Roam's native behavior)
- Two update modes:
- Direct content replacement
- Pattern-based transformation using regex
- Verify block existence before updating
- Return updated content in response
- Support for global or single-match replacements
- Preserve block relationships and metadata
- `block_uid`: UID of the block to update (required)
- `content`: New content for the block (if using direct replacement)
- `transform_pattern`: Pattern for transforming existing content:
- `find`: Text or regex pattern to find
- `replace`: Text to replace with
- `global`: Whether to replace all occurrences (default: true)
- Search for blocks containing specific tags
- Optional filtering by presence of another tag
- Page-scoped or graph-wide search
- Case-sensitive or case-insensitive search
- Returns block content with page context
- Efficient tag matching using Datalog queries
- `primary_tag`: The main tag to search for (required)
- `page_title_uid`: Title or UID of the page to search in (optional)
- `near_tag`: Another tag to filter results by (optional)
- `case_sensitive`: Whether to perform case-sensitive search (optional, default: true to match Roam's native behavior)
- Store information with #[[LLM/Memories]] tag
- Add optional category tags for organization
- Automatically adds to today's daily page
- Supports multiple categories per memory
- Easy retrieval using roam_search_for_tag
- Maintains chronological order of memories
- `memory`: The information to remember (required)
- `categories`: Optional array of categories to tag the memory with
- Search by creation date, modification date, or both
- Filter blocks, pages, or both
- Optional date range with start and end dates
- Include or exclude block/page content in results
- Sort results by timestamp
- Efficient date-based filtering using Datalog queries
- `start_date`: Start date in ISO format (YYYY-MM-DD) (required)
- `end_date`: End date in ISO format (YYYY-MM-DD) (optional)
- `type`: Whether to search by 'created', 'modified', or 'both' (required)
- `scope`: Whether to search 'blocks', 'pages', or 'both' (required)
- `include_content`: Whether to include the content of matching blocks/pages (optional, default: true)
- Tracks all modifications made to pages since midnight
- Detects changes at any level in the block hierarchy
- Returns unique list of modified page titles
- Includes count of modified pages
- No parameters required
- Direct access to Roam's query engine
- Support for all Datalog query features:
- Complex pattern matching
- Aggregation functions (count, sum, max, min, avg, distinct)
- String operations (includes?, starts-with?, ends-with?)
- Logical operations (<, >, <=, >=, =, not=)
- Rules for recursive queries
- Case-sensitive and case-insensitive search capabilities
- Efficient querying across the entire graph
- `query`: The Datalog query to execute (required)
- `inputs`: Optional array of input parameters for the query
- Count all pages:
- Case-insensitive text search:
- Find blocks modified after a date:
- Search up or down the block hierarchy
- Find children of a specific block
- Find parents of a specific block
- Configure search depth (1-10 levels)
- Optional page scope filtering
- Includes depth information for each result
- `parent_uid`: UID of the block to find children of (required if searching down)
- `child_uid`: UID of the block to find parents of (required if searching up)
- `page_title_uid`: Title or UID of the page to search in (optional)
- `max_depth`: How many levels deep to search (optional, default: 1, max: 10)
- Configuration errors:
- Missing API token or graph name
- Invalid environment variables
- API errors:
- Authentication failures
- Invalid requests
- Failed operations
- Tool-specific errors:
- Page not found (with case-insensitive search)
- Block not found by string match
- Invalid markdown format
- Missing required parameters
- Invalid outline structure or content
- Standard MCP error code
- Detailed error message
- Suggestions for resolution when applicable
- Install all required dependencies
- Compile TypeScript to JavaScript
- Make the output file executable
- Start the server in inspector mode
- Provide an interactive interface to:
- List available tools and resources
- Execute tools with custom parameters
- View tool responses and error handling
SECURITY
MCP 收录不等于安全审核
MCP 服务器可能获得模型上下文、凭据、本地文件或调用外部系统的权限。连接 Agent 前,请检查代码、环境变量、网络行为、软件包来源与维护状态。