mcpField
R
RDL MCP Server

RDL MCP Server

本地服务
github.com数据与分析1348 周前更新

关于 RDL MCP Server

RDL MCP Server 为使用 SSRS 报表的开发者提供读取和修改 RDL 文件的工具,将 XML 结构转换为更易处理的数据,并在修改后验证 XML。

主要功能

  1. 01查看报表结构、数据集和参数
  2. 02读取列标题、宽度与绑定
  3. 03增删列及数据集字段
  4. 04修改列格式和存储过程
  5. 05添加或更新报表参数
  6. 06验证 RDL XML

适用场景

  1. 01检查报表所用数据集和存储过程
  2. 02调整列标题、宽度或数字格式
  3. 03新增筛选参数或数据集字段
  4. 04修改后验证 RDL 文件

MCP 相关

该 MCP 服务将读取、修改和验证 RDL 文件的操作作为工具提供给 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"bethmaloney-rdl": {
"command": "uvx",
"args": [
"rdl-mcp"
],
"env": {
"RDL_MCP_LOG_LEVEL": "<RDL_MCP_LOG_LEVEL>",
"RDL_MCP_LOG_FILE": "<RDL_MCP_LOG_FILE>"
}
}
}
}
启动命令uvx rdl-mcp
需要配置的环境变量
RDL_MCP_LOG_LEVELLog level for the RDL MCP server (DEBUG, INFO, WARNING, ERROR)
RDL_MCP_LOG_FILEPath to log file for the RDL MCP server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypirdl-mcp0.1.0

工具

15

收录的工具列表 · 更新于 2 周前

参数类型必填说明
filepathstring是RDL 文件的路径

详细介绍

RDL MCP 服务

mcp-name: io.github.bethmaloney/rdl-mcp

PyPI License: MIT Python 3.8+ MCP

使用 AI 助手编辑 SSRS 报表,无需再费力处理 2000 多行 XML。这个 Model Context Protocol (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 或更高版本
  • uv(Python 包管理器和工具运行器)

安装 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"
  • 其他方式(所有平台): pip install uv,或参阅安装文档

注意: uvx(包含在 uv 中)会自动处理 Python 环境和依赖项。无需手动安装 Python 包!

快速开始
Claude Desktop

编辑配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %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"

可选:启用调试日志

设置环境变量:

  • RDL_MCP_LOG_LEVEL:DEBUG、INFO、WARNING 或 ERROR
  • RDL_MCP_LOG_FILE:日志文件路径

用法

只需用自然语言向 AI 助手提问:

  • “这个报表使用了哪些数据集?”
  • “将 Account Number 列的宽度设为 2 英寸”
  • “将 Amount 列格式设为保留 2 位小数的货币格式”
  • “添加一个新的 Amount 列,在页脚显示总和”
  • “添加 Status 列,但保持页脚为空”
  • “将主数据集更新为使用 V2 存储过程,并添加 TaxAmount 字段”
  • “移除已过时的 Status 列”
  • “添加 Year 参数以筛选报表”

AI 助手会自动使用相应的 MCP 工具。

示例:编辑方式对比 XML

不使用 MCP(手动编辑 XML):


<TablixCell><CellContents><Textbox><Paragraphs>
  <Paragraph><TextRuns><TextRun>
    <Value>Old Header</Value>
  </TextRun></TextRuns></Paragraph>
</Paragraphs></Textbox></CellContents></TablixCell>

使用 MCP(一条命令):

update_column_header(filepath="report.rdl",
                     old_header="Old Header",
                     new_header="New Header")

API 参考

查看所有可用工具 ### 读取工具
  • 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.5in")
  • 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:页脚/合计行的可选表达式,例如 "=Sum(Fields!Amount.Value)"、"=Count(Fields!ID.Value)"、"Total:",也可以留空
  • 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(表格)控件,暂不支持 Matrix 或 Chart
  • 最适用于标准报告布局
  • 某些复杂的 RDL 功能可能仍需手动编辑 XML

计划中的功能:

  • 列重新排序、分组和排序配置
  • 表达式构建器辅助工具
  • 数据集字段管理

故障排除

未显示服务?

  • 检查配置中的绝对路径是否正确
  • 确认 Python 3.8+:python3 --version
  • 重启 MCP 客户端

权限错误?

  • 使脚本可执行:chmod +x rdl_mcp_server.py
  • 检查 RDL 文件的读写权限

发布新版本

此服务发布在 PyPI 和 MCP Registry 上。发布新版本的步骤如下:

  1. 更新两个文件中的版本号:

    pyproject.toml:

    version = "0.2.0"
    

    server.json:

    {
      "version": "0.2.0",
      "packages": [
        {
          "version": "0.2.0"
        }
      ]
    }
    
  2. 提交更改:

    git add .
    git commit -m "Release v0.2.0: Add feature description"
    
  3. 创建并推送 git 标签:

    git tag v0.2.0
    git push origin main --tags
    
  4. 自动发布:GitHub Actions 工作流会自动:

    • 构建并发布到 PyPI(用户可以通过 uvx rdl-mcp 安装)
    • 根据 MCP schema 验证 server.json
    • 发布到 MCP Registry(服务会显示在注册表搜索结果中)
    • 更新下游注册表(例如 GitHub 的 MCP marketplace)

贡献

欢迎提交 PR!优先改进方向:

  • 改进对复杂布局的列检测
  • 增加更多编辑操作(重新排序、分组等)

要求:仅使用 Python 标准库

  1. Fork 仓库
  2. 创建功能分支
  3. 进行更改并添加测试
  4. 提交 PR

许可证

MIT License - 详情请参阅 LICENSE 文件。

这意味着你可以出于任何目的(无论商业或非商业)自由使用、修改和分发此软件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。