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

DocsAgent — Zotero, Obsidian & Apple Notes MCP Server

作者:docsagent版本 5.0.1i★ –i在你的电脑上运行
注册名称io.github.docsagent/docsagent

安装

概览

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

Instant, private access to your knowledge base: Zotero, Obsidian, Apple Notes (macOS).

PopNx MCP 的三大支柱

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

它能帮你做什么

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

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

安装

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

安装之前

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

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

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "docsagent": {
      "command": "npx",
      "args": [
        "-y",
        "@docsagent/docsagent"
      ],
      "env": {
        "DOCSAGENT_CONFIG": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add docsagent --env DOCSAGENT_CONFIG=your-value -- npx -y @docsagent/docsagent

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "docsagent": {
      "command": "npx",
      "args": [
        "-y",
        "@docsagent/docsagent"
      ],
      "env": {
        "DOCSAGENT_CONFIG": "your-value"
      }
    }
  }
}

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

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "docsagent": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@docsagent/docsagent"
      ],
      "env": {
        "DOCSAGENT_CONFIG": "your-value"
      }
    }
  }
}

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

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

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

需要你填写的值

  • DOCSAGENT_CONFIG env
    Path to the shared docsagent config file (default: ~/.docsagent/config.json)

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

它能做什么

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

基础检查i

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

  • ✓ 通过

    作者与仓库一致

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

  • … 尚未检查

    仍在维护

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

  • … 尚未检查

    有许可证

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

  • – 不适用

    端点有响应

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

  • – 不适用

    使用 OAuth 登录

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

  • … 尚未检查

    工具描述中没有隐藏指令

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

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

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

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

常见问题

DocsAgent — Zotero, Obsidian & Apple Notes MCP Server 安全吗?

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

它需要哪些密钥或代码?

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

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

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

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(5.0.1)于39天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js, Python (uv)。

有什么可以替代它?

同一分类中有: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,276MIT5天前更新
安装

MCP Server for Excel

作者:sbroenne

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

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

作者的 README

打开 README

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

DocsAgent MCP — Zotero, Obsidian & Apple Notes for AI agents 📚⚡

DocsAgent gives AI agents instant, private access to your personal knowledge base. `docsagent` is the spec-driven MCP (Model Context Protocol) server that lets any AI agent — Claude Desktop, Cursor, Cline, Qwen Code, or any MCP client — search, read, and write your Zotero library, Obsidian vault, and Apple Notes (macOS) through a resident C++ search engine. BM25 full-text search + query-ranked passage retrieval over 1,000+ PDFs at ~15 ms, fully local (RAG-ready knowledge base).

  • 🔒 Local-first & private — the engine reads your Zotero library, Obsidian vault, and Apple Notes store directly on your machine. Your notes and PDFs never leave it.
  • 🗂 Three sources, one query — Zotero items/annotations/notes, Obsidian vaults, and Apple Notes (macOS only); mixed search fuses all three by reciprocal rank.
  • ⚡ Native C++ search core — inverted-index BM25 + passage ranking, millisecond lookup, low memory footprint (160–227 MB for a 1,500-paper library).
  • 🧩 8 MCP tools — 5 read + 3 write, with JSON-schema validated arguments, token budgets, result dedup, and a three-layer write safety gate.
  • 🌐 Two transports — stdio for local MCP clients, Streamable HTTP for remote deployment (origin checks, API-key / OAuth 2.0 token introspection, per-request RBAC, /health probe).
  • 🐍 Two shells, one core — this TypeScript package and a feature-equal Python wrapper ship the same tools over the same JSON-RPC contract.

Architecture

MCP Client (Claude Desktop / Cursor / Cline / Qwen Code / any MCP host)

│ stdio (local) or Streamable HTTP /mcp (remote) ▼ MCP shell ← this package (@docsagent/mcp-zotero / docsagent-mcp-zotero) · tool schemas (spec-driven), argument validation, token budget, dedup · write orchestration via the Zotero local API, write safety gate, RBAC · group-library sync via the Zotero Web API │ JSON-RPC 2.0 over HTTP ({coreHost}:{httpPort}/rpc, cpp-httplib) ▼ DocsAgent Core (resident C++ engine) · reads ~/Zotero/zotero.sqlite + storage/, an Obsidian vault, and (macOS) the Apple Notes store — directly on your machine · builds & serves one index per source (BM25 + passage ranking); mixed search (source "all") fuses them by reciprocal rank (RRF, k=60)

The shell never spawns the core during tool calls and never touches your source files. The core runs as a background service and stays available across MCP client restarts. Tool schemas and error codes: spec/.


Quick Start

1. Start the core
npx @docsagent/docsagent start           # spawn the bundled core for your platform

npx @docsagent/docsagent status # pid / endpoint / version

Python shell (same verbs, under the core subcommand):

pip install ./python                      # build the wheel locally (PyPI upload pending)

docsagent-mcp core start

(core stop / core restart also available. The core indexes every configured source — your Zotero data directory, your Obsidian vault, and (macOS) Apple Notes — and serves JSON-RPC on http://0.0.0.0:23120/rpc.)

2. Configure your MCP client

Claude Desktop / Cursor / Cline / Qwen Code (mcpServers):

{

"mcpServers": { "docsagent": { "command": "npx", "args": ["-y", "@docsagent/docsagent"] } } }

Python shell (same tools, same contract, installed from this repo) — mcpServers:

{

"mcpServers": { "docsagent-zotero-py": { "command": "docsagent-mcp" } } }

Install the Python package first (step 1) so docsagent-mcp is on your PATH.

On startup the shell connects to the core, loads sources, and checks index status. If the core is not running it fails fast with startup instructions — it never spawns anything.


MCP Tools (external API)

8 tools, 5 read + 3 write. Schemas are the single-sourced contract in spec/tools/*.json (mirrored into both packages); arguments are validated before handlers run and failures map to typed docsagent error codes.

list_sources

Every searchable source with capabilities, supported targets/includes/browse modes, filters, and document counts. Call this first.

Sources today: zotero (targets items, annotations, notes; collections/tags browse), obsidian (a vault — notes as items, folders/tags browse), and apple-notes (macOS only — the engine omits the source on other platforms). The vault is found at ~/Documents/Obsidian Vault (override with DOCSAGENT_OBSIDIAN_VAULT); Apple Notes is read from the system Notes store (override with DOCSAGENT_APPLE_NOTES_DB).

search

Cross-entry search over one source (items, annotations, and notes).

ParameterTypeNotes
querystringplain keywords or phrases; required unless mode=grep
moderelevance \grepBM25 relevance by default; grep scans for a literal pattern without tokenization or ranking
patternstring, required when mode=grepliteral string to scan for
caseSensitive, wholeWord, maxMatchesmode=grep only: ASCII case folding, [A-Za-z0-9_] word boundaries, hit cap total
target`"items" \"annotations" \"notes"` or arraydefault items
depthids \snippets \fullsnippets by default (BM25-ranked passages)
filtersobjecttags, yearFrom/yearTo, itemType, authors, colors, containerId, titleContains
k, snippetsPerResult, max_tokensnumbersranking depth and token budget (mode=grep: max documents, max hit windows per document)

Returns results[] with global ids (zotero:KEY, obsidian: , apple-notes: ), titles, relevance, snippets; multi-target searches group by target. In mode=grep each result carries matchCount and snippets[] hit windows (hits[] with line/column/offset, and meta hits tagged with field), relevance is 0, and the response adds totalMatches. Results are deduped (id, then normalized title + year) and packed under a token budget.

search runs against config.defaultSource (default zotero). Mixed search is a core capability: pass source: "all" to the core's search / grep methods and every source is ranked independently, then fused with reciprocal rank fusion (k=60) — each hit is tagged with its source. BM25 scores are not comparable across corpora, so fusion is rank-based.

get_content

Read one entry. mode=passages (query-ranked passages, k) or mode=fulltext (offset pagination with nextOffset). Notes return their body with tags and metadata.

get_metadata

include: metadata, abstract, annotations, notes, citation (bibtex / csljson / formatted via citationFormat/citationStyle). Notes are packed under the token budget.

list_library

Browse modes: collections (drill-down via parentId), items (by containerId), tags, saved_searches, standalone_notes. Browse modes are per source — Zotero exposes all of these, while Obsidian and Apple Notes expose folders (drill-down) / tags / items.

Write tools (three-layer safety gate)
ToolWhat it doesKey arguments
import_itemImport local PDFs or resolve DOI / ISBN / arXiv IDs (via the Zotero translation server); optional autoClassify suggests collectionspaths \identifiers, containerId, autoClassify, confirmed
add_noteAdd a Markdown child note to an item (converted to Zotero note HTML), with orphan verification and rollbackid, content, tags, confirmed
batch_modifyBulk add_to_collection / remove_from_collection / add_tags / remove_tags on up to 200 items in batches of 50action, ids, containerId, tags, confirmed

Write tools target Zotero sources only — the Obsidian and Apple Notes sources are read-only.

Write safety gate (spec/algorithms/write-gate.md): layer 1 write tools are not registered unless enableWrites=true; layer 2 confirmed=false returns a preview and consumes no rate-limit quota; layer 3 confirmed writes consume a per-hour rate limit (default 30/h). Anything above 20 items in batch_modify additionally reports requiresConfirmation in the preview.


Engine performance

The C++ engine powers PapersGPT — the same index and retrieval stack ships in this MCP server. Benchmark on a real Zotero installation (full write-up):

MetricMac (Intel i9)Windows VM (4C8G)
Library size1,506 PDFs (4.5 GB on disk)500+ PDFs
Index build time141 sa few seconds
Memory (agent process)227 MB160 MB
Average retrieval latency~15 ms~15 ms
  • Indexing cost scales roughly linearly with library size; retrieval latency stays constant — a 10,000-paper library (~30 GB) indexes in about 15–20 minutes, and everyday search stays at ~15 ms.
  • For comparison: a typical web page load takes 1,000–3,000 ms; a blink of an eye is 100–150 ms. PapersGPT answers in ~15 ms, fully offline.
  • Privacy: your library never leaves your machine.

Configuration

Config lives at ~/.docsagent/config.json (or $DOCSAGENT_CONFIG) — one file shared by the JS shell, the Python wrapper, and the C++ core. Validated against spec/config.json.

KeyDefaultDescription
coreHost0.0.0.0Address the core binds and the shell dials
httpPort23120Core HTTP port (POST /rpc)
coreBinary""Optional explicit path to the core binary
zoteroDataDir~/ZoteroZotero data directory
zoteroApiUrlhttp://localhost:23119/apiZotero local API (write orchestration)
zoteroGroups[]Group libraries to sync from zotero.org
enableWritesfalseRegister the three write tools
writeRateLimitPerHour30Confirmed-write rate limit
maxTokensPerTool4000Token budget per tool result
defaultSourcezoteroSource the shell searches and resolves id prefixes in (zotero, obsidian, apple-notes)
transportstdiostdio or streamable-http
httpListenAddr0.0.0.0:8080Listen address for streamable-http (/mcp)
authMode / authConfignoneapi-key or oauth2 (RFC 7662) + allowedOrigins
rbacRoles{}role → allowed tool names (per-request RBAC on HTTP)
logLevelinfodebug / info / warn / error

Distribution

ChannelPackageBundled coreSize
npm (JS/TS shell)@docsagent/docsagentall platforms in bin/~70 MB tarball
PyPI (Python shell)docsagent-mcp (pip install ./python)same binaries in the wheel~65 MB wheel

Bundled core platforms: macOS universal (Intel + Apple Silicon), Windows x64 (x86_64), Linux x64 (x86_64) — Linux ARM is not supported. Source availability: Zotero and Obsidian work on every platform; Apple Notes is macOS-only (list_sources omits it elsewhere).

Both shells read the same config and talk to the same core — pick either (or both) as your MCP distribution channel. Core lifecycle (start / stop / restart / status) is available from both CLIs.

Links

License

Apache-2.0

问 PopNx