ask-your-data-mcp
Integrates with Amazon Bedrock via the Converse API to turn CSV query results into concise natural-language answers suitable for speech, with a deterministic fallback response if Bedrock is not configured or the AWS call fails.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Ask Your Data
An Alexa+ track prototype: a Streamable HTTP MCP server that loads CSV text, filters and aggregates it, and can use Amazon Bedrock to turn query results into a concise answer suitable for speech.
Demo video (2:45): https://youtu.be/7BZU_YJn_fE
Hackathon scope
Primary track: Alexa+ — self-hosted MCP server implementing MCP spec 2025-11-25 over Streamable HTTP (MCP Python SDK 1.30+; the version is negotiated during the client handshake).
Mini-challenges targeted: AWS Builder (Amazon Bedrock Converse API integration in
bedrock.py) and Open Source (MIT-licensed public project created during the hackathon window).Friction encountered during the build is documented in FRICTION_LOG.md.
The hackathon's official resources page says Alexa+ projects should use open standards for Agent Skills and Streamable HTTP transports. It also describes AWS Builder as an integration of AWS services and Open Source as a contribution made during the hackathon window.
Verify current deadlines, eligibility, and submission requirements on the official Devpost page; those details can change.
Related MCP server: Excel Analyser MCP
Requirements
Python 3.11+
AWS credentials configured through the standard AWS credential chain, or a short-term Bedrock API key, only when invoking the Bedrock answer tool
Bedrock model access in the selected AWS region
Install and run
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[test]"
ask-your-data-mcpThe MCP server uses Streamable HTTP and listens locally on the MCP SDK's default
address (typically http://127.0.0.1:8000/mcp). Keep it bound to localhost
unless you deliberately configure and secure a remote deployment.
Connect a client
Any MCP client that supports Streamable HTTP can connect to
http://127.0.0.1:8000/mcp.
MCP Inspector (browse tools and call them by hand):
npx @modelcontextprotocol/inspectorChoose the Streamable HTTP transport, enter http://127.0.0.1:8000/mcp,
click Connect, then open the Tools tab.
VS Code (GitHub Copilot agent mode) — add .vscode/mcp.json:
{
"servers": {
"ask-your-data": { "type": "http", "url": "http://127.0.0.1:8000/mcp" }
}
}Then ask, for example: "Load data/sample-expenses.csv into ask-your-data and
tell me where most of my money went." The agent calls load_dataset, then
query (group by category, sum amount), then answer_with_bedrock.
Configure Bedrock
Set an AWS region, model ID, and Bedrock credentials before starting the server. Do not put credentials in this repository.
export AWS_REGION=us-east-1
export BEDROCK_MODEL_ID=your-enabled-bedrock-model-idFor a quick local test, create a short-term API key in the Amazon Bedrock
console under API keys. Generate it while the console is set to the same
region as AWS_REGION; it expires with your console session (up to 12 hours).
In the same terminal where you will start the server, enter the key without
echoing it or adding it to shell history:
read -s AWS_BEARER_TOKEN_BEDROCK
export AWS_BEARER_TOKEN_BEDROCKPress Enter after pasting the key. Alternatively, configure AWS credentials using the standard AWS credential chain (for example, an IAM Identity Center profile). The model must be available to your account in that region. The server returns an explicit error if Bedrock configuration is missing or the AWS call fails; CSV loading and query tools do not require AWS access.
MCP tools
load_dataset
Pass csv_text containing a header and at least one data row, plus an optional
dataset name. CSV is limited to 5 MiB and 100,000 data rows. The dataset is
held in memory and is not persisted between server restarts.
query
filters: list of{ "column", "operator", "value" }rules. Operators:eq,ne,gt,gte,lt,lte, andcontains.group_by: optional column name.aggregation: optionalcount,sum(total),avg(averageormean),min, ormax.column: required for numeric aggregations; optional forcount.limit: maximum returned rows/groups (1–1000).
Numeric-looking values are compared numerically; other values are compared
case-insensitively for relational/equality filters. contains is
case-insensitive. Numeric sum and avg reject nonnumeric values. Numeric
min and max are returned as JSON numbers; nonnumeric columns retain text
results.
summarize
Returns dataset name, row count, column names, and up to five sample rows.
answer_with_bedrock
Pass a question and optionally query results; if omitted, the most recent
query result is used. This tool makes a real Amazon Bedrock Converse API
call and therefore requires the AWS configuration above. If Bedrock reports a
configuration or service error, the tool logs the error on the server and
returns a clearly labeled deterministic response from the query results,
naming the group with the largest aggregate when results are grouped. If no
query results are available, it asks you to run a query first.
Development
python -m pytestCurrent limitations
One in-memory dataset is shared by all clients connected to this server.
CSV must be supplied as tool input; no arbitrary local file paths are exposed.
Bedrock answers need an AWS account with Bedrock inference enabled. The hackathon account used for development was blocked by AWS (see FRICTION_LOG.md), so the demo shows the deterministic fallback answer.
A web-based Alexa+ simulator and richer spreadsheet formats (XLSX, Google Sheets, S3) are follow-up work.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Ask questions about a CSV in plain English and get answers, charts and cleaned data back.
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables conversational analysis of CSV and Parquet files through natural language, providing statistics, summaries, data type information, and comprehensive multi-step data analysis.-
- AlicenseNot gradedqualityDmaintenanceEnables efficient reading, analyzing, and querying of Excel, CSV, and JSON files with support for chunked processing, column/field filtering, and streaming for large datasets. Supports multiple transport protocols (stdio, HTTP, SSE) for flexible integration.27 npm4ISC
- AlicenseNot gradedqualityDmaintenanceEnables data analysis and visualization operations such as loading CSV/Excel/JSON files, computing summary statistics, generating charts, and exploring datasets via SSE/HTTP.MIT
- AlicenseNot gradedqualityCmaintenanceProvides read-only SQL analytics on local CSV, Parquet, and JSON datasets using DuckDB, with pagination, security guardrails, and health monitoring.MIT