Atlas / MCP servers / c-ibarra / ObsidianKnowledgeCurator

ObsidianKnowledgeCuratorBLOCK

mcp/c-ibarra/obsidianknowledgecurator

Autonomous, modular knowledge lifecycle agent built on the Antigravity 2.0 SDK and Model Context Protocol (MCP) for deterministic Obsidian graph curation.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
27 19r · 8w · 0d
Transport
stdio
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

An autonomous, agentic knowledge compiler designed to maintain and synthesize a "Second Brain" within an Obsidian Vault. Built natively with the Google Antigravity SDK and Gemini 3.1 Pro, this system automates the ingestion of technical articles, YouTube videos, and research papers, filtering content via an automated Technical Density Grader, indexing structural relationships via Graphify.net, and maintaining a decoupled skill-data architecture.

👋 For Non-Technical Readers

What this is. A personal automation system that turns a large, ever-growing pile of technical reading (articles, videos, podcasts, books) into a structured, searchable knowledge base — automatically. Instead of bookmarking content and never revisiting it, the system reads it, judges whether it's actually worth keeping, extracts the key ideas, cross-links them to everything already known, and flags contradictions as understanding evolves.

Who it's for. Built and maintained by one engineer for personal use — a working example of applying real software-engineering discipline (automated tests, architecture decision records, staged rollouts, health monitoring) to a personal productivity problem, not a commercial product or team tool.

Why it matters. It demonstrates hands-on experience with skills r

Read from source at commit c37a26553cabOBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add obsidianknowledgecurator --env GEMINI_API_KEY=${GEMINI_API_KEY} --env GOOGLE_API_KEY=${GOOGLE_API_KEY} --env GRAPHIFY_DAEMON_API_KEY=${GRAPHIFY_DAEMON_API_KEY} -- uvx obsidianknowledgecurator
claude-desktop
{
  "mcpServers": {
    "obsidianknowledgecurator": {
      "command": "uvx",
      "args": [
        "obsidianknowledgecurator"
      ],
      "env": {
        "GEMINI_API_KEY": "${GEMINI_API_KEY}",
        "GOOGLE_API_KEY": "${GOOGLE_API_KEY}",
        "GRAPHIFY_DAEMON_API_KEY": "${GRAPHIFY_DAEMON_API_KEY}"
      }
    }
  }
}
03

Exposed tools (27)

19 read · 8 write · 0 destructive.

ToolRiskDescription
audit_vault_healthreadRuns the vault health linter to detect dead wikilinks, orphan notes, and contradictions.
clean_staging_tempreadSafely cleans temporary staging files in temp/ directory.
commit_curated_batchwriteAtomically writes multiple curated raw notes, series master plan, and concept notes to the vault,
commit_curated_notewriteAtomically writes a curated source note to raw/ and concept notes to wiki/,
explore_conceptreadExplores a concept in the knowledge graph, showing its summary/takeaways, source file, and direct relationships.
fetch_article_datareadFetches article web page data with full DOM extraction, concurrent image preservation, and Graphify context mapping.
fetch_book_datareadPrepares non-fiction book data (PDF, EPUB, DOCX, TXT) using the HDAS ingestion engine.
fetch_doc_datareadConverts office documents, presentations, PDFs, spreadsheets, and EPUBs to markdown using AnyDoc.
fetch_playlist_datareadFetches YouTube playlist structure, video metadata, and full transcripts in batch.
fetch_podcast_datareadFetches podcast or audio link, downloads media, and transcribes with Whisper.
fetch_spotify_datareadExtracts synchronized transcript and metadata from a Spotify podcast episode using the Chrome DOM bridge.
fetch_twitter_datawriteFetches Twitter/X post text, metadata, and transcribes embedded video audio via Whisper.
fetch_youtube_datareadFetches YouTube video metadata, downloads/transcribes transcript, and extracts Graphify thematic context.
find_notesreadSearches Obsidian vault notes by title/filename substring (case-insensitive) using SQLite index.
inspect_flashcards_deckreadInspects format, columns, card count, and target deck for any study flashcard file silently without shell permissions.
normalize_notesreadAudits, deduplicates, archives stubs, and injects canonical Obsidian headers into notes in a category.
run_doctor_auditwriteRuns OKC Doctor: comprehensive integrity audit, SQLite DB sync, Master Plans rebuild, ZWSP sanitizer, and Graphify rebuild.
status_flashcards_deckwriteInspects card count and Anki sync status for a multiple-choice flashcard deck.
sync_basic_deckwriteSynchronizes a basic/reversed flashcard deck (TSV or Markdown) to Anki via AnkiConnect.
sync_multi_choice_deckwriteSynchronizes a multiple-choice flashcard deck (Markdown or TSV) to Anki via AnkiConnect.
sync_vault_planswriteSynchronizes Master Plans and runs the vault health check for a given knowledge base category.
validate_flashcards_deckreadAudits a multiple-choice flashcard markdown file against the 6-dimension OKC rubric.
yt_get_transcriptread
yt_list_transcriptsread
ytdlp_get_playlistread
ytdlp_get_transcriptread
ytdlp_list_playlist_videosread
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (6 observation(s))
Network
declared (12 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (12)

HIGHNetwork egress · net.env_exfil · CWE-200, CWE-319
scripts/setup_project.py:19
".env" ... curl
Why it matters. reads secrets in the same file that sends data out
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
scripts/fetch_article_data.py:270
print(f"[Direct Fetch Warning] SSL or connection error: {err}. Retrying with verify=False...", file=sys.stderr)
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
scripts/fetch_article_data.py:273
resp = session.get(url, headers=headers, timeout=15, verify=False, allow_redirects=True)
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
scripts/fetch_article_data.py:576
resp = requests.get(url, headers=headers, timeout=12, verify=False)
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
.agents/rules/reusable-scripts.md:121
Do not attempt to bypass safety controls. Optimization consists in **correctly reusing a legitimate operation**, not evading required authorizations.
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:28
GRAPHIFY_DAEMON_URL="http://127.0.0.1:8787"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.template:44
GRAPHIFY_DAEMON_URL="http://127.0.0.1:8787"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.template:58
ANKI_CONNECT_URL="http://127.0.0.1:8765"
LOWInventory / provenance · inv.hidden_file · CWE-1104
.env.template
.env.template
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:136
- **Direct Anki MCP & AnkiConnect Push**: Automatically creates decks, uploads media assets, and synchronizes cards via the Anki MCP server or local AnkiConnect HTTP API (`http://127.0.0.1:8765`).
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:311
"http://127.0.0.1",
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:247
curl -LsSf https://astral.sh/uv/install.sh | sh

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha c37a26553cabfull audit observations/trust-audit/mcp-server/c-ibarra__obsidianknowledgecurator.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11c37a26553cabBLOCKD69first audit
06

Questions

What is the ObsidianKnowledgeCurator MCP server?

Autonomous, modular knowledge lifecycle agent built on the Antigravity 2.0 SDK and Model Context Protocol (MCP) for deterministic Obsidian graph curation.

What tools does ObsidianKnowledgeCurator expose?

27 in total: 19 read-only, 8 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is ObsidianKnowledgeCurator safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does ObsidianKnowledgeCurator need?

It reads GEMINI_API_KEY, GOOGLE_API_KEY and GRAPHIFY_DAEMON_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does ObsidianKnowledgeCurator run?

It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as obsidianknowledgecurator.

How current is this page?

The grade is for one exact copy of the source (c37a26553cab), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement