
RDL MCP Server
io.github.bethmaloney由 GitHub 账号 bethmaloney 发布v0.1.0更新于 Oct 24, 2026
Edit SSRS reports using AI - simple tools to read and modify RDL files
概览
一个本地 MCP 服务器,让 AI 助手通过结构化工具读取和修改 SSRS 报表定义(RDL)文件,而不必手动编辑 XML。
- 可以做什么
- 查看报表:描述报表结构,列出数据集及其字段和存储过程,列出参数,查看列标题、宽度和绑定,并可按字段数量限制和正则过滤。编辑列:修改标题、宽度和数字/日期格式,添加或删除列(含页脚表达式)。管理数据集:更换存储过程,添加或删除数据集字段。管理参数:新增参数并更新提示或默认值。修改后校验 RDL 的 XML 结构。
- 适用场景
- 适合维护 SSRS 报表、希望让助手对 RDL 文件做针对性修改的场景,例如调整列宽、重新格式化金额、添加参数或把数据集切换到新的存储过程,而无需手工编辑数千行 XML。
- 运行要求
- 以 PyPI 包形式通过 uvx 在本地以 stdio 运行,需要 Python 3.8 或更高版本以及 uv。需在客户端中配置(如 Claude Desktop 或装有 Copilot Chat 的 VS Code)。可选环境变量 RDL_MCP_LOG_LEVEL 和 RDL_MCP_LOG_FILE 控制日志。未声明身份验证。
安装
在 SourceWeft 中
- 打开 控制台中的 RDL MCP Server,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
RDL MCP Server
mcp-name: io.github.bethmaloney/rdl-mcp
[PyPI] [License: MIT] [Python 3.8+] [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.
What It Does
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 bindings
Modify 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 changes
Why it's better than editing XML:
- AI sees clean JSON instead of verbose XML namespaces
- One-line commands instead of error-prone string manipulation
- Automatic validation catches errors before they break reports
- No dependencies - just Python 3.8+ standard library
Installation
Requirements:
- Python 3.8 or higher
- uv (Python package manager and tool runner)
Installing uv:
- macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh - Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" - Alternative (all platforms):
pip install uvor see installation docs
Note: uvx (included with uv) automatically handles the Python environment and dependencies. No manual Python package installation needed!
Quick Start
Claude Desktop
Edit config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
GitHub Copilot (VSCode)
Add 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"
Optional: Enable debug logging
Set environment variables:
RDL_MCP_LOG_LEVEL:DEBUG,INFO,WARNING, orERRORRDL_MCP_LOG_FILE: Path to log file
Usage
Just ask your AI assistant in natural language:
- "What datasets does this report use?"
- "Make the Account Number column 2 inches wide"
- "Format the Amount column as currency with 2 decimals"
- "Add a new Amount column that shows the sum in the footer"
- "Add a Status column but leave the footer blank"
- "Update the main dataset to use the V2 stored procedure and add the TaxAmount field"
- "Remove the obsolete Status column"
- "Add a Year parameter to filter the report"
The AI assistant will use the appropriate MCP tools automatically.
Example: Editing vs. XML
Without MCP (manually editing XML):
With MCP (one command):
API Reference
View all available tools
Reading Tools
describe_rdl_report(filepath)- Report structure summaryget_rdl_datasets(filepath, field_limit?, field_pattern?)- Datasets with fields and stored proceduresfield_limit: 0 = counts only (default), -1 = all fields, N = limit to N fieldsfield_pattern: Optional regex to filter field names
get_rdl_parameters(filepath)- All parameters with configurationsget_rdl_columns(filepath)- Column headers, widths, bindings
Editing Tools
update_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 columnfooter_expression: Optional expression for footer/total row - e.g. "=Sum(Fields!Amount.Value)", "=Count(Fields!ID.Value)", "Total:", or leave empty
remove_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 structure
All tools return {success: bool, message?: string, error?: string} or structured data.
Limitations & Roadmap
Current limitations:
- Tablix (table) controls only - no Matrix or Chart support yet
- Works best with standard report layouts
- Some complex RDL features may still need manual XML editing
Planned features:
- Column reordering, grouping, and sorting configuration
- Expression builder helpers
- Dataset field management
Troubleshooting
Server not appearing?
- Check absolute path in config is correct
- Verify Python 3.8+:
python3 --version - Restart your MCP client
Permission errors?
- Make script executable:
chmod +x rdl_mcp_server.py - Check RDL file read/write permissions
Releasing a New Version
This 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:
- Build and publish to PyPI (users can install via
uvx rdl-mcp) - Validate
server.jsonagainst the MCP schema - Publish to the MCP Registry (server appears in registry search)
- Update downstream registries (like GitHub's MCP marketplace)
- Build and publish to PyPI (users can install via
Contributing
PRs welcome! Priority areas:
- Better column detection for complex layouts
- More editing operations (reordering, grouping, etc.)
Requirements: Python standard library only
- Fork repo
- Create feature branch
- Make changes + tests
- Submit PR
License
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.
来源:README.md,提交 ed2b981
工具
0版本历史
1- v0.1.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分