RDL MCP服务器
mcp名称:io.github.bethmaloney/rdl-mcp
   
使用AI助手编辑SSRS报告,而不是纠结于2000多行XML。这 模型上下文协议(MCP) 服务器为Claude、Copilot和其他AI工具提供了读取和修改RDL文件的简单命令。
它做什么
阅读报告:
describe_rdl_report-获取报告结构概述get_rdl_datasets-查看数据集、字段和存储过程(支持字段限制和过滤)get_rdl_parameters-列出所有报告参数get_rdl_columns-请参见列标题、宽度和绑定
修改报告:
update_column_header/update_column_width-更改列add_column/remove_column-添加或删除列update_column_format-更改数字/日期格式update_stored_procedure-交换存储过程add_dataset_field/remove_dataset_field-管理数据集字段add_parameter/update_parameter-管理参数validate_rdl-更改后验证XML
为什么它比编辑XML更好:
- AI看到干净的JSON而不是冗长的XML命名空间
- 一行命令,而不是容易出错的字符串操作
- 自动验证在错误破坏报告之前捕获错误
- 没有依赖关系-只有Python 3.8+标准库
安装
要求:
- Python 3.8或更高版本
- 紫外线 (Python包管理器和工具运行器)
安装紫外线:
- macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh - 窗户:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" - 备选方案(所有平台):
pip install uv或查看 安装文档
注: uvx (包括在内 uv)自动处理Python环境和依赖关系。无需手动安装Python包!
快速开始
Claude Desktop
编辑配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"rdl-mcp": {
"command": "uvx",
"args": ["rdl-mcp"]
}
}
}GitHub Copilot (VSCode)
添加到VSCode设置(.vscode/mcp.json 在您的工作区或用户设置中):
{
"servers": {
"rdlMcp": {
"type": "stdio",
"command": "uvx",
"args": ["rdl-mcp"]
}
}
}注: 需要安装了Copilot Chat扩展程序的VSCode。
安装后: 重新启动AI助手并尝试: "Describe the structure of my report.rdl file"
Optional: Enable debug logging
设置环境变量:
RDL_MCP_LOG_LEVEL:DEBUG,INFO,WARNING,或ERRORRDL_MCP_LOG_FILE:日志文件的路径
用法
用自然语言问你的人工智能助手:
- “这份报告使用了哪些数据集?”
- “将帐号列设置为2英寸宽”
- “将金额列设置为带2位小数的货币格式”
- “添加一个新的金额列,在页脚中显示总和”
- “添加状态列,但将页脚留空”
- “更新主数据集以使用V2存储过程并添加TaxAmount字段”
- “删除过时的状态列”
- “添加年份参数以筛选报告”
AI助手将自动使用适当的MCP工具。
示例:编辑与XML
无MCP (手动编辑XML):
Old Header
使用MCP (一个命令):
update_column_header(filepath="report.rdl",
old_header="Old Header",
new_header="New Header")api参考
View all available tools
阅读工具
describe_rdl_report(filepath)-报告结构摘要get_rdl_datasets(filepath, field_limit?, field_pattern?)-带有字段和存储过程的数据集
- field_limit:0=仅计数(默认),-1=所有字段,N=限制为N个字段 - field_pattern:用于筛选字段名的可选正则表达式
get_rdl_parameters(filepath)-所有参数及其配置get_rdl_columns(filepath)-列标题、宽度、绑定
编辑工具
update_column_header(filepath, old_header, new_header)-更改列文本update_column_width(filepath, column_index, new_width)-修改宽度(例如“2.5英寸”)update_column_format(filepath, column_index, format_string)-更改格式(例如“#,0.00”,“dd/MM/yyyy”,“C2”)add_column(filepath, column_index, header_text, field_binding, width?, format_string?, footer_expression?)-添加列
- footer_expression:页脚/总计行的可选表达式-例如“=总和(字段!金额.Value)”、“=计数(字段!ID.Value)
remove_column(filepath, column_index)-删除列update_stored_procedure(filepath, dataset_name, new_sproc)-更改数据集存储过程add_dataset_field(filepath, dataset_name, field_name, data_field, type_name)-向数据集添加字段remove_dataset_field(filepath, dataset_name, field_name)-从数据集中删除字段add_parameter(filepath, name, data_type, prompt)-添加新参数update_parameter(filepath, name, prompt?, default_value?)-更新参数validate_rdl(filepath)-验证XML结构
所有工具归还 {success: bool, message?: string, error?: string} 或结构化数据。
限制和路线图
当前限制:
- 仅支持Tablix(表)控件-尚不支持矩阵或图表
- 与标准报告布局配合使用效果最佳
- 一些复杂的RDL功能可能仍需要手动XML编辑
计划功能:
- 列重新排序、分组和排序配置
- 表达式生成器助手
- 数据集字段管理
故障排除
服务器未出现?
- 检查配置中的绝对路径是否正确
- 验证Python 3.8+:
python3 --version - 重新启动MCP客户端
权限错误?
- 使脚本可执行:
chmod +x rdl_mcp_server.py - 检查RDL文件读/写权限
发布新版本
此服务器发布到 PyPI 和那个 MCP注册表。要发布新版本,请执行以下操作:
- 更新版本号 在这两个文件中:
pyproject.toml:
version = "0.2.0"server.json:
{
"version": "0.2.0",
"packages": [
{
"version": "0.2.0"
}
]
}- 提交您的更改:
git add .
git commit -m "Release v0.2.0: Add feature description"- 创建并推送一个git标签:
git tag v0.2.0
git push origin main --tags- 自动发布:GitHub Actions工作流会自动执行:
- 构建并发布到PyPI(用户可以通过以下方式安装 uvx rdl-mcp) - 验证 server.json 与MCP模式相反 - 发布到MCP注册表(服务器出现在注册表搜索中) - 更新下游注册表(如GitHub的MCP市场)
贡献
PR欢迎!优先领域:
- 对复杂布局进行更好的列检测
- 更多编辑操作(重新排序、分组等)
要求:仅限Python标准库
- 分叉回购
- 创建特征分支
- 进行更改+测试
- 提交PR
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
这意味着您可以出于任何商业或非商业目的自由使用、修改和分发此软件。
