Pandas Excel Analytics MCP
Provides tools for performing numerical and array operations on uploaded datasets using NumPy, supporting mathematical, statistical, and linear algebra computations.
Provides tools for manipulating and analyzing uploaded tabular datasets using Pandas DataFrames, including filtering, grouping, aggregating, and transforming data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Pandas Excel Analytics MCPUpload sales.csv and tell me which region has the highest profit"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Pandas Excel Analytics MCP
A deterministic Model Context Protocol (MCP) server exposing Pandas, NumPy, Excel/openpyxl, and automated EDA operations over uploaded tabular datasets — built to be driven by an LLM agent (e.g. Langflow + OpenRouter) through the MCP tool-calling protocol.
This server contains no LLM, no embeddings, no RAG, and no Langflow/OpenRouter credentials. It is purely the deterministic data-execution layer: 27 tools across dataset management, Pandas, NumPy, Excel automation, EDA, and export.
Built on the current stable MCP Python SDK (mcp v2.x), where the server
class is mcp.server.mcpserver.MCPServer — the successor to the pre-2.0
mcp.server.fastmcp.FastMCP name used in older tutorials. The public API
(.tool(), .streamable_http_app()) is unchanged, just the import path.
Architecture
User
|
Langflow (orchestration + agent reasoning)
|
OpenRouter LLM (base LLM agent)
|
MCP Client (Tool Mode / Toolset)
| HTTPS · Streamable HTTP · Bearer auth
v
Render — Pandas Excel Analytics MCP (/mcp, /health)
|
Dataset Manager (dataset_id, session, validation)
|
+---------------+---------------+---------------+
| | | |
Pandas Engine NumPy Engine Excel Engine Cleaning Engine
| | | |
+---------------+---------------+---------------+
|
EDA Engine (profiling, data-quality score)
|
+---------+---------+
| | |
CSV XLSX JSONThe MCP server never calls an LLM, never holds OPENROUTER_API_KEY, and
never executes arbitrary code — it only receives validated tool calls and
runs deterministic Pandas/NumPy/openpyxl operations.
Related MCP server: CSV MCP Assistant
The 27 tools
Category | Tools |
Dataset (6) |
|
Pandas (8) |
|
NumPy (3) |
|
EDA (2) |
|
Excel (5) |
|
Export (3) |
|
Local setup
git clone https://github.com/varunmulay-droid/Pandas-excel-numpy-EDA-MCP.git
cd Pandas-excel-numpy-EDA-MCP
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtRun the server:
uvicorn server:app --reload --host 127.0.0.1 --port 8000MCP endpoint:
http://127.0.0.1:8000/mcpHealth check:
http://127.0.0.1:8000/health→{"status":"ok"}
Inspect and call tools manually:
npx @modelcontextprotocol/inspectorConnect using transport "Streamable HTTP" to http://127.0.0.1:8000/mcp.
Run the test suite (43 tests):
pytest tests/ -vDeploying to Render — step by step
1. Push your code to GitHub
Already done if you're reading this from the repo. Otherwise:
git add -A && git commit -m "deploy" && git push2. Create the service on Render
Go to render.com → New + → Blueprint.
Connect the
Pandas-excel-numpy-EDA-MCPGitHub repo.Render detects
render.yamlin the repo root and pre-fills:Build command:
pip install -r requirements.txtStart command:
uvicorn server:app --host 0.0.0.0 --port $PORTHealth check path:
/health
Click Apply to create the service.
3. Set environment variables
Render auto-generates MCP_API_TOKEN (via generateValue: true in
render.yaml). After the first deploy:
Open the service → Environment tab.
Copy the generated
MCP_API_TOKENvalue — you'll need it for your MCP client'sAuthorization: Bearer <token>header.Update
MCP_ALLOWED_HOSTSto match the exact hostname Render assigned to your service, e.g.pandas-excel-numpy-eda-mcp.onrender.com(Render shows this at the top of the service dashboard once created). This step is required — the MCP SDK rejects any request whose Host header isn't in this allowlist, by design.
4. Deploy
Render builds and deploys automatically on every push to main. Watch the
Logs tab for:
INFO: Uvicorn running on http://0.0.0.0:100005. Verify the deployment
curl https://YOUR-SERVICE.onrender.com/health
# {"status":"ok"}Then verify the MCP endpoint itself with MCP Inspector, pointing at:
https://YOUR-SERVICE.onrender.com/mcpand adding header Authorization: Bearer <MCP_API_TOKEN> if auth is enabled.
Production MCP URL format:
https://YOUR-SERVICE.onrender.com/mcpEnvironment variables
Variable | Purpose | Required |
| Port to bind (Render sets this automatically) | No |
| Bearer token for authenticated requests | Recommended in prod |
| Force auth even if you manage the token differently | No |
| Comma-separated hostnames this server is reachable at | Yes, in prod |
| Upload size limit (default 50) | No |
| Dataset shape limits | No |
| Excel workbook sheet limit | No |
| Max rows returned per tool call | No |
OPENROUTER_API_KEY and any LLM credentials are intentionally not
consumed by this server — keep those in Langflow, not here.
How to connect it further
Connect to Langflow (next step)
In Langflow, add an MCP Tools (MCP Client) component.
Set the server URL to
https://YOUR-SERVICE.onrender.com/mcp, transport Streamable HTTP, and headerAuthorization: Bearer <MCP_API_TOKEN>.Set the component to Tool Mode — all 27 tools populate as a Toolset.
Wire that Toolset into your Base LLM Agent node (OpenRouter).
Test with a prompt like: "Upload sales.csv and tell me which region has the highest profit."
Connect an OpenRouter-backed agent
Keep OPENROUTER_API_KEY in Langflow's LLM node, not in this server — the
MCP server should stay a pure tool provider so it can be reused by any
agent framework (Langflow, LangChain, Claude, custom MCP clients) without
carrying LLM-specific config.
Future: embeddings / RAG (V3+)
Not needed for direct data operations ("group sales by region"). Consider adding a vector store only when you need semantic search over dataset metadata — e.g. "what does this column mean?" — layered in front of this MCP server, not inside it.
Future: persistence (V2+)
Datasets currently live in server memory and are lost on restart/redeploy.
For persistent, multi-instance deployments, swap DatasetManager's
in-memory dict for object storage (S3-compatible) + a metadata database,
without changing any tool signatures.
Security notes
No
eval/exec/shell execution/arbitrary imports anywhere in the codebase.Every dataset is addressed by an opaque
dataset_id— callers never supply filesystem paths.Filenames are sanitised and path-joined under a fixed storage root (
utils/security.py::safe_join) — path traversal is structurally impossible.TransportSecuritySettingshost allowlist is always configured; the SDK's default localhost-only protection is never disabled.Bearer-token auth is opt-in via
MCP_API_TOKEN; when unset the server runs unauthenticated (fine for local dev, not for a public Render URL).
Project layout
pandas-excel-analytics-mcp/
├── server.py # MCP app entrypoint (Streamable HTTP, /mcp, /health)
├── requirements.txt
├── pyproject.toml
├── render.yaml # Render Blueprint
├── architecture.svg
├── src/pandas_excel_mcp/
│ ├── config/settings.py # env-driven limits & config
│ ├── core/ # dataset/session/file managers, validators
│ ├── engines/ # actual Pandas/NumPy/Excel/EDA logic
│ ├── tools/ # thin MCP tool wrappers (27 tools)
│ ├── schemas/ # exceptions + response envelopes
│ └── utils/ # serialization, security, logging
└── tests/ # 43 pytest testsThis server cannot be deployed
Maintenance
Related MCP Connectors
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
Unified gateway exposing 150+ tools across all NexGenData MCP servers via one endpoint.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables LLM evaluation and observability by uploading documents, building test sets, running RAG pipelines, and automatically scoring answers for groundedness, hallucination risk, retrieval quality, latency, and cost, with tools exposed to MCP-compatible clients.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables querying CSV or Excel data using natural language through MCP tools, running pandas operations on an uploaded dataset.-
- FlicenseNot gradedqualityDmaintenanceProvides MCP-compatible tools for data analysis, including file reading, Python/SQL execution, and hypothesis testing. Enables autonomous data analysis agents to interact with a sandboxed environment.1-
- AlicenseNot gradedqualityBmaintenanceEnables any MCP client to run a complete data-science pipeline on a CSV: exploration, cleaning, model comparison, training, tuning, and plain-language analysis. Exposes nine tools that turn raw data into trained models and reports.1MIT