The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the RDL MCP Server listing page.
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.