Inspect Crystal Reports .rpt files from your coding assistant. The current release is a read-only MCP server with 10 tools for report structure, data sources, SQL commands, parameters, formulas, sections, objects, subreports, and running totals.
Try it on Windows x64 with Node.js 20+ and a compatible, separately installed SAP Crystal Reports runtime:
npm install --global @report-intelligence/cli
rip doctor --report C:\reports\example.rpt
rip agents install codex --reports C:\reportsReplace the example paths with your own report and directory. rip agents install also supports claude, cursor, and vscode. The npm installation includes a binary-only Community worker on Windows x64; SAP runtime components are not included. Setup details · MCP server · Report an issue
The active milestone is a read-only Crystal Reports MCP. The end-to-end path is:
MCP client -> Node.js MCP server -> Windows Crystal worker -> real .rpt -> validated JSON
The universal Report IR, multi-engine runtime, generalized plugin process manager, cloud platform, and separately deployed core-service plugins are future work. They are not prerequisites for the v1 Crystal reader.
See CRYSTAL_MCP_V1_PLAN.md for the authoritative implementation plan. When older planning or research documents conflict with it, the v1 plan takes precedence.
report-intelligence-platform/
├── apps/
│ ├── mcp-server/ # MCP Server (Node.js/TypeScript)
│ └── cli/ # CLI Tool
├── packages/
│ ├── core/ # Core types, interfaces, utilities
│ ├── crystal-client/ # Public versioned worker protocol and stdio client
│ ├── grpc-transport/ # Experimental transport abstractions
│ ├── plugin-api/ # Plugin interface definitions
│ └── sdk/ # SDK for building plugins
├── docs/ # Public protocols and developer documentation
├── tests/ # Public integration tests and fixture metadata
├── 00 Research/ # Research documentation
├── 01 Specifications/ # Technical specifications
├── 02 Architecture/ # Architecture decisions
├── 03 Notes/ # Development notes
└── 04 Images/ # Diagrams and images
Milestone status: The public MCP server implements all 10 advertised read tools and has been exercised locally through the separately licensed Crystal worker against multiple real reports. Mock integration coverage is committed; a sanitized, redistributable
.rptfixture is still required before the real-runtime acceptance matrix can run in public CI.
- Node.js 20+
- Windows x64 for local
.rptextraction - SAP Crystal Reports Runtime compatible with that worker
# Install dependencies
npm install
# Build all public packages
npm run buildThe published MCP server installs the free-to-use binary-only Community Crystal worker as an optional dependency on Windows x64. The worker source remains in the private commercial repository, and SAP runtime components are not redistributed.
For a consumer installation, use the commands at the top of this README. The MCP server also exposes report-intelligence-mcp doctor. The worker npm release is unsigned; a separate Store MSIX distribution is prepared in scripts/build-community-store-msix.ps1 and will be signed by Microsoft only after Store certification.
# Start the MCP server
npm run start --workspace=apps/mcp-serverCRYSTAL_WORKER_PATH is optional and overrides discovery when selecting a Pro, custom, or separately installed worker.
@report-intelligence/crystal-worker-community-win32-x64 contains the compiled read-only Community worker and its non-SAP managed dependencies. It is free to use under its included proprietary binary license, but it is not open-source or LGPL-covered. Package contents carry a SHA-256 manifest and deliberately exclude SAP CrystalDecisions.* assemblies.
The MCP server prefers an installed Pro worker when available, then a Store-installed Community worker, and finally the npm Community worker. The future Pro edition will add advanced editing, generation, validation, migration, and supported enterprise deployment capabilities without changing the public worker protocol.
rip doctor, rip mcp, and rip agents install are implemented. Report reading, search, documentation, validation, and export CLI commands remain placeholders; use the MCP server for report extraction.
- Milestone 0: Align v1 scope, licensing boundary, and documentation
- Milestone 1: Wire
read_reportend to end through the real worker - Milestone 2: Complete and verify read-only Crystal extraction
- Milestone 3: Documentation, dependency analysis, and deterministic search
- Milestone 4: Setup diagnostics and optional remote Windows workers
- Milestone 5: Safe editing with save-as and read-after-write verification
- Milestone 6: Template-based report generation
- Milestone 7: Multi-engine support and evidence-driven Report IR
This project follows an Open Core model:
- Public Platform: GNU Lesser General Public License v3.0 only (
LGPL-3.0-only) - Crystal Reports Plugin: Commercial (proprietary)
- Enterprise Features: Commercial (proprietary)
See LICENSING.md for the implemented public/commercial source boundary.
Each published workspace has its own npm-facing README and metadata. Maintainers should follow the npm publishing guide for the first release and subsequent OIDC/provenance releases.
The MCP server currently advertises these tested tools:
read_report- Read full report structureread_metadata- Read validated report metadata and page settingsread_data_sources- Read validated data sources, tables, fields, joins, and commandsextract_sql- Extract non-empty SQL commands with their data source identityread_parameters- Read validated parameter definitions with sensitive values redactedread_formulas- Read validated formulas and dependency referencesread_sections- Read validated section layout settings and contained objectsread_objects- Read flattened validated objects with optional exact section filteringread_subreports- Read validated subreports, embedded metadata/content, and main-to-subreport link fieldsread_running_totals- Read validated running-total evaluation and reset definitions
Successful tool calls return extracted data in the first text content item. When the worker reports incomplete or unsupported extraction, a second JSON text item contains structured warnings with stable codes, messages, and optional report-element paths.
Formula dependencies are classified as fields, formulas, parameters, running totals, or SQL expressions. Database table links and report custom functions are included in the full report model; SDK limitations are surfaced with UNSUPPORTED_DATABASE_JOINS, UNSUPPORTED_SUBREPORT_LINKS, or UNSUPPORTED_CUSTOM_FUNCTIONS warnings.
The following capabilities are planned and will be advertised only after their worker-backed implementations meet the same validation and error-handling standard:
search_reports- Search across multiple reportssearch_in_report- Search within a single report
generate_documentation- Generate docs (markdown/html/openapi)
validate_report- Validate report integritycheck_integrity- Check file integrity
export_report- Export to PDF, Excel, Word, etc.
update_parameter- Update parameter valuesupdate_formula- Update formula syntaxupdate_formatting- Update object formattingupdate_text- Update text objectssave_report- Save report to new file
generate_report- Generate from specificationgenerate_from_template- Generate from templategenerate_from_natural_language- Generate from prompt
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
npm test - Run strict type checking:
npm run typecheck - Submit a PR
Contains all shared types and utilities:
- Report, Formula, Parameter, Section, DataSource types
- Search, Validation, Documentation types
- Zod schemas for validation
Defines the plugin interface:
Plugininterface with capabilities- Reader, Writer, Generator, Renderer interfaces
- Validator, Exporter, Searcher, Documenter interfaces
- Dependency Analyzer, Modifier interfaces
The public Crystal client contains shared models, the worker protocol, transport clients, test doubles, and developer helpers. Community and Pro SAP Crystal runtime adapter source is maintained in the separate commercial repository. The compiled Community worker is distributed through npm under its own free-to-use binary license.
Model Context Protocol server:
- Exposes tools to AI agents
- Manages plugin lifecycle
- Handles resource/prompt requests
Windows worker process:
- Hosts SAP Crystal Reports Runtime
- Executes Crystal SDK operations
- Communicates through the versioned worker protocol, using stdio first
- Offers read-only extraction in Community and future advanced capabilities in Pro
| Variable | Description | Required |
|---|---|---|
CRYSTAL_WORKER_PATH |
Optional override path to a Community, Pro, or custom CrystalWorker executable | No |
CRYSTAL_WORKER_ARGS |
JSON array of worker process arguments | No |
CRYSTAL_WORKER_TIMEOUT_MS |
Per-request worker timeout in milliseconds | No |
RIP_ALLOWED_REPORT_ROOTS |
OS-delimited roots from which .rpt files may be read |
No |
RIP_MAX_REPORT_BYTES |
Maximum accepted .rpt file size in bytes |
No |
LOG_LEVEL |
Log level (debug/info/warn/error) | No |
See the worker protocol v1 specification for the stdio contract.
The 00 Research/ directory contains comprehensive research on:
- Crystal Reports architecture, objects, formulas, rendering
- MCP protocol architecture and implementation
- Language Server Protocol patterns
- Plugin architecture comparisons (VS Code, Terraform, Eclipse, MCP)
- Reporting engine comparisons (8 engines)
- Universal reporting concepts
All project-owned source in this repository is licensed under LGPL-3.0-only. The LGPL terms are in LICENSE, with the incorporated GPLv3 terms in COPYING. Separate applications may use the public libraries under LGPL's linking terms without placing the entire application under LGPL. The Crystal runtime adapter and Windows worker are separate processes distributed under commercial terms; see LICENSING.md.