mcpField
R
RDL MCP Server

RDL MCP Server

ローカル
github.comデータ・分析1348 週間前に更新

RDL MCP Server について

RDL MCP Server は、SSRS レポートを扱う開発者向けに RDL ファイルを読み書きするツールを提供します。構造化された形式で内容を確認でき、変更後には XML を検証できます。

主な機能

  1. 01レポート構造・データセット・パラメーターの確認
  2. 02列見出し・幅・バインドの取得
  3. 03列とデータセットフィールドの追加・削除
  4. 04列形式とストアドプロシージャの変更
  5. 05レポートパラメーターの追加・更新
  6. 06RDL XML の検証

活用シーン

  1. 01レポートのデータセットとストアドプロシージャの確認
  2. 02列見出し、幅、数値形式の調整
  3. 03フィルターパラメーターやフィールドの追加
  4. 04編集後の RDL ファイルの検証

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

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、または 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 を使う場合(コマンド 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 で公開されています。新しいバージョンをリリースするには:

  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 でインストールできます)
    • server.json を MCP スキーマに照らして検証します
    • MCP Registry に公開します(サーバーがレジストリ検索に表示されます)
    • 下流のレジストリ(GitHub の MCP マーケットプレイスなど)を更新します

コントリビューション

PR を歓迎します!優先分野:

  • 複雑なレイアウトでの列検出の改善
  • 編集操作の拡充(並べ替え、グループ化など)

要件: Python 標準ライブラリのみ

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. 変更とテストを行います
  4. PR を送信します

ライセンス

MIT License の詳細については、LICENSE ファイルをご覧ください。

これは、商用・非商用を問わず、どのような目的でもこのソフトウェアを自由に使用、変更、配布できることを意味します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。