Skip to main content
Glama
dhandashreya

mcp-data-agent

by dhandashreya

MCP Data Agent

CI License

Ein echter Model Context Protocol (MCP)-Server, der Datenanalysten-Tools über eine Verkaufsdatenbank bereitstellt, plus einen LLM-Agenten (Gemini), der diese Tools zur Laufzeit entdeckt und entscheidet, welches er aufruft, um eine Frage zu beantworten – der eigentliche Punkt von MCP ist, dass die Tool-Definitionen auf dem Server liegen, nicht fest im Agenten verdrahtet.

Warum dies eine echte MCP-Implementierung ist, kein Mock

  • src/mcp_server.py ist ein echter MCP-Server, aufgebaut auf dem offiziellen mcp-Python-SDK, der 4 Tools (list_tables, run_sql_query, get_column_stats, plot_bar_chart) über den standard- stdio-Transport bereitstellt.

  • src/smoke_test_client.py ist ein Test auf Protokollebene, an dem überhaupt kein LLM beteiligt ist – er startet den Server als echten Unterprozess, verbindet sich über stdio, ruft list_tools() auf und ruft run_sql_query über das tatsächliche MCP-Kabelprotokoll auf. Das ist der Beweis dafür, dass der Server funktioniert, unabhängig davon, ob der Agent darüber funktioniert.

  • src/mcp_client_agent.py ist der Agent: Er listet die Tools des Servers auf, konvertiert deren JSON-Schemas direkt in Gemini- Funktionsdeklarationen (parameters_json_schema=tool.input_schema – keine manuelle Schemaübersetzung) und führt die standard Tools-Calling-Schleife aus: Frage das Modell → führe jede angeforderte Tool-Ausführung über die echte MCP-Sitzung aus → reiche das Ergebnis zurück → wiederhole, bis das Modell eine endgültige Antwort gibt.

Related MCP server: agente-ecommerce-mcp-memoria

Erfordert Python 3.10+

Das mcp-Paket unterstützt kein Python 3.9. Wenn Ihr Standard-python älter ist, verwenden Sie py -3.12 (oder eine beliebige andere 3.10+-Interpretation) für jeden der nachfolgenden Befehle.

Pipeline

pip install -r requirements.txt
python src/generate_data.py          # -> data/sales.db (3,000 synthetic orders)
python src/smoke_test_client.py      # protocol-only sanity check, no LLM
python src/mcp_client_agent.py "Which category has the highest revenue?"

Ohne gesetzte GEMINI_API_KEY führt mcp_client_agent.py einen manuellen Fallback aus: es listet die Tools auf, die vom Live-Server entdeckt wurden, und ruft eines direkt auf, sodass die MCP-Verkabelung ohne API-Schlüssel demonstrierbar ist. Mit einem Schlüssel (kopieren Sie .env.example nach .env) läuft der volle Agenten-Schleife.

Tests

tests/test_pipeline.py ruft die Tool-Funktionen des Servers direkt auf (Schema- Introspection, SQL-Ablehnung von Nicht-SELECT-Anweisungen, Statistiken) und – der echte Beweis für eine funktionierende MCP-Implementierung – führt smoke_test_client.py aus, der den Server als echten Unterprozess startet und mit ihm über das echte stdio-Protokoll kommuniziert. Kein API-Schlüssel nötig, sodass er in CI bei jedem Push auf Python 3.12 läuft.

pip install -r requirements.txt pytest
pytest tests/ -v

Vom Server bereitgestellte Tools

Tool

Zweck

list_tables

Schema-Einblick

run_sql_query

Schreibgeschütztes SQL – Lehnt alles ab, was kein SELECT ist, bevor es die Datenbank erreicht

get_column_stats

Zusammenfassende Statistiken für quantity, unit_price oder revenue

plot_bar_chart

Aggregiert nach Region/Kategorie und speichert ein PNG

Verifiziert vs. nicht unabhängig verifiziert

  • Verifiziert: Der MCP-Server und die Protokolli-Verbindung (Tool-Entdeckung, Tool- Ausführung über stdio) – smoke_test_client.py führt ihn von Ende zu Ende aus, ohne dass ein LLM in der Schleife ist, und der manuelle Fallback-Pfad in mcp_client_agent.py nutzt das gleiche echte Protokoll.

  • Gegen das aktuelle google-genai-SDK implementiert, aber in dieser Umgebung nicht gegen echten Live-Schlüssel getestet: Die Gemini-Tool-Calling-Schleife selbst. Die Funktionsforderungen und Funktionsantwort-Typen wurden direkt gegen das installierte SDK geprüft, aber der eigentliche Multi-Turn-Aufruf erfordert einen API-Schlüssel, den diese Umgebung nicht besitzt. Führen Sie ihn mit Ihrem eigenen GEMINI_API_KEY aus, um diesen Pfad zu üben.

Projektaufbau

data/     generated sales.db
src/      mcp_server, smoke_test_client, mcp_client_agent, generate_data
reports/  charts saved by plot_bar_chart

Stapel

Python 3.12 · mcp (offizielles Model Context Protocol SDK) · google-genai · SQLite · matplotlib

Lizenz

MIT – siehe LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A production-grade MCP server for enterprise sales analytics, enabling LLM clients to query, analyze, and visualize sales data from a SQLite database through structured tools, resources, and prompts.
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes a LangChain agent with short-term memory to analyze real e-commerce data through predefined SQL tools, enabling natural language queries on sales, customers, and logistics.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A production-style MCP server exposing six business tools (web search, database, CRM, email, calendar, analytics) to AI clients via a secure, authenticated interface, with mock mode and a reference agent client.
    MIT