Dynamic Excel 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., "@Dynamic Excel MCP Servercreate a sales report with monthly revenue and profit columns"
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.
Dynamic Excel MCP Server
Dynamic Excel file generation server using Model Context Protocol (MCP). This server allows LLMs to automatically create Excel files with any structure through dynamic JSON schemas.
๐ Features
โ Generate Excel files from JSON schemas
โ Dual transport modes: Local (stdio) and Remote (HTTP/SSE)
โ Deploy anywhere: VPS, Cloud (AWS, GCP, Heroku), Docker
โ Multiple sheets support
โ Advanced formatting (styling, borders, colors)
โ Data validation and conditional formatting
โ Formulas and calculations
โ Charts support (limited)
โ Page setup and printing options
โ S3 and local file storage
โ Presigned URLs for secure downloads
โ Freeze panes, auto-filter
โ Merged cells and row grouping
โ API key authentication
โ CORS support for web clients
Related MCP server: Excel MCP Server
๐ฆ Installation
npm install
npm run buildโ๏ธ Configuration
Create a .env file (copy from .env.example):
For Local (Stdio) Mode:
TRANSPORT_MODE=stdio # Local MCP client mode
STORAGE_TYPE=local
DEV_STORAGE_PATH=./temp-files
LOG_LEVEL=infoFor Remote (HTTP/SSE) Mode:
TRANSPORT_MODE=http # Remote server mode
HTTP_PORT=3000
HTTP_HOST=0.0.0.0
ALLOWED_ORIGINS=* # Or specific domains: https://app.example.com
API_KEY=your-secret-api-key # Optional
STORAGE_TYPE=s3 # or 'local'
AWS_ACCESS_KEY_ID=your_key
AWS_SECRET_ACCESS_KEY=your_secret
AWS_REGION=ap-southeast-1
S3_BUCKET=your-bucket
PRESIGNED_URL_EXPIRY=3600
LOG_LEVEL=info๐ง Usage
๐ฅ๏ธ Local Mode (Stdio) - For Claude Desktop
Add to your Claude Desktop or MCP client configuration:
For macOS (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"excel-generator": {
"command": "node",
"args": ["/absolute/path/to/excel-mcp-server/build/index.js"],
"env": {
"STORAGE_TYPE": "local",
"DEV_STORAGE_PATH": "./temp-files",
"LOG_LEVEL": "info"
}
}
}
}For Windows (%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"excel-generator": {
"command": "node",
"args": ["C:\\path\\to\\excel-mcp-server\\build\\index.js"],
"env": {
"STORAGE_TYPE": "local",
"DEV_STORAGE_PATH": "./temp-files",
"LOG_LEVEL": "info"
}
}
}
}๐ Remote Mode (HTTP/SSE) - For Web Apps & Remote Access
Start the server:
# Using environment variable
TRANSPORT_MODE=http npm start
# Or using npm script
npm run start:http
# Or with .env file configured for http mode
npm startServer endpoints:
http://localhost:3000/health - Health check
http://localhost:3000/info - Server information
http://localhost:3000/sse - SSE endpoint for MCP clientsExample client usage:
See examples/client-example.ts for a complete TypeScript client example using the MCP SDK.
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
const transport = new SSEClientTransport(
new URL('http://localhost:3000/sse'),
{
headers: { 'X-API-Key': 'your-api-key' } // If API_KEY is set
}
);
const client = new Client({
name: 'excel-client',
version: '1.0.0',
}, { capabilities: {} });
await client.connect(transport);
const result = await client.callTool({
name: 'generate_excel',
arguments: excelSchema
});Deployment options:
๐ณ Docker: See
DEPLOYMENT.mdfor Dockerfile and docker-compose examplesโ๏ธ Cloud: Deploy to AWS, GCP, Heroku, etc.
๐ง VPS: Use PM2, systemd, or other process managers
๐ Production: Enable API key auth, configure CORS, use HTTPS
๐ Full deployment guide: See DEPLOYMENT.md
Tool: generate_excel
The server provides one tool: generate_excel
Input Schema:
{
"file_name": "report.xlsx",
"sheets": [
{
"name": "Sheet1",
"columns": [...],
"data": [...],
"formatting": {...}
}
],
"metadata": {...},
"options": {...}
}๐ JSON Schema Structure
Column Configuration
{
"header": "Column Name",
"key": "data_key",
"width": 20,
"type": "currency",
"format": "#,##0โซ",
"style": {
"font": {"bold": true, "size": 12},
"alignment": {"horizontal": "center"},
"fill": {
"type": "pattern",
"pattern": "solid",
"fgColor": {"argb": "FFFF0000"}
}
}
}Supported Column Types
text: Plain textnumber: Numeric valuescurrency: Currency formatpercentage: Percentage formatdate: Date formatdatetime: Date and time formatboolean: Boolean valuesformula: Excel formulas
Formatting Options
{
"freeze_panes": "A2",
"auto_filter": true,
"conditional_formatting": [
{
"range": "A2:A100",
"type": "cellIs",
"operator": "greaterThan",
"formulae": [0],
"style": {
"fill": {
"type": "pattern",
"pattern": "solid",
"fgColor": {"argb": "FF90EE90"}
}
}
}
],
"totals_row": {
"column_key": "=SUM(A2:A100)"
},
"merged_cells": ["A1:D1"],
"row_heights": {
"1": 30,
"2": 25
}
}๐ Examples
1. Simple Data Table
See: examples/01-simple-table.json
Creates a basic product table with formatting:
Freeze panes
Auto-filter
Currency formatting
2. Financial Report
See: examples/02-financial-report.json
Advanced report with:
Report layout with title
Conditional formatting
Percentage calculations
Formula totals
3. Employee Database
See: examples/03-employee-database.json
Employee management spreadsheet with:
Multiple column types
Date formatting
Currency display
Auto-filter
4. Multi-Sheet Report
See: examples/04-multi-sheet-report.json
Comprehensive report with:
Multiple sheets
Summary and detail views
Cross-sheet consistency
๐จ Development
# Run in development mode (with auto-reload)
npm run dev
# Build TypeScript
npm run build
# Start production server
npm start
# Run tests
npm test
# Lint code
npm run lint๐งช Testing with MCP Inspector
Test the server using the MCP Inspector:
npx @modelcontextprotocol/inspector node build/index.js๐ฏ Use Cases
Data Export: Export database queries to formatted Excel files
Financial Reports: Generate quarterly/annual financial statements
Inventory Management: Create product catalogs and stock reports
HR Management: Employee databases and payroll reports
Sales Analytics: Sales reports with charts and conditional formatting
Project Tracking: Project status reports with multiple sheets
๐๏ธ Architecture
src/
โโโ index.ts # MCP Server entry point
โโโ types/
โ โโโ schema.ts # TypeScript types & Zod schemas
โโโ generators/
โ โโโ base-generator.ts # Abstract base class
โ โโโ basic-generator.ts # Simple tables
โ โโโ report-generator.ts # Reports with styling
โโโ formatters/
โ โโโ cell-formatter.ts # Cell formatting
โ โโโ style-formatter.ts # Styling utilities
โ โโโ formula-builder.ts # Formula generation
โโโ storage/
โ โโโ s3-storage.ts # S3 upload handler
โ โโโ local-storage.ts # Local file system
โโโ validators/
โ โโโ schema-validator.ts # JSON schema validation
โโโ utils/
โโโ logger.ts # Logging utility
โโโ error-handler.ts # Error handling๐ Security Notes
For S3 storage, ensure proper IAM permissions
Use presigned URLs for temporary file access
Set appropriate expiry times for download links
Validate all user inputs through Zod schemas
๐ License
MIT
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
๐ง Support
For issues and questions, please open an issue on GitHub.
๐ Acknowledgments
Built with:
Available Tools
1 toolgenerate_excelA
Generate an Excel file from a structured JSON schema.
Use this tool when the user wants to:
Create an Excel file
Export data to Excel
Generate a report/spreadsheet
Download data as .xlsx file
The tool accepts a JSON schema describing the structure, data, and formatting of the Excel file.
Supported features:
Multiple sheets
Custom column widths and formats
Cell styling (fonts, colors, borders, alignment)
Data validation
Conditional formatting
Formulas and totals
Charts and images
Page setup and printing options
Freeze panes, auto-filter
Merged cells
Grouped rows/columns
Sheet protection
Layout types:
table: Simple data table (default)
report: Formatted report with headers and styling
form: Form-style layout
dashboard: Dashboard with charts
calendar: Calendar view
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | No | Name of the Excel file (e.g., "report.xlsx") | |
| sheets | Yes | Array of sheet configurations | |
| metadata | No | Workbook metadata | |
| options | No | Output options |
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 lists supported features and layout types, which adds some context about capabilities, but it does not disclose critical behavioral traits such as whether the tool creates a file locally or returns a download link, error handling, performance considerations, or any limitations (e.g., file size constraints). For a tool with no annotations and complex functionality, this 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 well-structured and appropriately sized, starting with a clear purpose and usage guidelines, followed by supported features and layout types. However, it includes a lengthy list of features that could be condensed or prioritized, and some sentences (e.g., the bullet points under usage) are repetitive. Overall, it is efficient but could be more streamlined.
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 of the tool (4 parameters, nested objects, no output schema, and no annotations), the description is moderately complete. It covers purpose, usage, features, and layouts, but lacks details on output behavior, error handling, and practical constraints. Without an output schema, it should ideally explain what is returned (e.g., file data or a link), but it does not, leaving gaps for an AI agent to understand full usage.
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 100% description coverage, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning that the tool 'accepts a JSON schema describing the structure, data, and formatting of the Excel file,' but it does not provide additional syntax, examples, or constraints. With high schema coverage, the baseline is 3, as the description does not compensate with extra param details.
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: 'Generate an Excel file from a structured JSON schema.' It specifies the verb ('Generate'), resource ('Excel file'), and input type ('structured JSON schema'), making it distinct and unambiguous. With no sibling tools, differentiation is not needed, but the purpose is specific and complete.
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 explicit usage scenarios: 'Use this tool when the user wants to: - Create an Excel file - Export data to Excel - Generate a report/spreadsheet - Download data as .xlsx file.' This gives clear context for when to use the tool. However, with no sibling tools, there are no alternatives to compare against, so it lacks guidance on when not to use it or what other tools might be available, preventing a perfect score.
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.
1 tool update
- First observed
generate_excel
TDQS
With only one tool, there is no possibility of confusion or overlap between tools. The single tool 'generate_excel' has a clear and distinct purpose focused on creating Excel files from JSON schemas.
Since there is only one tool, naming consistency is inherently perfect. The tool name 'generate_excel' follows a clear verb_noun pattern, and there are no other tools to create inconsistencies.
A single tool for a server named 'Dynamic Excel MCP Server' feels thin and under-scoped. While the tool is feature-rich, the domain suggests operations like reading, updating, or analyzing Excel files, which are missing. This limits the server's utility for comprehensive Excel interactions.
The server is severely incomplete for its implied domain of dynamic Excel operations. It only supports generation from JSON schemas, lacking essential CRUD operations such as reading existing files, updating data, or performing analyses. This creates significant gaps that will hinder agent workflows involving Excel beyond initial creation.
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
Structured financial modeling for AI agents: build, version, audit models, export to Excel.
Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
- LayerzOAuthcc.layerz.app
A structured financial modeling layer for AI agents. Build, version, and audit financial models without drift, then export to Excel, from Claude or any MCP client. Learn more: https://layerz.cc/for-agents
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA robust solution that enables AI agents to create, read, modify, and convert Excel files through the Model Context Protocol without requiring Microsoft Office installation.6MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create, read, and manipulate Excel files without requiring Microsoft Excel installation. Supports comprehensive spreadsheet operations including formulas, formatting, charts, pivot tables, and data validation.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create, read, and modify Excel workbooks without requiring Microsoft Excel, supporting operations like formulas, charts, pivot tables, formatting, and data validation.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create, read, and manipulate Excel workbooks without Microsoft Excel installed, supporting formulas, formatting, charts, pivot tables, and data validation operations.MIT
Appeared in Searches
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/nam090320251/dynamic-excel-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server