Skip to main content
Glama

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 needed

ask 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 mocking

Die 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.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    A
    quality
    C
    maintenance
    Enables seamless interaction with Voicenotes through natural language, allowing users to search, create, edit, tag, and organize their notes via an MCP client like Claude.
    14
    4
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables users to create, link, explore, and synthesize atomic notes using the Zettelkasten method through MCP-compatible clients like Claude.
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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