Kwipu

作者 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.

263
Stars
39
Forks
Python
语言
2026/8/23
添加时间

⚠️ 第三方软件声明

本 Skill 为第三方开源软件,独立托管于 GitHub。SkillTip 仅为信息目录,不控制或维护底层仓库。所显示的安全检查为自动化且范围有限,安装前请自行审查源码。

阅读服务条款

安装

添加到你的 Claude Code skills 目录:

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

快速入门

使用 Kwipu 等 Skills 的指南。

安全报告

已验证

上次扫描:—

{
  "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

常见问题

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.

评论 (0)

暂无评论,成为第一个分享想法的人!

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 服务器apisai-tools
查看详情

Scrapling

by D4Vinci

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

75,9137,581Python
MCP 服务器
查看详情

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 服务器
查看详情

context7

by upstash

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

61,0602,938TypeScript
MCP 服务器
查看详情

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 服务器
查看详情

开发者还喜欢

基于喜欢此 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 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

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 服务器apisai-tools
查看详情

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 智能体ai-agentsanthropicclaude-code
查看详情

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 智能体claude-codeai-tools
查看详情