Excel Analytics MCP Server
Click on "Install 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., "@Excel Analytics MCP Servershow me the top 10 customers by revenue from the sales table"
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.
Excel Analytics MCP Server
A self-evolving data analytics toolkit for Claude Desktop. Drop your Excel files in, ask questions in plain English, and build up a personal library of reusable analysis tools — no coding required.
What It Does
Upload Excel/CSV files via a web dashboard
Ask Claude questions about your data in natural language
Save analyses as reusable tools you can run again and again
Create custom tools that Claude can use on your behalf
Everything stays local — your data never leaves your machine
Related MCP server: MCP Data Visualization Server
Install
Option 1: PyPI (recommended)
Requires Python 3.10+ and uv.
# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install and configure Claude Desktop
uvx excel-analytics-mcp --setupThat's it. Restart Claude Desktop and start asking questions.
Option 2: From source
git clone https://github.com/blakethom8/excel-mcp.git
cd excel-mcp
bash install.shThe install script will:
Check for Python 3.10+ and install
uvif neededInstall all dependencies in an isolated virtual environment
Configure Claude Desktop automatically
Create the data directory at
~/Documents/Excel Analytics/
How to Use
1. Upload Your Data
Open the dashboard at http://localhost:8765 (starts automatically when Claude Desktop launches the server) and drag your Excel or CSV files into the upload zone.
2. Ask Claude Questions
In Claude Desktop, try prompts like:
"What datasets do I have?"
"Describe the sales table"
"Show me the top 10 customers by revenue"
"What's the average order value by month?"
"Find all invoices over $5,000 from last week"
3. Save Reusable Analyses
When you find a useful query, ask Claude to save it:
"Save this as a tool called 'Top Customers'"
"Create a reusable analysis for monthly revenue trends"
4. Manage Your Tools
Visit the Tools tab in the dashboard to:
View all your saved analyses and custom tools
Edit tool parameters
Test tools with different inputs
Delete tools you no longer need
How It Works
Claude Desktop ←→ MCP Server (stdio) ←→ SQLite DB
↓
REST API (port 8765) ←→ Web DashboardMCP Server communicates with Claude Desktop via stdio (the Model Context Protocol)
REST API runs in a background thread on
localhost:8765to power the dashboardSQLite stores your data locally — Excel/CSV files are converted on upload
Both the MCP server and dashboard share the same database and tool registry
Data Ingestion
When you upload an Excel file:
Each sheet becomes a separate SQLite table
Column names are cleaned (lowercase, underscores)
Numeric columns are auto-detected and properly typed
Headers are auto-detected (no manual configuration needed)
Available Tools
Core Tools (always available)
Tool | Description |
| Show all loaded tables with row/column counts |
| Column names, types, sample values, and basic stats |
| Run read-only SQL queries against your data |
| Statistical summary of a table or specific column |
Meta Tools (for building your toolkit)
Tool | Description |
| Save a SQL query as a reusable named tool |
| Build a custom Python tool (sandboxed) |
| See all your saved tools |
| Update an existing tool |
| Remove a tool |
| Run a tool with test parameters |
Dynamic Tools
Tools you create (via Claude or the dashboard) are saved as JSON files and automatically registered as MCP tools on startup. They persist across sessions and can be shared.
Dashboard
The web dashboard at http://localhost:8765 provides:
Data Manager — upload files, browse tables, preview data, see column stats
Tool Workshop — view core tools, manage saved analyses, test tools with auto-generated forms
The dashboard is a single HTML file with no build step — it works in any modern browser.
Where Your Data Lives
All data stays on your machine in a visible, browsable folder:
Path | Purpose |
| SQLite database with all your uploaded data |
| Saved analyses and custom tools (JSON files) |
| Generated output files |
| User configuration |
You can override the base directory with the EXCEL_MCP_HOME environment variable.
Security
SQL: Read-only queries only (
SELECT). No writes, drops, or schema changes.Python tools: Sandboxed execution with restricted imports. No file system access, no network calls, no dangerous operations.
Local only: All data stored in
~/Documents/Excel Analytics/. Nothing is sent to external servers. The MCP server communicates only with Claude Desktop on your machine.No telemetry: No usage tracking, no analytics, no phone-home.
Configuration
Edit ~/Documents/Excel Analytics/config.json:
{
"port": 8765,
"auto_scan": false
}Setting | Default | Description |
|
| Dashboard port |
|
| Auto-scan a directory for Excel files on startup |
Development
git clone https://github.com/blakethom8/excel-mcp.git
cd excel-mcp
uv sync
uv run python -m excel_mcpRequirements
Python 3.10+
macOS, Windows, or Linux
License
MIT
Available Tools
10 toolscreate_toolC
Create a custom Python tool (sandboxed). The code must define a run(db, **kwargs) function.
parameters should be a JSON string like: {"param": {"type": "string", "description": "...", "default": ...}}
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | Yes | ||
| python_code | Yes | ||
| parameters | No | {} |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only mentions sandboxed execution. It doesn't disclose important behavioral aspects like permissions needed, whether the tool is idempotent, error handling, rate limits, or what happens when creating duplicate tools. The sandbox hint is useful but insufficient for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are reasonably efficient. The first sentence states the core purpose and key requirements. The second provides specific format guidance for the parameters field. Could be slightly more front-loaded but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a creation tool with 4 parameters, 0% schema coverage, no annotations, but has an output schema, the description is minimally adequate. It covers the basic what and how-to-format parameters, but lacks important context about permissions, error conditions, and relationship to sibling tools. The output schema existence helps but doesn't compensate for missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the parameters field format with a JSON string example showing structure, but doesn't clarify the purpose of name, description, or python_code parameters beyond what the schema titles suggest. The example adds some value but doesn't fully explain all 4 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a custom Python tool with sandboxed execution, specifying the required run() function signature. It distinguishes from siblings like delete_tool or edit_tool by focusing on creation, though it doesn't explicitly contrast with test_tool or list_my_tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like edit_tool or test_tool. The description mentions the code structure but doesn't provide context about prerequisites, typical use cases, or when other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_toolB
Remove a user-created tool.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is 'Remove,' implying a destructive mutation, but doesn't specify if deletion is permanent, reversible, requires specific permissions, or has side effects (e.g., affecting saved analyses). This leaves critical behavioral traits unclear for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and target, making it easy to parse. Every word earns its place by conveying essential purpose without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature, no annotations, and an output schema (which handles return values), the description is minimally complete. It states what the tool does but lacks context on permissions, irreversibility, or error conditions. For a delete operation, this leaves gaps that could lead to misuse, though the output schema mitigates some uncertainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information beyond what the schema provides. With 0% schema description coverage and 1 parameter ('tool_id'), the schema alone documents it as a required string. The description doesn't explain what a 'tool_id' is, how to obtain it, or its format. However, since there's only one parameter and the baseline is 3 when schema coverage is high, this minimal case scores adequately but not informatively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and target ('a user-created tool'), making the purpose immediately understandable. It distinguishes itself from siblings like 'create_tool' and 'edit_tool' by specifying deletion. However, it doesn't explicitly mention what 'user-created' means or differentiate from other deletion-like operations that might exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing the tool_id from 'list_my_tools'), exclusions (e.g., cannot delete system tools), or related workflows (e.g., use 'create_tool' to make new ones). The agent must infer usage from the name and sibling tools alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_datasetB
Column names, types, sample values, and basic stats for a table.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation by describing data, but doesn't disclose behavioral traits such as permissions needed, rate limits, error handling, or whether it's safe for large tables. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded in a single, efficient sentence. Every word contributes to explaining the tool's purpose without waste, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema, the description is reasonably complete. It outlines what the tool returns (column names, types, etc.), and the output schema can handle details, though more behavioral context would improve it for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description doesn't add meaning beyond the input schema, which has 0% description coverage for the single parameter 'table'. However, the parameter is straightforward (a table name), and with only one parameter, the baseline is 3 as the description doesn't compensate but the simplicity mitigates the impact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: provides column names, types, sample values, and basic stats for a table. It uses specific verbs ('describe') and resources ('table'), though it doesn't explicitly distinguish from siblings like 'list_datasets' or 'summarize' which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context, or exclusions, and with siblings like 'list_datasets', 'summarize', and 'query', the agent lacks direction on selecting this specific tool for dataset description tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_toolC
Update an existing saved analysis or custom tool.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_id | Yes | ||
| name | No | ||
| description | No | ||
| sql_template | No | ||
| python_code | No | ||
| parameters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Update' implies a mutation operation, the description doesn't specify required permissions, whether changes are reversible, potential side effects, or response format. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place by conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (mutation tool with 6 parameters), lack of annotations, and 0% schema description coverage, the description is insufficiently complete. While an output schema exists (which helps with return values), the description doesn't address behavioral aspects, parameter meanings, or usage context needed for proper tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning none of the 6 parameters have descriptions in the schema. The tool description doesn't add any parameter-specific information beyond what's implied by the action ('Update'), failing to compensate for the lack of schema documentation. Parameters like 'sql_template' and 'python_code' remain unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the resource ('an existing saved analysis or custom tool'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this from sibling tools like 'create_tool' or 'test_tool', which would require mentioning creation vs. modification or testing vs. editing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing tool ID), exclusions (e.g., not for creating new tools), or direct comparisons to siblings like 'create_tool' or 'delete_tool'. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_datasetsA
Show all loaded tables with row/column counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool shows row/column counts, which adds some behavioral context, but lacks details on permissions needed, whether it's read-only (implied but not stated), response format, or any limitations (e.g., pagination).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Show all loaded tables') and adds useful detail ('with row/column counts') without any wasted words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists (so return values are documented elsewhere), the description is reasonably complete. It covers the basic purpose and output metadata, though it could benefit from more behavioral context (e.g., read-only nature) since annotations are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter info, which is appropriate, earning a baseline 4 for adequately handling the lack of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Show all loaded tables') and the resource ('tables'), making the purpose evident. It distinguishes from siblings like 'describe_dataset' (detailed info on one table) and 'query' (executing queries), but doesn't explicitly contrast with 'list_my_tools' (which lists tools, not datasets).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing loaded datasets with basic metadata, but provides no explicit guidance on when to use this versus alternatives like 'describe_dataset' (for detailed info on a specific dataset) or 'query' (for data exploration). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_toolsB
Show all user-created tools (saved analyses and custom tools).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'shows' tools, implying a read-only operation, but doesn't mention permissions, pagination, sorting, or what the output includes (e.g., tool metadata). This leaves gaps for a tool with output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and no parameters, the description covers the basic purpose adequately. However, with no annotations and sibling tools present, it lacks context on usage scenarios and behavioral details, making it minimally viable but incomplete for optimal agent guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing on the tool's purpose instead, which aligns with the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Show' and the resource 'all user-created tools', specifying they include 'saved analyses and custom tools'. It distinguishes from generic listing by focusing on user-created content, though it doesn't explicitly differentiate from sibling tools like 'list_datasets'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'list_datasets' or 'describe_dataset'. The description implies it's for viewing user-created tools but offers no context about prerequisites, timing, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queryA
Run a read-only SQL query against the database. Only SELECT queries allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the operation is read-only (implying no data modification), restricts query types to SELECT (preventing mutations), and implies database interaction. However, it doesn't mention potential limitations like query timeouts, result size limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place: the first states the core purpose, the second adds critical restriction. It's front-loaded with essential information and contains zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (SQL execution), no annotations, and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the core purpose, restrictions, and basic usage context. However, for a database query tool, additional context about result formats, error handling, or connection details would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter documentation. The description adds some context by implying the 'sql' parameter should contain a SELECT query, but doesn't specify syntax requirements, supported SQL dialects, or parameterization options. This provides basic meaning but leaves significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('run') and resource ('SQL query against the database'), and distinguishes it from siblings by specifying 'read-only' and 'Only SELECT queries allowed', which differentiates it from mutation tools like create_tool or delete_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('run a read-only SQL query') and when not to use it ('Only SELECT queries allowed'), providing clear alternatives for other operations (e.g., use create_tool for INSERT, delete_tool for DELETE). This gives the agent precise guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_analysisC
Save a SQL template as a reusable named tool.
parameters should be a JSON string like: {"param": {"type": "string", "description": "...", "default": ...}}
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | Yes | ||
| sql_template | Yes | ||
| parameters | No | {} |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions saving as reusable, implying a write operation, but fails to detail permissions, side effects, error handling, or response behavior. This is inadequate for a tool that likely modifies state, as it lacks critical operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief but front-loaded with the main purpose. The second sentence provides a parameter example, which is useful but could be more integrated. It avoids redundancy but feels slightly fragmented, with room for improvement in flow and efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters with 0% schema coverage and no annotations, the description partially compensates with parameter guidance but lacks behavioral details. The presence of an output schema reduces the need to explain return values, but overall completeness is moderate due to gaps in usage and transparency for a state-modifying tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides an example for the 'parameters' field, clarifying it should be a JSON string with specific structure, which adds value beyond the bare schema. However, it does not explain the semantics of 'name', 'description', or 'sql_template', leaving three parameters partially undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save a SQL template') and the outcome ('as a reusable named tool'), which is specific and understandable. It distinguishes from siblings like 'create_tool' by specifying SQL templates, though not explicitly contrasting with other tools. However, it's not tautological and provides a clear purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like 'create_tool' or 'edit_tool', nor does it mention prerequisites or exclusions. It implies usage for saving SQL templates but lacks explicit context or comparisons, leaving the agent to infer usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarizeC
Quick statistical summary of a table or a specific column.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Quick statistical summary' implies a read-only operation, it doesn't specify what statistics are included, whether it handles missing data, what format the output takes, or any performance considerations. The description is too vague about the actual behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise at 8 words with zero wasted language. It's front-loaded with the core functionality ('Quick statistical summary') and efficiently specifies the scope ('of a table or a specific column'). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which will document return values) and relatively simple parameters, the description is minimally adequate. However, for a statistical summary tool with no annotations, it should provide more context about what statistics are computed, handling of different data types, or sample output format to complement the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for both parameters, the description must compensate but provides minimal help. It mentions 'table or a specific column' which hints at the two parameters' purposes, but doesn't explain the relationship between them, what happens when column is empty vs specified, or what constitutes valid table/column values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('statistical summary') and resources ('table or a specific column'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'describe_dataset' or 'query', which might also provide summary-like functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'describe_dataset' and 'query' that might offer overlapping functionality, there's no indication of when this specific summary tool is preferred or what distinguishes it from other analysis options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_toolB
Run a tool with given parameters and return results.
params should be a JSON string of the parameters to pass.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_id | Yes | ||
| params | No | {} |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool 'return results', which hints at a read operation, but doesn't specify if it's read-only, has side effects, requires permissions, or handles errors. For a tool that runs other tools, this lack of detail on behavior is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, consisting of two sentences that directly state the tool's purpose and parameter format. There is no wasted text, and every sentence earns its place by providing essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (running other tools with parameters), the lack of annotations, and the presence of an output schema, the description is minimally adequate. It covers the basic purpose and parameter format, but doesn't address behavioral aspects like side effects or error handling. The output schema likely handles return values, so the description doesn't need to explain those, but it should do more to guide usage and transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds some meaning beyond the input schema by explaining that 'params should be a JSON string of the parameters to pass.' This clarifies the format and purpose of the 'params' parameter, which the schema only labels as 'Params' with a default. However, with 0% schema description coverage and 2 parameters, it doesn't fully compensate for the lack of schema details, such as what 'tool_id' represents or example usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Run a tool with given parameters and return results.' This specifies the verb ('Run') and resource ('a tool'), making it understandable. However, it doesn't distinguish this from sibling tools like 'create_tool' or 'edit_tool', which might also involve tool operations, so it's not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions, such as how it differs from direct tool invocation or other sibling tools like 'query' or 'save_analysis'. This leaves the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.1.3- First observed
create_tool - First observed
delete_tool - First observed
describe_dataset - First observed
edit_tool - First observed
list_datasets - First observed
list_my_tools - First observed
query - First observed
save_analysis - First observed
summarize - First observed
test_tool
TDQS
The tools have some clear distinctions, but there is notable overlap between create_tool, save_analysis, and edit_tool, which all involve managing custom tools or analyses, potentially causing confusion. Other tools like describe_dataset and summarize serve distinct purposes, but the tool management cluster lacks clear boundaries.
Most tools follow a consistent verb_noun pattern (e.g., create_tool, delete_tool, list_datasets), with only minor deviations like 'query' and 'summarize' being single words. Overall, the naming is readable and predictable, though not perfectly uniform.
With 10 tools, the count is well-scoped for an Excel analytics server, covering data exploration, querying, and custom tool management. Each tool appears to serve a specific role without obvious bloat or redundancy.
The toolset covers core analytics workflows: data inspection (list_datasets, describe_dataset, summarize), querying (query), and custom tool lifecycle (create, edit, delete, test, list). A minor gap is the lack of data manipulation tools (e.g., update or insert), but this is reasonable for a read-focused analytics server.
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 Connectors
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Give Claude only the Google Drive files you choose. Every action logged.
AI-powered corporate learning platform — manage courses, users, and insights via Claude.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceConnects Claude Desktop directly to databases, allowing it to explore database structures, write SQL queries, analyze datasets, and create reports through an API layer with tools for table exploration and query execution.419Mozilla Public 2.0
- AlicenseNot gradedqualityFmaintenanceEnables creating interactive data visualizations from natural language queries using DuckDB for local databases or Databricks for enterprise data warehouses. Supports multiple chart types, CSV imports, SQL queries, and automatic statistical analysis through Claude Desktop.19MIT
- FlicenseBqualityDmaintenanceEnables Claude to directly access, query, and analyze local CSV files using natural language, keeping data private and local.41-
- FlicenseAqualityDmaintenanceEnables Claude to analyze local CSV or Parquet files, handling larger datasets without uploading full files.318-
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/blakethom8/excel-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server