mcpField
Q
quario

quario

ローカル
getquario.com生産性11 週間前に更新

quario について

quarioは、JSONのレポート定義を検証し、PDF、Excel、Word、HTML、CSVファイルに出力するローカルMCPサーバーです。ファイル内容をモデルに返さず、構造化レポートを生成したいエージェントやMCPクライアント向けです。

主な機能

  1. 01JSONレポート定義の検証
  2. 02PDF、Excel、Word、HTML、CSVへの出力
  3. 03出力ファイルのパスとサイズを返却
  4. 04データパス付きで修正可能なエラーを報告
  5. 05既存ファイルの上書きを防止

活用シーン

  1. 01出力前にレポート定義を確認
  2. 02JSONから表計算や文書のレポートを生成
  3. 03設定した出力ディレクトリにレポートを保存

MCP 対応

stdio経由でMCPクライアントに`validate_report`と`render_report`ツールを提供します。レンダリング結果はファイルに書き込み、内容ではなくパスとサイズを返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"com-getquario": {
"command": "npx",
"args": [
"-y",
"@quario/mcp"
],
"env": {
"QUARIO_LICENSE": "<QUARIO_LICENSE>",
"QUARIO_DATA_ROOT": "<QUARIO_DATA_ROOT>",
"QUARIO_OUT_DIR": "<QUARIO_OUT_DIR>",
"QUARIO_LOCALE": "<QUARIO_LOCALE>",
"QUARIO_CURRENCY": "<QUARIO_CURRENCY>",
"QUARIO_TIME_ZONE": "<QUARIO_TIME_ZONE>"
}
}
}
}
起動コマンドnpx -y @quario/mcp
設定が必要な環境変数
QUARIO_LICENSEシークレットThe license key. Leave it unset to evaluate, and the output carries a watermark.
QUARIO_DATA_ROOTThe directory a dataPath resolves in. Defaults to CLAUDE_PROJECT_DIR when set.
QUARIO_OUT_DIRThe directory rendered files are written to. Defaults to quario-mcp under the system temp dir.
QUARIO_LOCALEThe default locale for numbers and dates.
QUARIO_CURRENCYThe default currency, as an ISO 4217 code such as EUR.
QUARIO_TIME_ZONEThe default time zone for dates.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@quario/mcp0.3.0

ツール

2

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
targetsarrayいいえ定義内の `required` 宣言との照合対象です。省略すると、ドキュメントのみを検証します。
definitionobjectはい検証またはレンダリングするレポート定義。
definition.runobjectいいえ実行中の累算器。詳細行では `run.<name>` として読み取ります。
definition.datastringはい
definition.pageanyいいえ
definition.sortarrayいいえ
definition.takeanyいいえレポートの `sort` 後に保持する行数。整数 >= 1。上限を超える行は集計とランナーから除外されます。`visible` とは異なります。
definition.emptyarrayいいえ
definition.styleanyいいえレポートのデフォルト値。このドキュメントに設定されている書体です。targets の band-role デフォルト値および各項目独自の `style` より優先度が低いため、宣言された `size` によってレポートヘッダーの見出しサイズが変わることはありません。
definition.whereanyいいえ
definition.detailanyいいえ
definition.footerarrayいいえ
definition.groupsarrayいいえ
definition.headeranyいいえ`detail` と同様に、項目配列、または `{ height, items }` の形式です。後者では、ヘッダーがページ上部からフローボックスを固定します。
definition.paramsobjectいいえ
definition.$schemastringいいえエディターがこのドキュメントの JSON Schema を見つける場所です。エンジンは文字列であることだけを確認し、それ以外は読み取りません。
definition.columnsanyいいえレポート本文を指定したページ列数(整数、2 以上)に配置します。段組み領域は入れ子にできません。
definition.requiredobjectいいえこのドキュメントに必須の宣言。それぞれに `true` を設定します。これを読み取るのは [`plan`](https://getquario.com/docs/diving-deeper/validating) だけで、呼び出し元が指定したターゲット記述子に照らして確認します。必須宣言がターゲットのいずれかによって取り消されるか、読み取られない場合、`required.<name>` に個別の問題として記録され、ほかの問題と同様にレポートが無効になります。ターゲットにこのマークは見えず、レンダリングにも影響しません。
definition.required.altbooleanいいえ
definition.required.hrefbooleanいいえ
definition.required.runsbooleanいいえ
definition.required.spanbooleanいいえ
definition.required.breakbooleanいいえ
definition.required.labelbooleanいいえ
definition.required.resetbooleanいいえ
definition.required.familybooleanいいえ
definition.required.formatbooleanいいえ
definition.required.groupsbooleanいいえ
definition.required.valignbooleanいいえ
definition.required.collapsedbooleanいいえ
definition.required.page.sizebooleanいいえ
definition.required.uppercasebooleanいいえ
definition.required.slot.widthbooleanいいえ
definition.required.spaceAfterbooleanいいえ
definition.required.page.footerbooleanいいえ
definition.required.page.headerbooleanいいえ
definition.required.page.marginbooleanいいえ
definition.required.spaceBeforebooleanいいえ
definition.required.column.widthbooleanいいえ
definition.required.header.heightbooleanいいえ
definition.required.page.orientationbooleanいいえ
definition.aggregatesobjectいいえ

詳細

@quario/mcp

エージェントが JSON データを PDF、Excel、Word、HTML、CSV のレポートに変換できます。 この MCP サーバーは、Claude やその他の MCP クライアントに 2 つのツールを提供します。validate_report はレポート定義をチェックし、render_report はそれをファイルに書き出します。1 つの定義から 5 つの形式すべてを生成でき、エージェントに返されるのはパスであり、ファイルのバイト列ではありません。

  • 5 つの形式。 1 つの JSON 定義から、pdf、xlsx、docx、html、csv を生成できます。
  • 修正可能なエラー。 各問題には、data: expected a JSONPath string のように、発生箇所のパスが示されます。エージェントはその箇所を修正して再試行します。
  • バイト列ではなくファイル。 render_report はディスクに書き込み、パスとサイズを返します。サイズにかかわらず、レポートがエージェントのコンテキストを消費するのは 1 行だけです。
  • ホストが制御を維持します。 クエリの予算、リンクスキーム、データルート、出力ディレクトリは起動設定で指定します。ツールの引数でこれらを変更することはできません。
  • 上書きしません。 同名のファイルがある場合は、-1、次に -2 のように番号が付加されます。
  • ローカルで動作します。 stdio 経由で実行され、npx @quario/mcp で起動できます。

render_report の呼び出しとその結果:

{
  "definition": {
    "data": "$.orders[*]",
    "detail": { "columns": [{ "header": "Total", "value": "{{ @.price * @.qty }}" }] }
  },
  "target": "pdf",
  "data": { "orders": [{ "price": 250, "qty": 2 }] },
  "filename": "orders"
}

ツールは Wrote orders.pdf (1.3 kB): /tmp/quario-mcp/orders.pdf と応答します。

サーバーはオープンソースです。サーバーが実行するエンジンはオープンソースではありません。 このパッケージは Apache-2.0 です。quario と 5 つのレンダリング先をインストールします。これらのパッケージはQuario Licenseに基づく商用ソフトウェアです。評価利用は無料です。 ライセンスキーがない場合、すべてのレンダリングに未ライセンスのマークが付きます。

目次


はじめに

1. Node を確認します。 サーバーには Node 22 以降が必要です。

node --version

2. サーバーをクライアントに追加します。 パッケージにはエンジンと 5 つのレンダリング先が含まれているため、ほかにインストールするものはありません。

キーなしで評価利用する場合の Claude Code:

claude mcp add quario -- npx -y @quario/mcp

ライセンスキーを使用する場合の Claude Code:

claude mcp add quario -e QUARIO_LICENSE=quario_... -- npx -y @quario/mcp

claude_desktop_config.json で設定する Claude Desktop:

{
  "mcpServers": {
    "quario": {
      "command": "npx",
      "args": ["-y", "@quario/mcp"],
      "env": { "QUARIO_LICENSE": "quario_..." }
    }
  }
}

キーなしで評価利用する場合は、env 行を省略してください。

3. レポートを依頼します。 クライアントを再起動し、エージェントにレポートを依頼します。

次の注文の PDF を、商品列と合計列付きで作成してください:Desk、250、数量 2。

エージェントは、書き出したファイルのパスを返します。QUARIO_OUT_DIR が設定されていない場合、ファイルはシステムの一時ディレクトリ内にある quario-mcp に保存されます。

4. ファイルを読み取れるようにします(任意)。 インラインデータはどこでも利用できます。エージェントが dataPath で JSON ファイルを渡せるようにするには、そのファイルを含むディレクトリを QUARIO_DATA_ROOT に設定します。Claude Code は CLAUDE_PROJECT_DIR を設定し、QUARIO_DATA_ROOT が未設定の場合、サーバーはその値を使用します。


設定

サーバーは環境変数から設定を読み取ります。フラグも設定ファイルもありません。変数が空の場合は、未設定として扱われます。

変数設定内容未設定の場合
QUARIO_LICENSEライセンスキーライセンスなしとなり、出力にマークが付きます
QUARIO_LOCALEデフォルトの localeen-US
QUARIO_CURRENCYデフォルトの currencyなし
QUARIO_TIME_ZONEデフォルトの timeZoneUTC
QUARIO_SCHEMEShref のスキーム(カンマ区切り)https:,mailto:
QUARIO_MAX_DEPTHクエリ予算、または Infinity500
QUARIO_MAX_NODESクエリ予算、または Infinity上限なし
QUARIO_MAX_RESULTSクエリ予算、または Infinity上限なし
QUARIO_DATA_ROOTdataPath の解決先ディレクトリCLAUDE_PROJECT_DIR。未設定なら dataPath の解決に失敗します
QUARIO_OUT_DIRサーバーの書き込み先ディレクトリシステムの一時ディレクトリ内の quario-mcp

サーバーが実行できない値があると、起動時に停止します。 メッセージは stderr に出力されます。これには、解析できない予算値、エンジンが拒否するスキーム、存在しないデータルート、サーバーが作成または書き込みできない出力ディレクトリが含まれます。例外は、検証に失敗したライセンスキーです。この場合、サーバーは起動し、出力にマークが付きます。

信頼の境界

環境に設定される設定の主体はホストです。ツールを呼び出すエージェントは作成者であり、エンジンは作成者を信頼できないものとして扱います。そのため、ツールの引数からホスト設定に到達することはありません。クエリ予算、href のスキーム、登録済み関数、フォント、ライセンスキー、データルート、出力ディレクトリは、すべて環境変数からのみ設定されます。

例外は locale、currency、timeZone、およびターゲットオプションです。これらはレポートの見た目を変えるだけで、サーバーが読み取り、実行、書き込みできる内容には影響しないため、呼び出し時に設定できます。


validate_report

定義をレンダリングせずに読み取り、問題がないか確認します。

フィールド型備考
definitionobject必須
targetsarray of "html" | "pdf" | "xlsx" | "docx" | "csv"任意。各ターゲットに対して required を確認します

definition フィールドには、説明も含め、レポートドキュメントの完全な JSON Schema が含まれます。そのため、エージェントはツール自体からドキュメントの意味を読み取れます。サーバーはこのスキーマに照らしてエンベロープを読み取り、定義を検証せずにエンジンへ渡します。エンジンは問題のある箇所のパスに、問題を 1 件報告します。失敗したすべてのサブスキーマを列挙するスキーマの報告よりも、こちらのほうがエージェントにとって有用です。

問題は成功した結果であり、エラーではありません。結果には { problems, warnings } を含む structuredContent と、同じオブジェクトを JSON として格納した 1 つのテキストブロックが含まれます。一方のクライアントは構造化されたコピーをモデルに渡し、別のクライアントはテキストを渡すため、どちらのコピーにも完全な内容が含まれます。

  • 問題は { path, source?, message, code?, start?, end? } です。エンジンに位置情報付きの診断がある場合、code、start、end がそこから取得されます。
  • 警告は { path, message } です。

render_report

定義を 1 つのターゲットにレンダリングし、出力をファイルに書き込みます。

フィールド型備考
definitionオブジェクト必須
target"html" | "pdf" | "xlsx" | "docx" | "csv"必須
data任意の JSON 値data と dataPath のいずれか一方だけを指定してください
dataPath文字列データルート内の JSON ファイル
paramsオブジェクト任意。定義の params に渡す値
locale文字列任意。この呼び出しでは QUARIO_LOCALE を上書きします
currency文字列任意。この呼び出しでは QUARIO_CURRENCY を上書きします
timeZone文字列任意。この呼び出しでは QUARIO_TIME_ZONE を上書きします
filename文字列任意。ベース名。詳細は以下を参照してください
optionsオブジェクト任意。xlsx の page、meta、filter

このツールは定義をターゲットに合わせてプランニングするため、そのターゲットで失われる required 宣言があると問題になります。問題のある定義は、validate_report と同じ { problems, warnings } を isError として返します。

options はターゲットファクトリーに渡されます。サーバーは fonts と paths を拒否します。不明なキーがあると、ファクトリー独自のメッセージをエラーとして返します。csv ターゲットはオプションを受け取りません。

レンダリングデータ
  • data と dataPath のいずれか一方だけを指定してください。両方を指定した場合、またはどちらも指定しなかった場合はエラーです。
  • dataPath はデータルート内に解決されます。サーバーはシンボリックリンクの解決後にパスを検査するため、リンクを使ってルート外に出ることはできません。データルートがない場合、サーバーは dataPath を拒否します。
  • ファイルには JSON が格納されている必要があります。解析できないファイルの場合、サーバー独自のメッセージが返され、ファイルのテキストが返されることはありません。
  • 画像は次の 2 つの形式のいずれかで渡します。{ "$image": "assets/logo.png" } はデータルート内のファイルを指定します。{ "$base64": "<base64>" } はバイトデータをインラインで渡します。base64 の画像は呼び出しのたびにエージェントのコンテキストを消費するため、$image を推奨します。
  • キーが $image または $base64 だけのオブジェクトは、レンダリング前にバイトデータにデコードされます。これは、インラインデータでもファイル内でも、あらゆる階層で行われます。定義では通常どおり、バイトデータを =$.input.logo として読み取ります。
  • $image のパスは、dataPath ファイル内の場合も含め、データルートを基準に解決されます。サーバーはシンボリックリンクの解決後にパスを検査します。ファイルは PNG または JPEG である必要があります。サーバーはそれ以外のファイルを読み取りません。そのため、データファイルの参照を使って任意のファイルをドキュメントにコピーすることはできません。データルートがない場合、サーバーは $image を拒否します。
  • データから同じファイルが何度参照されても、サーバーは各ファイルを 1 回だけ読み取ります。
  • 拒否された場合は、$.input.logo のようにデータ内のパスを示すエラーが返されます。これは、base64 ではない文字列や、存在しない、ルート外にある、または画像ではない $image に適用されます。
出力ファイル

すべてのターゲットはファイルを書き込み、その内容ではなく場所を返します。

  • ファイルは QUARIO_OUT_DIR に出力されます。
  • filename はベース名です。区切り文字を含まず、.. でもない必要があります。サーバーはターゲットの拡張子を強制します。filename を指定しない場合、名前は report-<timestamp>.<ext> になります。
  • サーバーは既存のファイルを上書きしません。名前がすでに存在する場合は、末尾に -1、次に -2 のように連番を付けます。
  • 結果には { path, target, bytes } を含む structuredContent と、Wrote <name> (<size>): <absolute path> というテキストが含まれます。

今回のリリースには含まれません

登録済みの関数、ホストフォント、リモートトランスポート。


開発

npm run check はローカルでの必須チェックです。フォーマット、リント、デッドコードチェック、サイズ上限、ユニットテストと型チェックの各スイート、複雑度チェックを実行します。CI でも同じチェックを実行します。ローカルで check が成功すれば、プルリクエストでも成功します。

このリポジトリの規約は AGENTS.md に記載されています。読者が最も元に戻してしまいそうな決定事項は docs/adr に記載されています。


ライセンス

Copyright 2026 Robin van der Vleuten

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

このサーバーがインストールする quario および @quario/* パッケージには、それぞれ独自のライセンスがあります。各パッケージの LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

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

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