PersonalKB
MCP Server + Client
PersonalKB: ein echter Model Context Protocol (MCP)-Server, Notizsuche plus eine Live-Wetterabfrage und ein Client/Agent, der mit ihm kommuniziert. Die MCP-Protokollebene wird niemals gemockt: Jeder Test startet einen echten Server-Subprozess und führt echte JSON-RPC-Kommunikation darüber durch, entweder über stdio oder über echtes HTTP. Das Einzige, was offline simuliert wird, ist die Tool-Auswahl-Entscheidung des LLM selbst; um hier irgendetwas auszuführen, wird kein API-Schlüssel benötigt, außer für das finale --real-Flag.
Problem: Ein Modell mit einem handgestrickten JSON-Blob an Tools anzubinden funktioniert, bis du einen zweiten Client, einen entfernten Server oder die Tools von jemand anderem brauchst. MCP ist der offene Standard von Anthropic dafür, wie ein Modell Tools entdeckt und aufruft, Ressourcen liest und Prompt-Vorlagen verwendet – stattdessen über ein echtes Drahtprotokoll. Dieses Projekt baut einen echten Server gegen dieses Protokoll, von den Dekoratoren bis hin zu einer funktionierenden Client-Brücke und Agenten-Schleife.
Gezeigte Fähigkeiten: Aufbau eines MCP-Servers (Tools, Ressourcen, Prompts) mit FastMCP, sowohl stdio- als auch streamable-HTTP-Transporte, eine Client-Brücke, die Tools live über das Protokoll entdeckt, ein deterministischer Offline-Tool-Router und eine echte agentische Schleife gegen die Claude API, SQLite-Volltextsuche (FTS5) sowie pytest gegen echten Protokollverkehr (ohne Mocking).
Tech-Stack: Python 3.10+, das mcp SDK (FastMCP), SQLite (Standardbibliothek), das Anthropic SDK für den echten Agent-Pfad, requests für Live-Wetter (Open-Meteo), pytest.
Was es bereitstellt
Das Ausführen von mcp_kb.server startet einen MCP-Server, PersonalKB, der auf Notizen aufsetzt, die in SQLite mit Volltextsuche gespeichert sind:
Tools:
search_notes(query, limit),add_note(title, body, tags),list_tags(),get_weather(city).Ressourcen:
note://{note_id}(eine Notiz abrufen),notebook://summary(eine Zusammenfassung des gesamten Notizbuchs).Prompt:
research_prompt(topic), eine wiederverwendbare Prompt-Vorlage.
Related MCP server: MCP Apple Notes
Ausführen
python -m venv .venv ; .\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python generate_data.py # seeds data/notes.db with 15 hand-written notes
python -m mcp_kb tools # list tools/resources/prompts
python -m mcp_kb ask "find notes about python"
python -m mcp_kb ask "what's the weather in Paris"
python -m mcp_kb serve # run the server directly (stdio)
python -m mcp_kb serve --http # or over streamable-HTTP
pytest -q # the full suite, all real protocol traffic, no key neededask startet den echten Server, entdeckt seine Tools live über MCP und beantwortet deine Frage standardmäßig mit einem deterministischen Offline-Router oder mit der echten Claude API, wenn --real gesetzt ist (dafür wird ANTHROPIC_API_KEY in .env benötigt).
Wie es zusammenspielt
mcp_kb/
├── db.py SQLite + FTS5 notes store: search, add, tags
├── weather.py an offline table, or real keyless Open-Meteo data with --live-weather
├── server.py the actual MCP server (FastMCP-based): tools, resources, a prompt
├── bridge.py the MCP client wrapper: discovers tools/resources/prompts live
├── llm.py the offline deterministic tool-choice router
├── agent.py the agentic loop: offline router, or a real Claude tool-use loop
└── cli.py python -m mcp_kb tools|ask|serve
tests/ 41 tests, all real protocol traffic (stdio and HTTP), no mockingDie entscheidende Designentscheidung: server.py ist ein dünner Wrapper um db.py und weather.py; die einzige Aufgabe der MCP-Ebene ist es, zwischen dem Protokoll und einfachen Python-Funktionen zu übersetzen. Genau diese Trennung macht die zugrunde liegende Logik ohne Protokoll-Overhead testbar, während die Protokollebene selbst in jedem Test real durchlaufen wird.
Einen echten MCP-Client verbinden
Derselbe Server läuft auch unverändert in der echten Claude Desktop-App: Richte die MCP-Konfiguration auf python -m mcp_kb serve aus, und sie kann in einem normalen Chat deine Notizen durchsuchen oder das Wetter abfragen, wobei sie genau die in server.py definierten Tools aufruft. Siehe hosting/HOSTING_GUIDE.md für die Verbindungsschritte und für die Bereitstellung des HTTP-Transports an einem Ort, den ein entfernter Client erreichen kann.
Was ich gelernt habe
MCP trennt was ein Tool tut von wie ein Client es findet und aufruft: Der Server deklariert Tools, Ressourcen und Prompts einmal, und jeder konforme Client (eine handgestrickte Brücke oder Claude Desktop) kann sie ohne eigenen Klebecode entdecken und nutzen.
Die Protokollebene dünn zu halten und die Logik in einfache, testbare Python-Funktionen zu verschieben, hat es der Testsuite ermöglicht, echten Client/Server-Verkehr auszuführen, ohne dass es langsam oder zerbrechlich ist.
stdio und streamable-HTTP sind nur zwei Transporte unter demselben Protokoll; die Tools, Ressourcen und Prompts, die ein Server bereitstellt, ändern sich nicht dadurch, wie ein Client ihn erreicht.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceImplements the Zettelkasten knowledge management methodology, allowing you to create, link, explore and synthesize atomic notes through Claude and other MCP-compatible clients.146MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search, read, create, and append Apple Notes using MCP tools, supporting bulk folder reads and tag search.11MIT
- FlicenseAqualityCmaintenanceEnables seamless interaction with Voicenotes through natural language, allowing users to search, create, edit, tag, and organize their notes via an MCP client like Claude.144
- AlicenseNot gradedqualityDmaintenanceEnables users to create, link, explore, and synthesize atomic notes using the Zettelkasten method through MCP-compatible clients like Claude.MIT
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Cross-AI personal memory. Save once in ChatGPT, recall in Claude, Mistral, Grok, or any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/K-Divyasri/mcp-server-client'
If you have feedback or need assistance with the MCP directory API, please join our Discord server