프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Obsidian MCP Server

제작자: maxkuminov버전 1.1.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.maxkuminov/obsidian-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

Self-hosted agent memory as a markdown vault: semantic and keyword search, wikilink graph, OAuth

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: Streamable HTTP
  • 카테고리: 검색 및 AI 기억
  • 입력해야 할 값: DATABASE_URL, VAULT_PATH, SECRET_KEY, MCP_HOSTNAME, OPENAI_API_KEY

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: DATABASE_URL, VAULT_PATH, SECRET_KEY, MCP_HOSTNAME, EMBEDDING_PROVIDER, OLLAMA_URL, OPENAI_API_KEY

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "obsidian": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "DATABASE_URL",
        "-e",
        "VAULT_PATH",
        "-e",
        "SECRET_KEY",
        "-e",
        "MCP_HOSTNAME",
        "-e",
        "EMBEDDING_PROVIDER",
        "-e",
        "OLLAMA_URL",
        "-e",
        "OPENAI_API_KEY",
        "ghcr.io/maxkuminov/obsidian-mcp:v1.1.0"
      ],
      "env": {
        "DATABASE_URL": "your-value",
        "VAULT_PATH": "your-value",
        "SECRET_KEY": "your-value",
        "MCP_HOSTNAME": "your-value",
        "EMBEDDING_PROVIDER": "your-value",
        "OLLAMA_URL": "your-value",
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add obsidian --env DATABASE_URL=your-value --env VAULT_PATH=your-value --env SECRET_KEY=your-value --env MCP_HOSTNAME=your-value --env EMBEDDING_PROVIDER=your-value --env OLLAMA_URL=your-value --env OPENAI_API_KEY=your-value -- docker run -i --rm -e DATABASE_URL -e VAULT_PATH -e SECRET_KEY -e MCP_HOSTNAME -e EMBEDDING_PROVIDER -e OLLAMA_URL -e OPENAI_API_KEY ghcr.io/maxkuminov/obsidian-mcp:v1.1.0

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "obsidian": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "DATABASE_URL",
        "-e",
        "VAULT_PATH",
        "-e",
        "SECRET_KEY",
        "-e",
        "MCP_HOSTNAME",
        "-e",
        "EMBEDDING_PROVIDER",
        "-e",
        "OLLAMA_URL",
        "-e",
        "OPENAI_API_KEY",
        "ghcr.io/maxkuminov/obsidian-mcp:v1.1.0"
      ],
      "env": {
        "DATABASE_URL": "your-value",
        "VAULT_PATH": "your-value",
        "SECRET_KEY": "your-value",
        "MCP_HOSTNAME": "your-value",
        "EMBEDDING_PROVIDER": "your-value",
        "OLLAMA_URL": "your-value",
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "obsidian": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "DATABASE_URL",
        "-e",
        "VAULT_PATH",
        "-e",
        "SECRET_KEY",
        "-e",
        "MCP_HOSTNAME",
        "-e",
        "EMBEDDING_PROVIDER",
        "-e",
        "OLLAMA_URL",
        "-e",
        "OPENAI_API_KEY",
        "ghcr.io/maxkuminov/obsidian-mcp:v1.1.0"
      ],
      "env": {
        "DATABASE_URL": "your-value",
        "VAULT_PATH": "your-value",
        "SECRET_KEY": "your-value",
        "MCP_HOSTNAME": "your-value",
        "EMBEDDING_PROVIDER": "your-value",
        "OLLAMA_URL": "your-value",
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • DATABASE_URL 비밀 필수 env
    PostgreSQL 16 + pgvector (0.8.0+) connection URL for the app's NON-superuser role, e.g. postgresql+asyncpg://obsidian_mcp: @postgres:5432/obsidian_mcp. A superuser role or a CHANGE_ME password is ref…
  • VAULT_PATH 필수 env
    Path of the Obsidian vault inside the container (mount your vault read-write there).
  • SECRET_KEY 비밀 필수 env
    itsdangerous signer for cookies/sessions. Generate with `openssl rand -hex 32`; the app refuses to start on a placeholder.
  • MCP_HOSTNAME 필수 env
    Public hostname your reverse proxy routes to. Also derives BASE_URL, ALLOWED_ORIGINS and ALLOWED_HOSTS as https:// unless those are set explicitly.
  • EMBEDDING_PROVIDER env
    Embedding provider: `ollama` (self-hosted, default) or `openai` (bring your own key). Switching after deploy requires `make reset-embeddings`.
  • OLLAMA_URL env
    Ollama endpoint serving bge-m3 (used when EMBEDDING_PROVIDER=ollama). Must be https or loopback unless EMBEDDING_ALLOW_PLAINTEXT is set.
  • OPENAI_API_KEY 비밀 env
    OpenAI (or OpenAI-compatible) API key for text-embedding-3-* (required when EMBEDDING_PROVIDER=openai; the server refuses to start without it).

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 maxkuminov 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

검색 및 AI 기억 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 7271개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 7271개 중 95%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 7271개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Obsidian MCP Server, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: DATABASE_URL, VAULT_PATH, SECRET_KEY, MCP_HOSTNAME, OPENAI_API_KEY

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.1.0)은 어제 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Docker도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Context7, Codebase Memory, Exa

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Context7

제작자: upstash

Up-to-date docs for AI agents

컴퓨터 또는 클라우드★ 64,224MIT어제 업데이트
설치

Codebase Memory

제작자: DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

내 컴퓨터에서 실행★ 48,148MIT21일 전 업데이트
설치

Exa

제작자: exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

클라우드에서 실행★ 5,213MIT지난달 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

Obsidian MCP Server

Your agents' memory, in the vault you already have, reachable from claude.ai, ChatGPT, Claude Code and your phone.

A self-hosted Model Context Protocol server over an Obsidian vault. Three things it does that the alternatives mostly don't:

  • Your existing vault, served in place. No imposed note format, no sidecar syntax, no "memory" folder you have to adopt. Agents read what you read, follow your wikilinks, and pick up your folder layout, frontmatter schema and tag conventions from the vault itself.
  • Remote and multi-user. OAuth 2.0 PKCE and API keys, so claude.ai, Claude Desktop, Claude mobile, ChatGPT, Claude Code and n8n all read and write the same files, each user confined to their own vault root.
  • Writes cannot clobber. expected_hash preconditions refuse an edit made from a stale read, every publish is atomic and no-clobber by default, deletes go to .trash/, and dry_run returns the diff before anything lands.

Connect from Claude Code:

claude mcp add obsidian --transport http \

--url "https://obsidian-mcp. /mcp" \ --header "Authorization: Bearer omcp_..."

In claude.ai, Claude Desktop or ChatGPT, add a custom connector at https://obsidian-mcp. /mcp and sign in through the OAuth consent page. Connect a client has the rest.

Stack: Python 3.12, FastAPI, PostgreSQL with pgvector. Pluggable embeddings (Ollama — bge-m3 by default, qwen3-embedding:0.6b in the reference deployment — or OpenAI text-embedding-3-{small,large}).

Contents

  • Why this exists
  • A session at the keyboard
  • A session away from the keyboard
  • What's in the box
  • vs. other Obsidian MCP servers
  • vs. hosted memory systems
  • vs. an agent with raw file access
  • Who this is for
  • Control panel
  • Quick start
  • Versioning and compatibility
  • Upgrading
  • Cost expectations
  • The self-describing vault
  • Multi-user mode
  • Configuration
  • Architecture
  • Project layout
  • Development
  • Security notes

Why this exists

There are three things going on here, and they're more interesting together than apart.

1. Agent memory that you can actually read

If you let an agent run for a while, it needs memory. Most setups solve this with an opaque vector store, a SQLite blob, or a managed "memory" service that you can't see into. That works until you want to know what the agent thinks it knows about you, or you need to correct something, or you want to understand why it just made a weird suggestion.

This server gives you a different deal. Agent memory lives as markdown files in your vault. Folder structure, file names, frontmatter, all visible. You can open the file in Obsidian and read it. You can edit it. You can delete it. You can grep it. The agent's "memory" is a human-auditable artifact that sits in the same place as your own notes, with the same tools available.

The home lab is the use case that sold me on this. My vault has notes on the rack, the network, and every Home Assistant integration. I can say "set up a night-light mode in the master bathroom, 1% after 11pm" and a sysadmin agent finds the right config, makes the change, and updates the doc in the same pass. Six months later when I've forgotten how it works, the answer is in the vault, not buried in some chat history I can't search.

The semantic search and wikilink graph still work over that material, so retrieval is fast and conceptual. But the substrate is files you own, not a black box.

To be precise about the scope: what the server supplies is MCP-accessible storage, keyword and semantic search, and graph operations over markdown notes, for whatever MCP clients you connect. The agents direct their own reads and writes. There is no extraction or decay pipeline running behind them, and nothing rewrites a note because a model judged it stale: an agent remembers something because it wrote a note, and forgets it because someone deleted one. By late 2026 that is less of a contrarian position than it sounds. Every vendor's consolidation step (the "dreaming" or "sleep-time" job) has turned into a separate process you can inspect, rather than silent extraction inside the write path. This server keeps the agent as the author. The consolidation help it will grow is a hygiene report that proposes merges and flags duplicates, and never writes (#359), not a pipeline that edits your notes while you are not looking.

2. A shared memory layer between you and your agents

The other half runs the other way: the vault isn't only the agents' memory, it's mine. I think of my Obsidian vault as my exocortex. The "big me" that includes notes, calendars, scripts, search, and AI assistants is substantially more capable than the "small me" of the biological brain alone. It's also where I do most of my thinking, because writing something down is itself a form of thought.

The problem is that until recently, the vault was passive. I had to go find things. Agents that wanted to help me had to be briefed from scratch every session, and they had no way to see what I'd already written about a topic.

This server fixes that. Now the same vault feeds my own daily writing and any agent I plug into it. The agent reads what I read, links what I link, follows the same wikilinks, sees the same frontmatter. When I write a project note on Sunday, my Monday-morning briefing agent already knows about it. When the agent leaves notes from a research session, they show up in my normal Obsidian search.

A concrete version of this: I'll spend a session in Claude Code on a project, wrap up, push the commits, and then just say "update Obsidian." The agent reads the vault guide, figures out where project notes live in my structure, picks the right format and frontmatter, and leaves a session log I can later roll into a status report. No path-passing, no telling it what to write — the conventions are already in the vault, and it follows them.

That's the exocortex idea made concrete: one place that holds context, and both the human and the agents reading and writing into it on the same terms.

3. The vault follows you

The thing that still surprises me is that this is internet-facing. Same vault, same notes, reachable from anywhere I happen to be talking to an agent — Claude in a browser tab, Claude on my phone on the train, an n8n workflow firing on a schedule, a Claude Code session on whatever laptop is in front of me. All behind OAuth or a bearer key, all hitting the same source of truth.

So when I hear an interesting podcast on a commute and want to think out loud about it with Claude on my phone, the agent isn't starting cold. It can pull up what I've already written on adjacent topics, surface a note I half-finished six months ago, and at the end of the conversation suggest updates and write them in. The vault doesn't have to be near me to be the thing I'm working in. (A session away from the keyboard walks through exactly one of these.)

A session at the keyboard

To make the abstract concrete, a short transcript from a real session. Tool calls inline; the user types in plain English and the agent picks the right tool.

you  > find anything I've written about why retrieval-augmented

chat is hard

claude → semantic_search(query="why retrieval-augmented chat is hard") • 2025-12-03 - RAG failure modes.md • 2025-10-18 - Chunking tradeoffs.md • 2024-06-22 - Vector recall vs precision.md

the closest hit is your December note on RAG failure modes. let me see what it's connected to.

→ get_neighborhood(path="2025-12-03 - RAG failure modes.md", depth=1) 8 connected notes. notable ones: • "Hybrid search" — a re-ranking design you sketched but didn't ship • "Out-of-distribution queries" — a half-finished draft from October • "Embedding model choice" — links to bge-m3, your current model

you have three connected pieces here: a failure-modes catalog, an unshipped hybrid-search sketch, and an abandoned O-O-D draft. want me to summarize all three together, or pull up the draft so you can decide whether to finish it?

you > pull up the draft, and tag it #revisit-2026 in frontmatter while you're there

claude → read_note(path="2025-10-18 - OOD queries (draft).md") → set_frontmatter( path="2025-10-18 - OOD queries (draft).md", updates={"tags": ["draft", "rag", "revisit-2026"]} )

here's the draft, and the tag is on. you stopped right before the section on confidence thresholds; the open question you left yourself was…

Two things to notice. First, the agent didn't need to be told what folder to look in or what tools to use — it picked them. Second, the write at the end is structured (set_frontmatter mutating YAML, not a regex over the file body), so the note round-trips cleanly. The self-describing vault and the wikilink graph are doing the work that makes this feel natural.

A session away from the keyboard

The transcript above is the easy case: I'm at a desk, I can see what the agent is doing, and Obsidian is one alt-tab away. The session that actually changed how I think about this server had none of that.

I was out walking with a health podcast in my ears — a long one, two people who clearly disagreed with each other, an hour of it. I had my phone and no intention of going home to a laptop. So I pulled the episode's transcript, handed it to Claude on my phone, and we talked it through while I kept walking: what the actual claim was, which parts I already had notes on, where it cut against something I'd decided months ago and written down at the time.

The agent had the vault the whole way. It surfaced what I'd already written on the topic, flagged that two dates in an older note were wrong, and asked whether a decision I'd recorded last year still stood given what the episode argued. By the time I got back it had written all of it in: the health-related decisions I'd actually landed on during the walk, the date corrections in the old note, a couple of new notes on the episode itself — and, because the conversation kept circling back to it, a durable note on how I decide which experts to trust on medical questions in the first place. That last one is the artifact I keep returning to. It wasn't about the episode at all; it was the reasoning underneath a whole class of decisions, and it now sits in the vault where the next agent will find it.

I never opened Obsidian. Not on the walk, not when I got home. The whole session — retrieval, argument, correction, and the writing that came out of it — went through an agent, and the vault is simply where it landed. Obsidian is how I check the w

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기