rpt-mcp-server
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
rpt-mcp-server
MCP server,让 Bob 可以读取、导出、重建本机上的 Crystal Reports .rpt 文件。
工作方式
.rpt 是二进制格式,只有 Crystal 自带的 .NET SDK 能可靠解析,因此分两层:
reader/RptReader.exe:C# 小程序(.NET Framework 4.x,x64),调用本机已安装的 Crystal Reports SDK。读取模式:
RptReader.exe <file.rpt>— 将报表元数据序列化为 JSON 输出到 stdout。写入模式:
RptReader.exe --write <input.json> <output.rpt>— 以原文件为模板,将 JSON 中的可写字段重新写入.rpt。
src/index.js:Node MCP server(纯 JavaScript,无需编译),负责路径校验、调度读取器、按文件修改时间缓存结果、提供工具。
不连接数据库,不刷新数据,不导出密码(连接信息只含 server 和 database 名称)。
Related MCP server: Catalog MCP
前置条件
Windows,Node.js 20 及以上
已安装 Crystal Reports for Visual Studio,即 GAC 中存在
CrystalDecisions.*13.0.4000.0 程序集及 x64 运行时.NET Framework 自带的
csc.exe(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\)
使用(npx)
npm 包已包含预编译的 RptReader.exe,无需自行构建。在 MCP client 中注册:
{
"mcpServers": {
"crystal-reports": {
"command": "npx",
"args": ["-y", "@davidkhala/rpt-mcp-server"]
}
}
}Bob 的配置文件是 ~/.bob/settings/mcp.json。
server 不需要指定报表目录。调用工具时直接传 .rpt 的绝对路径(search_reports 传目录的绝对路径)即可。只会打开扩展名为 .rpt 的文件。
从源码构建
git clone https://github.com/davidkhala/rpt-mcp-server.git
cd rpt-mcp-server
npm install
npm run build # 编译 reader/RptReader.exe然后把 MCP client 配置里的 command 改为 node,args 改为 ["<path-to>/rpt-mcp-server/src/index.js"]。
工具
除 search_reports 接收目录绝对路径 dir 外,其余工具都接收 .rpt 的绝对路径 path。列目录这类文件系统操作不在本 server 范围内,请用 client 自带的文件工具。
只读工具
工具 | 用途 |
| 纸张、边距,以及各类对象的数量 |
| 各 section 及其对象类型统计 |
| 对象的位置、文本、绑定字段 |
| 表、连接(server/database)、表链接 |
| 表的字段名和类型 |
| "Add Command" 里的 SQL |
| 参数及默认值 |
| 公式、SQL 表达式、累计字段、汇总字段 |
| 记录和分组选择公式 |
| 分组和排序 |
| 子报表及其链接字段 |
| 在目录下所有报表里搜 SQL、公式、字段、文本、参数、表 |
| 单个报表的完整 JSON(返回给 LLM,不写文件) |
导出 / 重建工具(Roundtrip)
工具 | 参数 | 用途 |
|
| 将完整 JSON dump 保存到磁盘文件;JSON 中含 |
|
| 以 |
可写字段范围
Crystal Reports SDK 对写入有较多限制,以下字段可通过 build_report_from_json 可靠地 roundtrip:
分类 | 字段 |
SummaryInfo | title、author、subject、comments、keywords |
公式 | 所有 FormulaField 的 text |
SQL 表达式字段 | 所有 SQLExpressionField 的 text |
选择公式 | recordSelection、groupSelection |
数据库连接 | 各表的 server、database(不含凭据) |
Command SQL | Add Command 表的 SQL 文本 |
参数默认值 | 离散型默认值(discrete),range 型不支持 |
排序方向 | SortField 的 direction(Ascending/Descending) |
以下字段 SDK 不支持写入,在 roundtrip 中会直接沿用原文件的值(因为模板即原文件):section 布局、running totals、summary fields、子报表链接拓扑、纸张/边距设置。
Roundtrip 流程示例
save_report_json(path="C:\reports\avl_print.rpt", out="C:\tmp\avl_print.json")
→ 生成 JSON 文件
build_report_from_json(json="C:\tmp\avl_print.json", out="C:\tmp\avl_print_rebuilt.rpt")
→ 生成重建的 .rpt,并返回其 JSON dump
# 将返回的 JSON 与原始 JSON 对比,验证可写字段是否一致已知限制
读取器与本机 Crystal 版本绑定
reader/build.ps1 把 Crystal 程序集的路径和版本写死了:
版本:
13.0.4000.0(公钥692fbea5521e1304)位置:
C:\Windows\Microsoft.NET\assembly\GAC_MSIL和GAC_64
因此:
换一台电脑:目标机器必须安装同版本的 Crystal Reports,否则
build会编译失败。升级 Crystal:版本号变化后,需要先修改
reader/build.ps1里的$v,再运行npm run build重新编译。读取器按 x64 编译,和已安装的 x64 运行时对应。
其他
ReportDocument.Subreports在子报表上会抛NotSupportedException,所以只读取一层子报表(主报表的直接子报表)。结果缓存在内存中,按文件修改时间失效;重启 server 后缓存清空。
同时最多运行 4 个读取/写入进程,单次操作超时 60 秒。
测试
测试套件使用 Mocha,报表目录通过环境变量 RPT_DIR 传入(目录下需包含 avl_print.rpt 和 application_avl.rpt)。
# PowerShell
$env:RPT_DIR = "C:\reports"
npm test# bash / CMD
RPT_DIR=C:\reports npm test测试共 32 个用例,分四组:
组 | 内容 |
| 验证所有工具均已注册 |
| 每个只读工具各一个用例,验证返回非错误且内容合理 |
| 验证相对路径、非 |
| 导出 JSON → 重建 |
需要先编译 reader/RptReader.exe(npm run build)。不设置 RPT_DIR 时所有用例会被 skip(不报错)。
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Read-only MCP server over the developer docs for the portfolio's JSON API, MCP, A2A and NLWeb.
Read-only MCP server exposing a user ORANO library to their own AI agent.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis project builds a read-only MCP server. For full read, write, update, delete, and action capabilities and a simplified setup, check out our free CData MCP Server for SAP BusinessObjects BI (beta): https://www.cdata.com/download/download.aspx?sku=GJZK-V&type=beta1MIT
- FlicenseNot gradedqualityCmaintenanceStandalone read-only MCP server for browsing Oracle HDL business object metadata. Provides tools to search and retrieve catalog entries, components, and attributes from a local repository.-
- AlicenseNot gradedqualityBmaintenanceMCP server for reading, querying, and filtering local JSON files with extended JSONPath syntax, supporting sorting, aggregations, and complex conditions.174 npm2MIT
- AlicenseNot gradedqualityBmaintenanceA security-first, read-only MCP server that lets clients browse and read text, PDF, and XLSX files from an explicit allowlist of local folders, with strict path and secret protections.MIT