Kwipu

by benmaster82Verified

Ask questions across your Markdown notes using a fully local Graph RAG engine. Built for Obsidian vaults, works with any folder of Markdown files. Extracts entity-relation triples from wikilinks & YAML frontmatter, retrieves answers via hybrid search (vector + BM25 + temporal). Multilingual. No cloud. Runs on Ollama.

263
Stars
39
Forks
Python
Language
8/23/2026
Added
View on GitHubDownload ZIP

⚠️ Third-Party Software Notice

This skill is third-party open-source software developed and hosted independently on GitHub. SkillTip is an informational directory and does not control or maintain the underlying repository. Any security checks displayed are automated and limited in scope. Review the source code before installing.

Read the Terms of Service

Installation

Add to your Claude Code skills directory:

# Add to your Claude Code skills
git clone https://github.com/benmaster82/Kwipu

Getting Started

Guides for using skills like Kwipu.

Security Report

Verified

Last scanned: —

{
  "status": "PASSED",
  "issues": []
}

README.md

Kwipu

Python 3.11+ License: MIT Ollama LlamaIndex Obsidian Compatible MCP Server

中文文档

A local Graph RAG system that turns your markdown notes into a queryable knowledge graph. Ask questions in natural language and get answers that connect information across multiple files.

Built for Obsidian vaults but works with any folder of markdown files.

Kwipu in action

Query response example

What's New

  • MCP Server - use Kwipu as a tool inside Claude Desktop, Cursor, Windsurf, or any MCP-compatible agent. All processing runs locally via Ollama.
  • Incremental updates - editing a note no longer rebuilds the entire graph. Modified files are updated in-place in seconds.
  • CLI model override - switch LLM or embedding model without editing code: --llm-model, --embed-model
  • Startup validation - checks that Ollama is running and models are available before starting. Clear error messages with suggested commands.
  • Storage integrity - detects embedding model mismatches to prevent silent corruption of the graph.
  • Refined prompt - rewritten anti-hallucination rules reduce false information while keeping answers complete.

Features

  • Property Graph Index - builds a knowledge graph from your notes using LLM-extracted relationships
  • Obsidian-native - automatically parses [[wikilinks]] and YAML frontmatter into structured graph triples
  • Multilingual - supports Italian, English, French, German, Spanish, Portuguese (auto-detected)
  • Hybrid retrieval - combines 4 retrieval strategies:
    • LLM synonym expansion (optional, disable with --fast)
    • Vector similarity search
    • BM25 keyword scoring
    • Temporal/metadata matching
  • Real-time sync - watches your folder for changes and updates the graph incrementally
  • Incremental updates - modified files are updated in-place (delete + re-insert) without rebuilding the entire graph
  • Anti-hallucination prompt - strict instructions to cite sources and avoid inventing facts
  • Fully local - runs on Ollama, no data leaves your machine
  • Startup checks - verifies Ollama is running and models are available before starting
  • Storage validation - detects embedding model mismatches to prevent silent corruption
  • CLI model override - switch models without editing code via --llm-model and --embed-model

Requirements

  • Python 3.11+
  • Ollama running locally
  • An LLM model (e.g. llama3.1:8b, qwen2.5:7b, mistral:7b)
  • An embedding model (default: nomic-embed-text)

Setup

# Install dependencies
pip install -r requirements.txt

# Pull models in Ollama
ollama pull llama3.1:8b
ollama pull nomic-embed-text

MCP Server (Claude Desktop, Cursor, Windsurf)

Kwipu can run as an MCP server, allowing AI agents to query your knowledge graph directly. All processing happens locally via Ollama - the agent only sends the question and receives the answer.

Add to your claude_desktop_config.json (or equivalent MCP config):

{
  "mcpServers": {
    "kwipu": {
      "command": "C:/path/to/python.exe",
      "args": ["C:/path/to/kwipu_mcp_server.py"]
    }
  }
}

Replace paths with your actual Python and project locations. Requires Ollama running with the configured model.

Usage

# Full mode (default, all retrievers)
python geode_graph.py

# Fast mode (skips LLM synonym retriever, faster queries)
python geode_graph.py --fast

# Override models from CLI (no need to edit the file)
python geode_graph.py --llm-model qwen2.5:7b --embed-model nomic-embed-text

# Build with cloud model, then query with local model
python geode_graph.py --llm-model gpt-oss:20b-cloud
# After build completes, restart with:
python geode_graph.py --llm-model qwen2.5:3b --fast

Place your markdown files in ./knowledge_base/ (or change KNOWLEDGE_DIR in the config). The system builds the graph on first run and watches for changes.

How It Works

Your Notes (.md)
      │
      ▼
┌─────────────────────┐
│   Pre-processing    │  ← Extracts [[wikilinks]], YAML frontmatter
│   (lang_config.py)  │  ← Infers relations from context (multilingual)
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│   LLM Extraction    │  ← Extracts additional entity-relation triples
│   (SimpleLLMPath)   │
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│  Property Graph     │  ← Merges structural + LLM triples
│  Index              │  ← Persisted to disk (storage_graph/)
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│  Hybrid Retrieval   │  ← Synonym + Vector + BM25 + Temporal
└─────────┬───────────┘
          │
          ▼
┌─────────────────────┐
│  LLM Response       │  ← Generates answer from retrieved context
└─────────────────────┘

Project Structure

├── geode_graph.py       # Main application (terminal interface)
├── kwipu_mcp_server.py  # MCP server for AI agent integration
├── lang_config.py       # Multilingual configuration (stopwords, patterns, relations)
├── requirements.txt     # Python dependencies
├── knowledge_base/      # Your notes go here
│   └── examples/        # Example notes to get started
└── storage_graph/       # Generated graph index (auto-created, gitignored)

Pointing to an Obsidian Vault

Change KNOWLEDGE_DIR to your vault path:

KNOWLEDGE_DIR = "C:/Users/YourName/Documents/MyVault"

The system reads files without modifying them. It ignores .obsidian/ configuration files automatically.

Model Recommendations

ModelRAM (Q4)QualitySpeed per query (CPU)Speed per query (GPU)
1B~2 GBBasic~8s~2s
3B~3 GBGood~30-60s~5-8s
7-8B~5-6 GBGreat~2-5 min~15-25s
20B~12 GBBestNot practical~15s

For serious use, 7B+ with a GPU is the sweet spot. The 3B is a good compromise for CPU-only setups.

Build Time Estimates

First-time graph construction requires an LLM call for each document chunk. Subsequent runs load the graph from disk instantly. Times can vary ±2x depending on note length and model.

NotesGPU (7B)CPU (7B)CPU (3B)
5~2 min~8 min~4 min
20~8 min~30 min~15 min
50~20 min~1.5 hrs~40 min
100~40 min~3 hrs~1.5 hrs
500+~3 hrsNot recommendedNot recommended

Adding a single new file is incremental (~20-60s) and does not rebuild the full graph. Modifying an existing file also uses incremental update (delete + re-insert). Only file deletion triggers a full rebuild.

Resource Usage

ComponentRAMNotes
Ollama (LLM)2-14 GBDepends on model size and quantization
Ollama (embeddings)~300 MBnomic-embed-text
Kwipu (indexing)0.5-4 GBDepends on number of notes
Kwipu (queries)200-500 MBAfter graph is built
Total (7B Q4)~8-12 GBRecommended minimum: 16 GB system RAM

Tip: Use Cloud Models for Graph Building

If your hardware is limited, you can use a powerful cloud model via Ollama to build the graph once, then switch to a smaller local model for daily queries. The graph is persisted to disk, so you only need the large model during construction.

# Step 1: Build the graph with a cloud model (one-time, high quality extraction)
python geode_graph.py --llm-model gpt-oss:20b-cloud
# Wait for "Graph built and saved successfully", then exit.

# Step 2: Switch to a small local model for queries (fast, low resource)
python geode_graph.py --llm-model qwen2.5:3b --fast

This gives you the best of both worlds: a high-quality graph built by a 20B+ model, with fast and lightweight queries on a 3B model. The graph structure (entities, relations, triples) doesn't change when you switch models - only the response generation uses the smaller model.

Note: If you change the embedding model (--embed-model), you must delete storage_graph/ and rebuild. Kwipu will detect the mismatch and warn you.

Contributing

Contributions are welcome. Here's how to get started:

# Clone and setup
git clone https://github.com/benmaster82/Kwipu.git
cd Kwipu
pip install -r requirements.txt

Areas where help is needed:

  • CJK language support - Looking for help adding Chinese, Japanese, and Korean. Requires word segmentation and language-specific patterns. See open issues.
  • Retriever attribution logging - Log which retriever (vector, BM25, temporal, synonym) contributed context for each answer
  • Evaluation set - Build a categorized test suite (exact-source, multi-hop, temporal, negative questions)
  • Provenance inspector - Surface the chain: answer claim -> cited note -> extracted entity/edge
  • Telegram bot integration - Query the knowledge base remotely via Telegram
  • Performance - Incremental update on file modification (currently triggers full rebuild)

Guidelines:

  • Keep it simple. This is a local-first tool, not an enterprise platform.
  • Test with real Obsidian vaults when possible.
  • One feature per PR. Small PRs get reviewed faster.
  • English for code, comments, and commit messages.

Open an issue first if you want to discuss an approach before coding.

Roadmap

  • Telegram Bot - Query your Obsidian vault or knowledge base from anywhere via Telegram

License

MIT

Frequently Asked Questions

What is Kwipu?

Kwipu is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by benmaster82. Ask questions across your Markdown notes using a fully local Graph RAG engine. Built for Obsidian vaults, works with any folder of Markdown files. Extracts entity-relation triples from wikilinks & YAML frontmatter, retrieves answers via hybrid search (vector + BM25 + temporal). Multilingual. No cloud. Runs on Ollama. It has 263 GitHub stars.

Is Kwipu safe to use?

Yes. Kwipu passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.

How do I install Kwipu?

Clone the repository with "git clone https://github.com/benmaster82/Kwipu" and add it to your Claude Code skills directory (see the Installation section above).

What programming language is Kwipu written in?

Kwipu is primarily written in Python. It is open-source under benmaster82 on GitHub, so you can review or fork the full source.

Are there alternatives to Kwipu?

Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh Kwipu against similar tools.

Comments (0)

No comments yet. Be the first to share your thoughts!

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP Serversapisai-tools
View details

Scrapling

by D4Vinci

🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!

75,9137,581Python
MCP Servers
View details

TrendRadar

by sansan0

⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。

61,65224,883Python
MCP Servers
View details

context7

by upstash

Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

61,0602,938TypeScript
MCP Servers
View details

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

39,9393,219C
MCP Servers
View details

Developers Also Liked

Based on votes and bookmarks from developers who liked this skill

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI Agentsai-agentsanthropicclaude-code
View details
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI Agentsai-agentsbrainstorming
View details

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP Serversapisai-tools
View details

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI Agentsai-agentsanthropicclaude-code
View details

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI Agentsclaude-codeai-tools
View details