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 前,请检查代码、环境变量、网络行为、软件包来源与维护状态。