npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sunub/obsidian-mcp-server

v0.2.0

Published

A server for the Obsidian Model Context Protocol.

Readme

Obsidian MCP Server

npm version

obsidian-mcp-server는 Obsidian Vault의 Markdown 문서를 AI 에이전트가 조회하고, 검색하고, 요약할 수 있게 해주는 MCP 서버입니다.

MCP 클라이언트에 연결해 에이전트에게 토큰 사용량을 제어하면서 Vault 내용을 조회할 수 있게 합니다.

무엇을 할 수 있나

  • 키워드 기반 노트 검색 (vault, action="search")
  • 특정 노트 열람 (vault, action="read")
  • Vault 전체 문서 목록 조회 (vault, action="list_all")
  • Vault 상태 조회 (vault, action="stats")
  • 장기 컨텍스트용 메모리 패킷 생성 (vault, action="collect_context")
  • 저장된 메모리 노트 조회 (vault, action="load_memory")
  • frontmatter 자동 생성 제안 (generate_property)
  • frontmatter 실제 반영 (write_property)
  • 문서 기반 프롬프트 워크플로우 (create_document_with_properties)
  • 이미지 첨부파일 정리 (organize_attachments)

사전 주의사항

이 서버는 Vault 내용을 클라이언트에 노출합니다. 운영 환경에서 신중히 사용하세요.

  • 신뢰할 수 없는 AI 에이전트와 연결하지 마세요.
  • Vault 경로(VAULT_DIR_PATH)는 최소 권한으로 제한하세요.
  • 조회량이 큰 Vault는 maxOutputChars, limit를 조절해 토큰 비용을 통제하세요.
  • vault 액션 기본 압축 모드는 balanced입니다.

설정 확인사항

  1. Vault 경로: VAULT_DIR_PATH에는 반드시 절대 경로를 입력해야 합니다.
// ✅ 올바른 예시
"VAULT_DIR_PATH": "/Users/username/Documents/MyVault"
"VAULT_DIR_PATH": "C:\\Users\\username\\Documents\\MyVault"  // Windows
"VAULT_DIR_PATH": "/mnt/c/Users/username/Documents/MyVault"  // WSL

// ❌ 잘못된 예시
"VAULT_DIR_PATH": "~/Documents/MyVault"  // 상대 경로 사용 불가
"VAULT_DIR_PATH": "./vault"              // 상대 경로 사용 불가
  1. Node.js 요구사항: Node.js 22 이상이 설치되어 있어야 합니다.
node --version  # v22.0.0 이상 확인

시작하기 (빠른 설정)

1) 공통 요구사항

  • 최소 설정은 VAULT_DIR_PATH (Vault 절대 경로)입니다.
  • MCP 실행 자체는 배포 패키지 기준으로 맞춰 설명합니다.
    • 배포 패키지(npx) 사용 (권장)
    • 로컬 build/index.js는 개발/디버깅 목적
  • 로컬 실행은 마지막 섹션(5)에서 분리 안내합니다.
  • Vault 경로가 없으면 시작이 실패합니다.
  • 아래 예시는 복붙으로 바로 사용할 수 있도록 정리했습니다.

2) 배포 패키지 (npx) 설정

{
  "mcpServers": {
    "obsidian": {
      "command": "npx",
      "args": ["-y", "@sunub/obsidian-mcp-server@latest"],
      "env": {
        "VAULT_DIR_PATH": "/abs/path/to/your/vault",
        "LOGGING_LEVEL": "info"
      }
    }
  }
}

CLI 직접 실행:

npx -y @sunub/obsidian-mcp-server@latest --vault-path /abs/path/to/your/vault --logging-level info

3) MCP Client configuration

클라이언트별 UI가 다르더라도 command/args/env의 기본 형태는 동일합니다.

배포 패키지 기준 핵심: command="npx", args=["-y","@sunub/obsidian-mcp-server@latest"], env.VAULT_DIR_PATH

[mcp_servers.obsidian]
command = "npx"
args = ["-y", "@sunub/obsidian-mcp-server@latest"]
env = { VAULT_DIR_PATH = "/abs/path/to/your/vault" }
  1. copilot 실행
  2. /mcp add
  3. 아래 값 입력
  • Server name: obsidian
  • Server Type: [1] Local
  • Command: npx -y @sunub/obsidian-mcp-server@latest
  • Environment: { "VAULT_DIR_PATH": "/abs/path/to/your/vault" }

버전별 JSON 키 이름이 다를 수 있으므로(예: servers/mcpServers), 프로젝트 문서에 맞춰 적용하세요.

{
  "mcpServers": {
    "obsidian": {
      "command": "npx",
      "args": ["-y", "@sunub/obsidian-mcp-server@latest"],
      "env": { "VAULT_DIR_PATH": "/abs/path/to/your/vault" }
    }
  }
}

Cursor SettingsMCPNew MCP Server에서 등록합니다.

{
  "obsidian": {
    "command": "npx",
    "args": ["-y", "@sunub/obsidian-mcp-server@latest"],
    "env": { "VAULT_DIR_PATH": "/abs/path/to/your/vault" }
  }
}

※ 일부 버전은 서버 식별 키명이 다를 수 있으니 설정 화면 안내에 맞춰 붙여넣으세요.

패키지 설치형 예시:

gemini mcp add obsidian npx -y @sunub/obsidian-mcp-server@latest --vault-path /abs/path/to/your/vault

※ 일부 Gemini 버전은 --vault-path 지원이 다를 수 있으므로, gemini mcp add의 최신 문서를 확인하세요.

4) 완성 예시 설정

{
  "mcpServers": {
    "obsidian": {
      "command": "npx",
      "args": [
        "-y",
        "@sunub/obsidian-mcp-server@latest"
      ],
      "env": {
        "VAULT_DIR_PATH": "/path/to/obsidian-vault",
        "VAULT_METRICS_LOG_PATH": "/path/to/vault-metrics.ndjson",
        "LOGGING_LEVEL": "info"
      }
    }
  }
}

환경 변수 설정

  • VAULT_DIR_PATH (필수): Obsidian Vault 절대 경로
  • VAULT_METRICS_LOG_PATH (선택): 액션 응답 압축/토큰 메트릭을 JSONL로 기록
  • LOGGING_LEVEL (선택): debug | info | warn | error

시작 후 빠른 검증

연결이 끝나면 아래 3가지만 먼저 확인하세요.
문서가 안 열리더라도 어디서 실패했는지 바로 좁힐 수 있습니다.

  1. Vault 상태 확인
"Vault 상태를 요약해줘."

예상 내부 동작:

{
  "method": "tools/call",
  "params": {
    "name": "vault",
    "arguments": { "action": "stats" }
  }
}

정상 동작 시 응답에 totalFiles, isInitialized, vaultPath가 들어갑니다.

  1. 검색 인덱스 확인
"노트 제목에 'MCP'가 들어간 문서만 5개 찾아줘."

예상 내부 동작:

{
  "method": "tools/call",
  "params": {
    "name": "vault",
    "arguments": {
      "action": "search",
      "keyword": "MCP",
      "limit": 5
    }
  }
}

search에서 결과가 비어 있으면 인덱싱/경로 또는 키워드 범위를 의심합니다.

  1. 문서 읽기 확인
"특정 노트 하나를 읽어줘."

예상 내부 동작:

{
  "method": "tools/call",
  "params": {
    "name": "vault",
    "arguments": {
      "action": "read",
      "filename": "예: 어떤 문서 이름"
    }
  }
}

filename이 틀리면 { "error": "Document not found: ..." }가 오고, read 대신 list_all으로 후보를 먼저 확인하면 해결이 빠릅니다.

search, list_all, load_memoryquiet 기본값이 true라서 기본 응답이 간략해질 수 있습니다.
필요하면 quiet: false, includeContent: true, excerptLength(또는 maxOutputChars)를 함께 써서 상세를 확인하세요.

사용 예시

MCP를 어떻게 호출하는지보다 “무슨 동작을 하려고 하는지”가 더 중요합니다.

직접 실행용 질문 예시:

  • README.md에서 시작하기 (빠른 설정)MCP Client configuration 부분만 찾아줘.
  • docs/tools-usage-guide.mdvault 설정 예시만 읽고 정리해줘.
  • docs/tool-reference.md에서 vaultcollect_context 파라미터만 찾아줘.
  • docs/tools-usage-guide.md에서 MCP 서버 설정 블록만 정리해줘.

자연어 예시는 아래처럼 구체적으로 쓰면 도구가 더 정확하게 동작합니다.

  • "README.md의 시작하기 부분에서 실행 명령 예시만 찾아줘"
  • "docs/tools-usage-guide.md에서 vault 관련 사용 예시만 찾아서 비교해줘"
  • "docs/tool-reference.md의 vault.read 파라미터 설명만 읽어줘"

vault는 사용자 질문을 토대로 내부적으로 매핑되어 호출되며, 실제 흐름은 아래처럼 동작합니다.

  • README.md의 시작하기 (빠른 설정)에서 npx 예시만 보여줘
    → 핵심 키워드만 추출해 vault.search가 먼저 호출됩니다.
  • docs/tool-reference.md의 collect_context 파라미터만 읽어줘
    → 먼저 vault.read로 문서의 해당 부분을 읽고, 필요 시 vault.collect_context로 정리합니다.
  • docs/tools-usage-guide.md에서 frontmatter 처리 과정을 읽어줘
    → 문서 위치를 vault.read로 찾은 뒤 generate_property/write_property/create_document_with_properties를 순차 호출할 수 있습니다.

동작하는 도구의 호출 흐름은 사용 예시(도구 호출 흐름)에서 구체 JSON 예시와 함께 확인하세요.

등록된 도구

자세한 사용 규약

  • 도구 상세 동작, 파라미터 기본값, 실제 응답 형식은 Tool Reference에서 확인하세요.
  • vault는 하나의 MCP tool이고 action 값으로 실제 동작이 분기됩니다. 오타가 가장 흔한 실패 원인입니다.
  • 대규모 Vault에서는 collect_contextscope="all", maxDocs를 작게 시작해 단계적으로 확장하세요.