Rdl Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Rdl Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
mcp-name: io.github.bethmaloney/rdl-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.
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 bindingsModify 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 changesWhy it's better than editing XML:
Requirements:
Installing uv:
curl -LsSf https://astral.sh/uv/install.sh | shpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"pip install uv or see installation docsNote: uvx (included with uv) automatically handles the Python environment and dependencies. No manual Python package installation needed!
<details> <summary><b>Claude Desktop</b></summary>
Edit config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": {
"rdl-mcp": {
"command": "uvx",
"args": ["rdl-mcp"]
}
}
}</details>
<details> <summary><b>GitHub Copilot (VSCode)</b></summary>
Add to VSCode settings (.vscode/mcp.json in your workspace or user settings):
{
"servers": {
"rdlMcp": {
"type": "stdio",
"command": "uvx",
"args": ["rdl-mcp"]
}
}
}Note: Requires VSCode with Copilot Chat extension installed. </details>
After installation: Restart your AI assistant and try: "Describe the structure of my report.rdl file"
<details> <summary>Optional: Enable debug logging</summary>
Set environment variables:
RDL_MCP_LOG_LEVEL: DEBUG, INFO, WARNING, or ERRORRDL_MCP_LOG_FILE: Path to log file</details>
Just ask your AI assistant in natural language:
The AI assistant will use the appropriate MCP tools automatically.
Without MCP (manually editing XML):
<!-- Find this in 2000+ lines -->
<TablixCell><CellContents><Textbox><Paragraphs>
<Paragraph><TextRuns><TextRun>
<Value>Old Header</Value>
</TextRun></TextRuns></Paragraph>
</Paragraphs></Textbox></CellContents></TablixCell>With MCP (one command):
update_column_header(filepath="report.rdl",
old_header="Old Header",
new_header="New Header")<details> <summary>View all available tools</summary>
field_limit: 0 = counts only (default), -1 = all fields, N = limit to N fieldsfield_pattern: Optional regex to filter field namesfooter_expression: Optional expression for footer/total row - e.g. "=Sum(Fields!Amount.Value)", "=Count(Fields!ID.Value)", "Total:", or leave emptyAll tools return {success: bool, message?: string, error?: string} or structured data.
</details>
Current limitations:
Planned features:
Server not appearing?
python3 --versionPermission errors?
chmod +x rdl_mcp_server.pyThis server is published to PyPI and the MCP Registry. To release a new version:
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 tag v0.2.0
git push origin main --tagsuvx rdl-mcp)server.json against the MCP schemaPRs welcome! Priority areas:
Requirements: Python standard library only
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.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.