Edit SSRS reports using AI - simple tools to read and modify RDL files
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
mcp-name: io.github.bethmaloney/rdl-mcp
Edit SSRS reports using AI assistants instead of wrestling with 2000+ lines of XML. This Model Context Protocol (MCP) server gives Claude, Copilot, and other AI tools simple commands to read and modify RDL files.
Read reports:
describe_rdl_report - Get report structure overviewget_rdl_datasets - View datasets, fields, and stored procedures (supports field limiting and filtering)get_rdl_parameters - List all report parametersget_rdl_columns - See column headers, widths, and bindingsModify reports:
update_column_header / update_column_width - Change columnsadd_column / remove_column - Add or remove columnsupdate_column_format - Change number/date formattingupdate_stored_procedure - Swap stored proceduresadd_dataset_field / remove_dataset_field - Manage dataset fieldsadd_parameter / update_parameter - Manage parametersvalidate_rdl - Validate XML after changesWhy it's better than editing XML:
Requirements:
Installing uv:
curl -LsSf https://astral.sh/uv/install.sh | shpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"pip install uv or see installation docsNote: uvx (included with uv) automatically handles the Python environment and dependencies. No manual Python package installation needed!
Edit config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonAdd to VSCode settings (.vscode/mcp.json in your workspace or user settings):
Note: Requires VSCode with Copilot Chat extension installed.
After installation: Restart your AI assistant and try: "Describe the structure of my report.rdl file"
Set environment variables:
RDL_MCP_LOG_LEVEL: DEBUG, INFO, WARNING, or ERRORRDL_MCP_LOG_FILE: Path to log fileJust ask your AI assistant in natural language:
The AI assistant will use the appropriate MCP tools automatically.
Without MCP (manually editing XML):
With MCP (one command):
describe_rdl_report(filepath) - Report structure summaryget_rdl_datasets(filepath, field_limit?, field_pattern?) - Datasets with fields and stored procedures
field_limit: 0 = counts only (default), -1 = all fields, N = limit to N fieldsfield_pattern: Optional regex to filter field namesget_rdl_parameters(filepath) - All parameters with configurationsget_rdl_columns(filepath) - Column headers, widths, bindingsupdate_column_header(filepath, old_header, new_header) - Change column textupdate_column_width(filepath, column_index, new_width) - Modify width (e.g. "2.5in")update_column_format(filepath, column_index, format_string) - Change format (e.g. "#,0.00", "dd/MM/yyyy", "C2")add_column(filepath, column_index, header_text, field_binding, width?, format_string?, footer_expression?) - Add column
footer_expression: Optional expression for footer/total row - e.g. "=Sum(Fields!Amount.Value)", "=Count(Fields!ID.Value)", "Total:", or leave emptyremove_column(filepath, column_index) - Remove columnupdate_stored_procedure(filepath, dataset_name, new_sproc) - Change dataset sprocadd_dataset_field(filepath, dataset_name, field_name, data_field, type_name) - Add field to datasetremove_dataset_field(filepath, dataset_name, field_name) - Remove field from datasetadd_parameter(filepath, name, data_type, prompt) - Add new parameterupdate_parameter(filepath, name, prompt?, default_value?) - Update parametervalidate_rdl(filepath) - Validate XML structureAll tools return {success: bool, message?: string, error?: string} or structured data.
Current limitations:
Planned features:
Server not appearing?
python3 --versionPermission errors?
chmod +x rdl_mcp_server.pyThis server is published to PyPI and the MCP Registry. To release a new version:
Update version numbers in both files:
pyproject.toml:
server.json:
Commit your changes:
Create and push a git tag:
Automated publishing: The GitHub Actions workflows automatically:
uvx rdl-mcp)server.json against the MCP schemaPRs welcome! Priority areas:
Requirements: Python standard library only
MIT License - see LICENSE file for details.
This means you're free to use, modify, and distribute this software for any purpose, commercial or non-commercial.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/rdl-mcp-server)<a href="https://allmcps.com/mcp/rdl-mcp-server"><img src="https://allmcps.com/api/badge/rdl-mcp-server?style=directory" alt="RDL MCP Server on AllMCPs" /></a>