
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 分