RDL MCP Server について
RDL MCP Server は、SSRS レポートを扱う開発者向けに RDL ファイルを読み書きするツールを提供します。構造化された形式で内容を確認でき、変更後には XML を検証できます。
主な機能
- 01レポート構造・データセット・パラメーターの確認
- 02列見出し・幅・バインドの取得
- 03列とデータセットフィールドの追加・削除
- 04列形式とストアドプロシージャの変更
- 05レポートパラメーターの追加・更新
- 06RDL XML の検証
活用シーン
- 01レポートのデータセットとストアドプロシージャの確認
- 02列見出し、幅、数値形式の調整
- 03フィルターパラメーターやフィールドの追加
- 04編集後の RDL ファイルの検証
MCP 対応
RDL ファイルの読み取り、変更、検証を行うツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
15掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| filepath | string | はい | RDL ファイルのパス |
詳細
RDL MCP サーバー
mcp-name: io.github.bethmaloney/rdl-mcp
2000 行を超える XML と格闘する代わりに、AI アシスタントを使って SSRS レポートを編集できます。この 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 の編集より優れている理由:
- 冗長な XML 名前空間ではなく、見やすい JSON が AI に渡されます
- エラーが起きやすい文字列操作ではなく、1 行のコマンドで操作できます
- 自動検証により、レポートに不具合が生じる前にエラーを検出します
- 依存関係は不要で、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またはインストールドキュメントを参照してください
注: uv に付属する uvx が 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 アシスタントを再起動し、次のように試してください:「report.rdl ファイルの構造を説明して」
任意:デバッグログを有効にする
環境変数を設定します:
RDL_MCP_LOG_LEVEL:DEBUG、INFO、WARNING、またはERRORRDL_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 を使う場合(コマンド 1 つ):
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 で公開されています。新しいバージョンをリリースするには:
-
両方のファイルでバージョン番号を更新します:
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 Registry に公開します(サーバーがレジストリ検索に表示されます)
- 下流のレジストリ(GitHub の MCP マーケットプレイスなど)を更新します
- PyPI にビルドして公開します(ユーザーは
コントリビューション
PR を歓迎します!優先分野:
- 複雑なレイアウトでの列検出の改善
- 編集操作の拡充(並べ替え、グループ化など)
要件: Python 標準ライブラリのみ
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更とテストを行います
- PR を送信します
ライセンス
MIT License の詳細については、LICENSE ファイルをご覧ください。
これは、商用・非商用を問わず、どのような目的でもこのソフトウェアを自由に使用、変更、配布できることを意味します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。