mcp-data-agent
MCP Data Agent
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.pyist ein echter MCP-Server, aufgebaut auf dem offiziellenmcp-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.pyist ein Test auf Protokollebene, an dem überhaupt kein LLM beteiligt ist – er startet den Server als echten Unterprozess, verbindet sich über stdio, ruftlist_tools()auf und ruftrun_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.pyist 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/ -vVom Server bereitgestellte Tools
Tool | Zweck |
| Schema-Einblick |
| Schreibgeschütztes SQL – Lehnt alles ab, was kein |
| Zusammenfassende Statistiken für |
| 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.pyführt ihn von Ende zu Ende aus, ohne dass ein LLM in der Schleife ist, und der manuelle Fallback-Pfad inmcp_client_agent.pynutzt 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 eigenenGEMINI_API_KEYaus, 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_chartStapel
Python 3.12 · mcp (offizielles Model Context Protocol SDK) · google-genai ·
SQLite · matplotlib
Lizenz
MIT – siehe LICENSE.
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
- AlicenseAqualityCmaintenanceA 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.6MIT
- FlicenseNot gradedqualityBmaintenanceAn 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.
- FlicenseNot gradedqualityCmaintenanceMCP server that routes natural language queries to backend analytics tools (Sales, Finance, Customer, Service) using Google Gemini's function calling.
- AlicenseNot gradedqualityCmaintenanceA 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
Related MCP Connectors
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
GibsonAI MCP server: manage your databases with natural language
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/dhandashreya/mcp-data-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server