llm-wiki-kiss
A KISS self-hosted wiki server for AI agents, providing MCP tools to list, read, search, write, and append notes to Markdown files on the filesystem.
README
llm-wiki-kiss
Un wiki KISS self-hosted per agenti AI — file Markdown su filesystem, accesso uniforme via MCP (stdio) e fallback REST/HTTP opzionale. Stesso contenuto, qualunque sia l'agente: Claude Code, Open Cloud, Perplexity, script Python, browser.
Perché
Le conoscenze condivise tra agenti AI oggi vivono sparse: in tool, in notebook, in conversazioni che si perdono. Questo progetto offre una base di conoscenza persistente, portabile e controllabile al 100%:
- 📁 File
.mdo.htmlleggibili con qualsiasi editor - 🧠 Un server MCP standardizzato che qualunque agente può usare
- 🌐 Una REST API minimale come fallback per i client che non supportano MCP
- 🪶 Nessun database, nessun CMS, versionamento con Git
- 🔌 Funziona ovunque: locale, server privato, container, Codespace
Indice
- Caratteristiche
- Architettura
- Quick start (5 minuti)
- Installazione manuale
- I 5 tool MCP
- API REST
- Configurazione del client MCP
- Skill per agenti
- Script di gestione
- Test e qualità
- Struttura del wiki
- Filosofia
- Licenza
Caratteristiche
- Storage filesystem: una cartella con file Markdown e link relativi.
- Server MCP stdio con cinque tool:
list_pages,read_page,search,write_page,append_note. - Server MCP Streamable HTTP (MCP 2025) per client cloud con autenticazione Bearer.
- API REST FastAPI specchio dei tool MCP, con OpenAPI su
/docs. - Sicurezza base: validazione percorsi (no
.., no NUL), limite 2 MiB per pagina, scope limitato alla root del wiki. - Skill SKILL.md pronte per essere caricate da agenti compatibili (TRAE, Claude Code, …).
- Script shell che gestiscono venv, dipendenze, port checking, pid e log.
Architettura
llm-wiki-kiss/
├── wiki/ # dati Markdown (il tuo wiki)
│ ├── index.md
│ ├── projects/ notes/ decisions/ references/ assets/ logs/
├── wiki_core/ # logica filesystem (WikiStorage, validazione, search)
├── mcp_server/ # server MCP stdio + Streamable HTTP (5 tool)
├── rest_api.py # fallback HTTP FastAPI
├── scripts/ # wrapper shell (setup, start, stop, status, deploy)
├── tests/ # pytest + smoke test MCP via stdio e HTTP
├── .trae/skills/ # SKILL.md per agenti AI
├── pyproject.toml, requirements*.txt, .env.example, .gitignore
├── LICENSE # MIT
└── README.md
Quick start (5 minuti)
Prerequisito: Python 3.10+.
# 1. Clona e configura
git clone https://github.com/hor-net/llm-wiki-kiss.git
cd llm-wiki-kiss
# 2. Crea venv e installa dipendenze (+ dev)
scripts/setup.sh --with-dev
# 3. Avvia la REST API (default: 127.0.0.1:8765)
scripts/start-rest.sh
# 4. Verifica
scripts/status.sh
curl http://127.0.0.1:8765/health
open http://127.0.0.1:8765/docs
Per integrare con Claude Code / Claude Desktop / Open Cloud / Perplexity:
scripts/install-mcp-client.sh --client claude-code
Copia l'output nel file di configurazione del tuo client e riavvialo.
Installazione manuale
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt # + requirements-dev.txt per dev
I 5 tool MCP
| Tool | Cosa fa |
|---|---|
list_pages |
Elenca pagine, opzionale subdir. |
read_page |
Legge il contenuto di una pagina dato il percorso. |
search |
Full-text case-insensitive con snippet e numero di riga. |
write_page |
Crea o sovrascrive una pagina. Aggiunge .md se manca. |
append_note |
Aggiunge testo. Di default accoda al log logs/YYYY-MM-DD.md. |
Tutti i percorsi sono relativi alla root del wiki e separati da /.
Esempi rapidi
// list_pages
{ "subdir": "notes" }
// read_page
{ "path": "notes/esempio-nota.md" }
// search
{ "query": "MCP", "max_results": 20 }
// write_page
{ "path": "notes/idea.md", "content": "# Idea\n\n...", "overwrite": false }
// append_note (path opzionale: default = log del giorno)
{ "content": "Refactor iniziato.", "heading": "Refactor" }
API REST
| Metodo | Endpoint | Descrizione |
|---|---|---|
| GET | /health |
Health check |
| GET | /stats |
Statistiche wiki |
| GET | /pages?subdir=... |
Lista pagine |
| GET | /pages/{path:path} |
Leggi pagina |
| PUT | /pages/{path:path} |
Scrivi pagina |
| GET | /search?q=... |
Ricerca full-text |
| POST | /notes |
Append nota (default log giornaliero) |
| GET | /docs |
OpenAPI interattivo (Swagger UI) |
MCP Streamable HTTP (per client cloud)
Il server MCP è esposto anche via HTTPS con il nuovo trasporto Streamable HTTP (MCP 2025-06-18), così client MCP-aware in cloud (Open Cloud aggiornato, ecc.) possono usarlo senza lanciare un sottoprocesso.
# Avvio con autenticazione Bearer
WIKI_MCP_TOKEN='segreto-casuale-lungo' \
scripts/start-mcp-http.sh --host 127.0.0.1 --port 8766
Il client si connette a http://127.0.0.1:8766/mcp con:
POST /mcp
Authorization: Bearer segreto-casuale-lungo
Accept: application/json, text/event-stream
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
Esponi su HTTPS pubblico con un reverse proxy (Apache, nginx, Caddy) e
Let's Encrypt. Lo script scripts/start-mcp-http.sh accetta
--stateless/--stateful e --json-response/--no-json-response per
modulare il comportamento.
Configurazione del client MCP
Esempio di frammento per Claude Code / Claude Desktop / Open Cloud /
Perplexity (generato da scripts/install-mcp-client.sh):
{
"mcpServers": {
"wiki-kiss": {
"command": "/percorso/al/progetto/.venv/bin/python",
"args": ["-m", "mcp_server", "--root", "/percorso/al/progetto/wiki"],
"cwd": "/percorso/al/progetto",
"env": {
"WIKI_ROOT": "/percorso/al/progetto/wiki",
"WIKI_LOG_LEVEL": "INFO"
}
}
}
}
| Client | File di configurazione |
|---|---|
| Claude Code | .mcp.json nella root del progetto (o globale ~/.claude.json) |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Open Cloud | sezione mcpServers nelle impostazioni del client |
| Perplexity | sezione MCP delle impostazioni del client (dove supportato) |
Dopo la configurazione, riavvia il client perché ricarichi l'elenco dei server MCP.
Skill per agenti
In .trae/skills/ trovi due skill SKILL.md pronte
per essere caricate da TRAE, Claude Code e altri agenti compatibili:
| Skill | Quando l'agente la usa |
|---|---|
wiki-kiss-bridge |
Leggere, cercare, scrivere, citare contenuti del wiki. |
wiki-kiss-operator |
Installare, avviare, fermare, integrare o fare troubleshooting. |
Copia le cartelle in ~/.claude/skills/ (o nel percorso previsto dal
tuo client) per usarle localmente.
Script di gestione
Tutti accettano --help. I log vanno in var/log/, i PID in var/run/.
| Script | Scopo |
|---|---|
scripts/setup.sh |
Crea/aggiorna venv e installa dipendenze. |
scripts/setup.sh --with-dev |
+ pytest, ruff, httpx. |
scripts/setup.sh --recreate |
Ricrea il venv da zero. |
scripts/start-mcp.sh |
Avvia server MCP stdio (per client locali). |
scripts/start-mcp-http.sh |
Avvia server MCP Streamable HTTP (per client cloud). |
scripts/start-rest.sh |
Avvia REST API in background. |
scripts/start-rest.sh --foreground |
Avvia REST in foreground. |
scripts/start-rest.sh --reload |
Modalità sviluppo con auto-reload. |
scripts/stop.sh {mcp|mcp-http|rest|all} |
Ferma uno o più servizi. |
scripts/status.sh |
Mostra stato, PID, log. |
scripts/install-mcp-client.sh |
Genera config MCP stdio per i vari client. |
scripts/run-tests.sh |
Wrapper su pytest (accetta argomenti pytest). |
Variabili d'ambiente riconosciute: WIKI_ROOT, WIKI_LOG_LEVEL,
DEFAULT_HOST, DEFAULT_PORT, NO_COLOR. Possono essere salvate in
.env o .wiki-kiss.env (auto-caricati).
Test e qualità
scripts/run-tests.sh -q
.venv/bin/python -m pytest -q
.venv/bin/python tests/smoke_mcp.py # smoke test MCP stdio
.venv/bin/python tests/smoke_mcp_http.py # smoke test MCP Streamable HTTP
.venv/bin/ruff check wiki_core mcp_server rest_api.py tests
Struttura del wiki
Esempio di organizzazione della cartella wiki/:
wiki/
├── index.md
├── projects/ # documentazione di progetto
├── notes/ # appunti, idee, osservazioni
├── decisions/ # ADR (NNNN-titolo.md)
├── references/ # link e fonti esterne
├── assets/ # immagini, allegati
└── logs/ # log append-only (YYYY-MM-DD.md)
Convenzioni:
- File in Markdown puro, UTF-8.
- Nomi in
kebab-case. - Ogni pagina inizia con un titolo di primo livello (
# Titolo). - Link interni relativi:
[altra pagina](../notes/idea.md). - Nessun frontmatter obbligatorio: solo se serve metadata reale.
Filosofia
KISS prima di tutto.
- Il wiki conserva conoscenza stabile: decisioni, progetti, riferimenti.
- La memoria conversazionale è gestita a parte (es. QMD): serve per il contesto dinamico e di breve durata, non per la conoscenza di lungo periodo.
- MCP rende quella conoscenza accessibile a tutti gli agenti: un solo contratto, infinite integrazioni.
- Niente database:
tar czf wiki-$(date +%F).tgz wiki/è il backup. - Niente lock-in: tutto è testo, tutto è versionabile con Git.
Vantaggi e limiti
Vantaggi: controllo totale, backup banale, migrazione immediata, debug semplice, compatibilità con più agenti AI, crescita per gradi.
Limiti: nessun backlink automatico, nessun database nativo, nessuna UI ricca. La qualità dipende dalla disciplina nella scrittura e nelle convenzioni di naming.
Contribuire
Issue e PR benvenuti. Linee guida:
- Codice in stile ruff (configurato in
pyproject.toml). - Test obbligatori per le modifiche al core (
wiki_core). - Stile del wiki: ADR in
decisions/, regole di naming inwiki/decisions/0001-storage-filesystem.md.
Licenza
MIT — Copyright (c) 2026 Hornet SRL.
Crediti
Progetto ispirato al paper del Model Context Protocol (https://modelcontextprotocol.io) e alla filosofia Unix "do one thing and do it well".
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。