local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Supports loading configuration from .env files for managing environment variables like API tokens and graph names.
Enables parsing and conversion of markdown content, with support for importing nested markdown structures into Roam Research with proper hierarchy preservation.
Provides comprehensive access to Roam Research's API functionality, allowing AI assistants to interact with Roam Research graphs through tools for fetching, creating, and updating pages and blocks, importing markdown, searching content, and executing Datalog queries.
Roam Research MCP 서버
Roam Research의 API 기능에 대한 포괄적인 접근을 제공하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버를 통해 Claude와 같은 AI 비서가 표준화된 인터페이스를 통해 Roam Research 그래프와 상호 작용할 수 있습니다. (현재 진행 중인 개인 프로젝트이며 Roam Research의 공식 승인을 받지 않았습니다.)
설치
패키지를 글로벌하게 설치할 수 있습니다:
지엑스피1
또는 저장소를 복제하고 소스에서 빌드합니다.
특징
이 서버는 Roam Research와 상호 작용하기 위한 강력한 도구를 제공합니다.
- .env 지원을 통한 환경 변수 처리
- 포괄적인 입력 검증
- 대소문자 구분 없이 페이지 제목 일치
- 재귀적 블록 참조 해결
- 마크다운 구문 분석 및 변환
- 일일 페이지 통합
- 자세한 디버그 로깅
- 효율적인 배치 작업
- 계층적 개요 생성
roam_fetch_page_by_title
: 제목별로 페이지의 콘텐츠를 가져와서 읽고, 최대 4단계 깊이까지 블록 참조를 재귀적으로 확인합니다.roam_create_page
: 선택적 콘텐츠로 새 페이지를 만듭니다.roam_create_block
: 페이지에 새로운 블록을 생성합니다(기본값은 오늘의 일일 페이지입니다)roam_import_markdown
: 특정 블록 아래에 중첩된 마크다운 콘텐츠를 가져옵니다.roam_add_todo
: 체크박스 구문을 사용하여 오늘의 일일 페이지에 여러 개의 할 일 항목을 추가합니다.roam_create_outline
: 적절한 중첩 및 구조를 사용하여 계층적 개요를 만듭니다.roam_search_block_refs
: 페이지 내 또는 그래프 전체에서 블록 참조를 검색합니다.roam_search_hierarchy
: 블록 부모-자식 관계를 탐색하고 검색합니다.roam_find_pages_modified_today
: 오늘 자정 이후 수정된 모든 페이지를 찾습니다.roam_search_by_text
: 모든 페이지 또는 특정 페이지 내에서 특정 텍스트가 포함된 블록을 검색합니다.roam_update_block
: 직접 텍스트 또는 패턴 기반 변환으로 블록 콘텐츠 업데이트roam_search_by_date
: 생성 또는 수정 날짜를 기준으로 블록 및 페이지 검색roam_search_for_tag
: 근처 태그로 선택적으로 필터링하여 특정 태그가 포함된 블록을 검색합니다.roam_remember
: 자동 태그 지정으로 기억이나 정보를 저장하고 분류합니다.roam_recall
: MEMORIES_TAG 태그로 표시된 블록(아래 참조) 또는 같은 이름의 페이지 제목에 있는 블록의 메모리를 회수합니다.roam_datomic_query
: 고급 데이터 검색 및 분석을 위해 Roam 그래프에서 사용자 정의 Datalog 쿼리를 실행합니다.
설정
- Roam Research API 토큰을 생성하세요:
- 그래프 설정으로 이동하세요
- "API 토큰" 섹션으로 이동합니다(설정 > "그래프" 탭 > "API 토큰" 섹션을 클릭하고 "+ 새 API 토큰" 버튼을 클릭합니다)
- 새로운 토큰을 생성하세요
- 환경 변수 구성: 필요한 환경 변수를 구성하는 데는 두 가지 옵션이 있습니다.옵션 1: .env 파일 사용(개발에 권장) roam-research 디렉터리에
.env
파일을 만듭니다.옵션 2: MCP 설정 사용(대체 방법) MCP 설정 파일에 구성을 추가합니다.Copy- Cline의 경우(
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
): - Claude 데스크톱 앱(
~/Library/Application Support/Claude/claude_desktop_config.json
):
Copy참고: 서버는 먼저 .env 파일에서 로드를 시도한 다음 MCP 설정의 환경 변수를 사용합니다.
- Cline의 경우(
- 서버를 빌드합니다(MCP의 루트 디렉토리에 있는지 확인하세요):Copy
용법
제목으로 페이지 가져오기
해결된 블록 참조로 페이지의 콘텐츠를 가져와서 읽습니다.
다음을 사용하여 페이지 내용을 마크다운으로 반환합니다.
- 완전한 계층 구조
- 블록 참조는 재귀적으로 해결됨(최대 4단계 깊이)
- 중첩 수준에 대한 적절한 들여쓰기
- 전체 마크다운 서식
페이지 만들기
선택적인 콘텐츠로 새 페이지를 만드세요:
성공시 생성된 페이지의 UID를 반환합니다.
블록 생성
페이지에 새 블록을 추가합니다(page_uid나 title이 제공되지 않으면 오늘의 일일 페이지가 기본값으로 설정됨):
다음 중 하나를 지정할 수 있습니다.
page_uid
: 대상 페이지에 대한 직접 참조title
: 대상 페이지의 이름 (존재하지 않으면 생성됩니다)- 둘 다 아님: 블록이 오늘의 일일 페이지에 추가됩니다.
보고:
개요 만들기
적절한 중첩과 구조를 갖춘 계층적 개요를 만듭니다.
특징:
- 최대 10단계의 중첩으로 복잡한 윤곽선을 만듭니다.
- 개요 구조와 내용 검증
- 올바른 부모-자녀 관계 유지
- 개요에 대한 선택적 헤더 블록
- 페이지가 지정되지 않으면 오늘의 일일 페이지로 기본 설정됩니다.
- 블록 생성을 위한 효율적인 일괄 작업
매개변수:
outline
: 개요 항목의 배열, 각 항목에는 다음이 포함됩니다.text
: 개요 항목의 내용(필수)level
: 중첩 레벨(1-10, 필수)
page_title_uid
: 대상 페이지 제목 또는 UID(선택 사항, 기본값은 오늘 페이지)block_text_uid
: 개요의 헤더 텍스트(선택 사항)
보고:
할 일 항목 추가
오늘의 일일 페이지에 하나 이상의 할 일 항목을 추가하세요.
특징:
- Roam 체크박스 구문을 사용하여 할 일을 추가합니다(
{{TODO}} todo text
). - 단일 작업에서 여러 개의 할 일 추가 지원
- 10개 이상의 할 일을 추가할 때 효율성을 위해 일괄 작업을 사용합니다.
- 오늘의 페이지가 존재하지 않으면 자동으로 오늘의 페이지를 생성합니다.
- 순차적으로 최상위 블록으로 할 일을 추가합니다.
중첩된 마크다운 가져오기
특정 블록 아래에 중첩된 마크다운 콘텐츠를 가져옵니다.
특징:
- 특정 블록 아래의 콘텐츠 가져오기:
- UID 또는 정확한 문자열 일치로 부모 블록 찾기
- 제목이나 UID로 특정 페이지 내 블록 찾기
- 페이지가 지정되지 않으면 오늘 페이지로 기본 설정됩니다.
- 콘텐츠 배치 제어:
- 부모 블록의 첫 번째 또는 마지막 자식으로 추가
- 계층 구조 유지
- 중첩된 콘텐츠에 대한 효율적인 일괄 작업
- 포괄적인 반환 값:Copy
매개변수:
content
: 가져올 중첩된 마크다운 콘텐츠page_uid
: 부모 블록이 포함된 페이지의 UIDpage_title
: 부모 블록이 포함된 페이지의 제목(page_uid가 제공된 경우 무시됨)parent_uid
: 콘텐츠를 추가할 부모 블록의 UIDparent_string
: 부모 블록의 정확한 문자열 내용(page_uid 또는 page_title을 제공해야 함)order
: 콘텐츠를 추가할 위치("first" 또는 "last", 기본값은 "first")
블록 참조 검색
페이지 내 또는 전체 그래프에서 블록 참조를 검색합니다.
특징:
- 특정 블록에 대한 모든 참조 찾기
- 페이지 내에서 블록 참조를 검색합니다.
- 그래프 전체에서 검색
- 직접 및 간접 참조를 모두 지원합니다.
- 블록 콘텐츠와 위치 컨텍스트가 포함됩니다.
매개변수:
block_uid
: 참조를 찾을 블록의 UID(선택 사항)page_title_uid
: 검색할 페이지의 제목 또는 UID(선택 사항)
보고:
텍스트로 검색
모든 페이지 또는 특정 페이지 내에서 특정 텍스트가 포함된 블록을 검색합니다.
특징:
- 그래프의 모든 블록에서 모든 텍스트를 검색합니다.
- 선택적인 페이지 범위 검색
- 대소문자 구분 또는 대소문자 구분 안 함 검색
- 페이지 컨텍스트를 사용하여 블록 콘텐츠를 반환합니다.
- Datalog 쿼리를 사용한 효율적인 텍스트 매칭
매개변수:
text
: 검색할 텍스트(필수)page_title_uid
: 검색할 페이지의 제목 또는 UID(선택 사항)case_sensitive
: 대소문자 구분 검색을 수행할지 여부(선택 사항, 기본값: Roam의 기본 동작과 일치하려면 true)
보고:
블록 콘텐츠 업데이트
직접 텍스트 교체나 패턴 기반 변환을 사용하여 블록의 콘텐츠를 업데이트합니다.
또는 패턴 기반 변환을 사용합니다.
특징:
- 두 가지 업데이트 모드:
- 직접 콘텐츠 교체
- 정규식을 사용한 패턴 기반 변환
- 업데이트하기 전에 블록 존재 여부를 확인하세요
- 업데이트된 콘텐츠를 응답으로 반환합니다.
- 글로벌 또는 단일 매치 교체 지원
- 블록 관계 및 메타데이터 보존
매개변수:
block_uid
: 업데이트할 블록의 UID(필수)content
: 블록에 대한 새 콘텐츠(직접 교체를 사용하는 경우)transform_pattern
: 기존 콘텐츠를 변환하기 위한 패턴:find
: 찾을 텍스트 또는 정규식 패턴replace
: 바꿀 텍스트global
: 모든 항목을 바꿀지 여부(기본값: true)
보고:
태그 검색
근처 태그로 선택적으로 필터링하여 특정 태그가 포함된 블록을 검색하세요.
특징:
- 특정 태그가 포함된 블록 검색
- 다른 태그의 존재 여부에 따른 선택적 필터링
- 페이지 범위 또는 그래프 전체 검색
- 대소문자 구분 또는 대소문자 구분 안 함 검색
- 페이지 컨텍스트를 사용하여 블록 콘텐츠를 반환합니다.
- Datalog 쿼리를 사용한 효율적인 태그 매칭
매개변수:
primary_tag
: 검색할 주요 태그(필수)page_title_uid
: 검색할 페이지의 제목 또는 UID(선택 사항)near_tag
: 결과를 필터링할 또 다른 태그(선택 사항)case_sensitive
: 대소문자 구분 검색을 수행할지 여부(선택 사항, 기본값: Roam의 기본 동작과 일치하려면 true)
보고:
정보 기억하기
자동 태그 지정 및 분류를 통해 추억이나 중요한 정보를 저장하세요.
특징:
- #[[LLM/Memories]] 태그로 정보를 저장합니다.
- 조직을 위한 선택적 카테고리 태그 추가
- 오늘의 일일 페이지에 자동으로 추가됩니다
- 메모리당 여러 카테고리 지원
- roam_search_for_tag를 사용하여 쉽게 검색
- 기억의 연대순을 유지합니다
매개변수:
memory
: 기억할 정보 (필수)categories
: 메모리에 태그를 지정할 카테고리의 선택적 배열
보고:
날짜로 검색
생성 또는 수정 날짜를 기준으로 블록 및 페이지 검색:
특징:
- 생성 날짜, 수정 날짜 또는 둘 다로 검색
- 블록, 페이지 또는 둘 다 필터링
- 시작 및 종료 날짜가 포함된 선택적 날짜 범위
- 결과에 블록/페이지 콘텐츠 포함 또는 제외
- 타임스탬프별로 결과 정렬
- Datalog 쿼리를 사용한 효율적인 날짜 기반 필터링
매개변수:
start_date
: ISO 형식(YYYY-MM-DD)의 시작 날짜(필수)end_date
: ISO 형식(YYYY-MM-DD)의 종료 날짜(선택 사항)type
: '생성됨', '수정됨', '둘 다'로 검색할지 여부 (필수)scope
: '블록', '페이지' 또는 '둘 다'를 검색할지 여부(필수)include_content
: 일치하는 블록/페이지의 콘텐츠를 포함할지 여부(선택 사항, 기본값: true)
보고:
오늘 수정된 페이지 찾기
오늘 자정 이후 수정된 모든 페이지를 찾으세요:
특징:
- 자정 이후 페이지에 적용된 모든 수정 사항을 추적합니다.
- 블록 계층의 모든 레벨에서 변경 사항을 감지합니다.
- 수정된 페이지 제목의 고유한 목록을 반환합니다.
- 수정된 페이지 수 포함
- 매개변수가 필요하지 않습니다
보고:
데이터 쿼리 실행
고급 데이터 검색 및 분석을 위해 Roam 그래프에서 사용자 정의 Datalog 쿼리를 실행하세요.
특징:
- Roam의 쿼리 엔진에 직접 액세스
- 모든 Datalog 쿼리 기능 지원:
- 복잡한 패턴 매칭
- 집계 함수(count, sum, max, min, avg, distinct)
- 문자열 연산(includes?, starts-with?, ends-with?)
- 논리 연산(<, >, <=, >=, =, not=)
- 재귀 쿼리에 대한 규칙
- 대소문자 구분 및 대소문자 구분 안 함 검색 기능
- 그래프 전체에 걸친 효율적인 쿼리
매개변수:
query
: 실행할 Datalog 쿼리(필수)inputs
: 쿼리에 대한 입력 매개변수의 선택적 배열
보고:
예시 쿼리:
- 모든 페이지 수 세기:
- 대소문자를 구분하지 않는 텍스트 검색:
- 날짜 이후에 수정된 블록 찾기:
더 많은 쿼리 예제와 구문 설명서는 Roam_Research_Datalog_Cheatsheet.md를 참조하세요.
검색 블록 계층 구조
블록 부모-자식 관계를 탐색하고 검색합니다.
특징:
- 블록 계층을 위아래로 검색
- 특정 블록의 자식 찾기
- 특정 블록의 부모 찾기
- 검색 깊이 구성(1~10단계)
- 선택적 페이지 범위 필터링
- 각 결과에 대한 심층 정보가 포함되어 있습니다.
매개변수:
parent_uid
: 자식을 찾을 블록의 UID(아래로 검색하는 경우 필수)child_uid
: 부모를 찾을 블록의 UID(위로 검색하는 경우 필수)page_title_uid
: 검색할 페이지의 제목 또는 UID(선택 사항)max_depth
: 검색할 깊이 수준(선택 사항, 기본값: 1, 최대: 10)
보고:
오류 처리
서버는 일반적인 시나리오에 대한 포괄적인 오류 처리를 제공합니다.
- 구성 오류:
- API 토큰 또는 그래프 이름이 없습니다.
- 잘못된 환경 변수
- API 오류:
- 인증 실패
- 잘못된 요청
- 실패한 작업
- 도구별 오류:
- 페이지를 찾을 수 없습니다(대소문자 구분 없이 검색)
- 문자열 일치로 블록을 찾을 수 없습니다.
- 잘못된 마크다운 형식
- 필수 매개변수가 없습니다
- 잘못된 개요 구조 또는 내용
각 오류 응답에는 다음이 포함됩니다.
- 표준 MCP 오류 코드
- 자세한 오류 메시지
- 해당되는 경우 해결을 위한 제안
개발
건물
서버를 빌드하려면:
이렇게 하면:
- 필요한 모든 종속성을 설치하세요
- TypeScript를 JavaScript로 컴파일
- 출력 파일을 실행 가능하게 만들기
개발 중에 npm run watch
사용하면 파일이 변경되면 자동으로 다시 컴파일할 수도 있습니다.
MCP Inspector로 테스트
MCP Inspector는 MCP 서버를 테스트하고 디버깅하는 데 도움이 되는 도구입니다. 서버를 테스트하려면 다음을 수행하세요.
이렇게 하면:
- 서버를 검사기 모드로 시작합니다.
- 다음에 대한 대화형 인터페이스를 제공합니다.
- 사용 가능한 도구 및 리소스 나열
- 사용자 정의 매개변수로 도구 실행
- 도구 응답 및 오류 처리 보기
특허
MIT 라이센스
You must be authenticated.
Tools
Roam Research의 API 기능에 대한 포괄적인 액세스를 제공합니다. 이 서버를 통해 Claude와 같은 AI 비서가 표준화된 인터페이스를 통해 Roam Research 그래프와 상호 작용할 수 있습니다.