原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Obsidian MCP Server

作者:tylern91版本 0.3.0i★ –i在你的电脑上运行
注册名称io.github.tylern91/obsidian-mcp-server

安装

概览

作者提供的说明(英文原文)

Filesystem-based MCP server for Obsidian vaults — read, search, and edit notes, no app required.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 文档、表格与办公

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

下载作者的 .mcpb 文件

链接指向作者自己的文件;我们不托管也不重新打包它。打开文件后,Claude Desktop 会进行安装。

在终端中运行这条命令

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 tylern91 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“文档、表格与办公”中的其他服务器比较i

  • 星标数多于此分类中其他 3533 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 3533 个服务器的 32% 更新
  • 基础检查结果等于或优于此分类中其他 3533 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Obsidian MCP Server 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.3.0)于2个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 MCPB。

有什么可以替代它?

同一分类中有:Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Agent-Native Calendar

作者:BuilderIO

Agent-Native Google Calendar - manage events, sync, and public booking

在云端运行★ 7,620MIT2个月前更新
安装

Excel MCP Server

作者:haris-musa

Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.

在你的电脑上运行★ 4,276MIT7天前更新
安装

MCP Server for Excel

作者:sbroenne

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

在你的电脑上运行★ 847MIT4天前更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

obsidian-mcp-server

A Go Model Context Protocol (MCP) server for Obsidian vaults. It gives AI agents and development tools direct filesystem access to your vault — no running Obsidian instance required.

Features

  • Read, write, and list notes and directories via MCP tools
  • Frontmatter — parse and update YAML frontmatter with format-preserving rewrites
  • Tags — extract inline #tags, aggregate vault-wide tag counts, add/remove tags
  • Backlinks — on-demand reverse link graph (wikilinks and markdown links)
  • Mutations — heading-anchored patch, safe delete, and move with confirmation guards
  • Full-text search — BM25 Okapi ranked search with match snippets
  • Regex/glob search — RE2 regex or filepath glob search across paths and content
  • Path security — 4-layer validation: lexical checks, ignore/extension filters, case-insensitive existence lookup, and symlink escape prevention
  • Stdio transport — works with any MCP client (Claude Code, Claude Desktop, etc.)
  • Streamable HTTP transport (optional) — TLS 1.3 + bearer token auth by default, loopback-only unless explicitly widened; see --transport http in Configuration and SECURITY.md § HTTP transport
  • Zero Obsidian dependency — operates on the vault directory directly
  • Token counting — responses include approximate token counts (cl100k_base)

MCP Tools

ToolDescriptionParams
read_noteRead a note's content and metadatapath (required), prettyPrint — response includes an etag
write_noteCreate or update a notepath, content (required), mode: overwrite/append/prepend, if_match (optional etag)
list_directoryList files and subdirectoriespath (empty = vault root), prettyPrint
get_frontmatterRead YAML frontmatter from a notepath (required), prettyPrint
update_frontmatterSet or remove frontmatter keys (format-preserving)path (required), updates (JSON object), removeKeys (JSON array), if_match (optional etag)
manage_tagsAdd or remove a tag on a notepath, action: add/remove (required), tag (required), location: frontmatter/inline, if_match (optional etag)
list_all_tagsAggregate all tags across the vault with countsprettyPrint
get_backlinksFind all notes that link to a target notepath (required), prettyPrint
patch_noteApply a heading-anchored patch to a notepath, heading, position: before/after/replace_body, content (all required), if_match (optional etag)
delete_noteMove a note to .obsidian-mcp/trash (requires confirm); pass permanent: true to hard-delete insteadpath, confirm (must match path exactly), permanent (optional, default false), if_match (optional etag)
move_noteMove or rename a note within the vault (requires confirm); rewrites unambiguous inbound links by defaultsrc, dst, confirm (must match src exactly), updateLinks (bool, default true), dryRun (bool, default false), if_match (optional etag; ignored when dryRun is true)
search_notesBM25 full-text search with ranked results and match snippetsquery (required), limit, maxMatchesPerFile, caseSensitive, searchContent, searchFrontmatter, pathScope, prettyPrint
search_regexSearch using RE2 regex or glob patternpattern (required), isGlob, scope, limit, maxMatchesPerFile, prettyPrint
read_multiple_notesRead the content of multiple notes in a single requestpaths (required, JSON array), summary (bool, default false), headChars (int, default 200) — each entry includes an etag
get_notes_infoGet metadata for multiple notes without reading full contentpaths (required, JSON array) — each entry includes an etag
get_vault_statsGet aggregate statistics about the entire vaultincludeTokenCounts (bool, default false)
get_periodic_noteGet a periodic note (daily, weekly, monthly, quarterly, or yearly)granularity (required, enum: daily/weekly/monthly/quarterly/yearly), offset (int, default 0), createIfMissing (bool, default false)
get_recent_periodic_notesGet the N most recent periodic notesgranularity (required, enum: daily/weekly/monthly/quarterly/yearly), count (int, default 5), summary (bool, default true)
get_recent_changesList notes most recently modified in the vaultlimit (int, default 10), since (string, ISO-8601), summary (bool, default true)
audit_notesAudit the vault for hygiene issues: orphans, dangling links, untagged notes, duplicate titlesclasses (JSON array: orphans/dangling-links/untagged/duplicate-titles, default all), limit (int per class, default 20)
get_note_outlineReturn a note's heading tree (level, text, line number) without its bodypath (required), prettyPrint
read_note_linesRead a bounded range of lines from a notepath, startLine (required), lineCount (int, default 200, capped at 2000)
rename_tagRename a tag vault-wide, across frontmatter and inline occurrencesoldTag, newTag (both required)
replace_in_noteScoped search-and-replace within a single note, literal or regexpath, pattern, replacement (all required), isRegex (bool, default false), maxOccurrences (int, default 0 = unbounded)

search_notes, search_regex, list_directory, and get_recent_changes results also include an obsidian://open deepLink field per note, built from --vault-name (see Configuration below).

Notes

`patch_note` semantics: position controls where content is inserted relative to the heading:

  • before — inserted immediately before the heading line
  • after — inserted after the heading's body (before the next same-level or higher heading)
  • replace_body — replaces everything between the heading line and the next same-level heading

`search_notes` parameters:

ParameterTypeDefaultDescription
querystringrequiredSearch query. Multi-term queries use OR logic; the full phrase contributes a bonus score.
limitinteger20Maximum number of results
maxMatchesPerFileinteger3Maximum match snippets per result
caseSensitivebooleanfalseCase-sensitive matching
searchContentbooleantrueInclude note body in scoring
searchFrontmatterbooleantrueInclude frontmatter values in scoring
pathScopestring—Glob pattern to restrict search scope (e.g. Daily Notes/*)
prettyPrintbooleanfalseFormat JSON with indentation

Returns: { query, results: [{ path, score, matchCount, matches: [{line, snippet, term}], tokenCount, reason }], total }

`search_regex` parameters:

ParameterTypeDefaultDescription
patternstringrequiredRE2 regex or glob pattern
isGlobbooleanfalseTreat pattern as a filepath glob (** matches across dirs)
scopestringcontentpath, content, or both
limitinteger20Maximum number of results
maxMatchesPerFileinteger5Maximum match snippets per result
prettyPrintbooleanfalseFormat JSON with indentation

Returns: { pattern, scope, results: [{ path, matches: [{line, snippet}] }], total }

Batch tools (`read_multiple_notes`, `get_notes_info`): The paths parameter is a JSON array string — e.g. '["Notes/foo.md","Notes/bar.md"]'. summary:true returns headOf (first N runes from headChars, default 200) instead of full content, which is useful for large notes to stay within context limits. Both tools enforce --max-batch (default 10); requests with more paths are silently truncated and the response includes "truncated": true.

Optimistic concurrency (`if_match` / `etag`): read_note, read_multiple_notes, and get_notes_info return a SHA-256 etag of the note's content. Pass that value as if_match on write_note, patch_note, update_frontmatter, manage_tags, delete_note, or move_note to make the write conditional — if the note has changed since you read it, the call fails with a REVISION_CONFLICT error instead of silently overwriting someone else's edit. if_match is optional everywhere; omitting it writes unconditionally, as before. Two edge cases: passing if_match for a note that doesn't exist yet is always a conflict (it never creates the note), and move_note's dryRun:true preview does not enforce if_match.

Periodic notes (`get_periodic_note`, `get_recent_periodic_notes`): Configuration (folder and date format per granularity) is read from .obsidian/plugins/periodic-notes/data.json inside the vault. If that file is missing, built-in defaults are used: daily notes use YYYY-MM-DD in Daily Notes/, weekly notes use gggg-[W]ww in Weekly Notes/, and so on. offset=0 resolves to the current period, offset=-1 to the previous period (yesterday, last week, etc.), and offset=+1 to the next period. createIfMissing=true creates an empty note at the resolved path if it does not already exist.

`get_vault_stats`: Returns noteCount, totalBytes, totalLinks, totalTags, topTags (top 20 by count), oldestNote, newestNote, and vaultRoot. Setting includeTokenCounts:true runs token counting across every note — this is expensive for large vaults and is disabled by default.

`audit_notes` classes:

  • orphans — notes that have no tags AND no incoming wikilinks or markdown links (completely isolated notes)
  • dangling-links — notes containing links to vault paths that do not exist (broken references)
  • untagged — notes with no frontmatter tags and no inline #tags
  • duplicate-titles — multiple notes sharing the same filename stem, which causes wikilink ambiguity

Each class result is capped at limit entries (default 20). When results are truncated, the response includes "truncated": true.

MCP Prompts

Prompts are server-defined conversation starters that the host (Claude Code, Claude Desktop) exposes in its UI. Each prompt pulls live vault data and constructs a ready-to-use message for the LLM.

PromptDescriptionArguments
summarize_noteSummarize a note: 3 key bullets, entities, open questionspath (required)
daily_note_reviewReview a daily note: carryover TODOs, link suggestions, missing tagsoffset (int, default 0)
weekly_reviewWeekly retrospective from the last 7 daily notesweekOffset (int, default 0)
find_relatedSuggest related notes worth linking, grouped by relationship typepath (required)
vault_health_checkAudit orphans, dangling links, untagged notes, duplicate titles; prioritize fixes*(none)*

Prompts are invoked from the host's prompt picker (e.g. / in Claude Code). They never modify the vault.

MCP Resources

Resources are read-only vault data that the host can attach directly to a conversation context window — no explicit tool call required.

Resource / TemplateURIMIMEDescription

| Vault statistics | `obsid

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx