mcpField
T
Transform Rules MCP Server

Transform Rules MCP Server

ローカル
github.com/vinhphatfsg開発ツール120 週間前に更新

Transform Rules MCP Server について

Transform Rules MCP Server は、Rulemorph のデータ変換機能を AI アシスタントに提供します。宣言的な YAML/JSON ルールで複数形式の入力を処理し、ルール検証、DTO 生成、入力分析も行えます。

主な機能

  1. 01複数形式のデータを JSON に変換
  2. 02変換ルールの検証
  3. 037 言語向け DTO の生成
  4. 04入力構造の分析
  5. 05YAML/JSON ルールによる変換

活用シーン

  1. 01外部 API レスポンスの正規化
  2. 02CSV や Excel の JSON への取り込み
  3. 03HTML や XML の値の抽出と整形

MCP 対応

`rulemorph-mcp` MCP サーバーは、AI アシスタントに `transform`、`validate_rules`、`generate_dto`、`analyze_input` を提供します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbtransform-rules-mcp-v0.1.5-aarch64-apple-darwin.mcpb
mcpbtransform-rules-mcp-v0.1.5-x86_64-apple-darwin.mcpb
mcpbtransform-rules-mcp-v0.1.5-x86_64-unknown-linux-gnu.mcpb
mcpbtransform-rules-mcp-v0.1.5-x86_64-pc-windows-msvc.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Rulemorph

Crates.io docs.rs ライセンス:MIT

Rulemorph は、外部 API、CSV、JSON、YAML、TOML、XML、HTML、Markdown、Excel のデータを、宣言的な YAML/JSON ルールを使って予測可能な JSON に変換します。

入力ソースごとに新しいカスタムスクリプトを追加する代わりに、変換の動作をルールファイルで管理できます。同じルールは、CLI から利用したり、Rust に組み込んだり、ローカルの UI/API サーバーで提供したり、MCP を通じて AI アシスタントに公開したりできます。

ブラウザーでお試しください:playground.rulemorph.com

解決する課題

Rulemorph は、増え続ける変換コードを、レビュー可能でバージョン管理できるルールに移行します。

  • ベンダー API のレスポンスを内部スキーマに正規化する
  • CSV / Excel のインポートデータを JSON パイプラインに取り込む
  • HTML や XML から値を抽出し、同じルールモデルで処理する
  • 変換の動作を YAML/JSON としてレビュー、置換、バージョン管理する
  • 同じ変換を CLI、ローカル API、AI アシスタントから再利用する

任意の実行、複雑なドメインロジック、長時間実行するワークフローのオーケストレーションにおいて、アプリケーションコードを置き換えることを目的としていません。こうしたケースでは、通常のアプリケーションコードやワークフローエンジンのほうが適しています。

クイックスタート

外部 API のレスポンスに含まれる users 配列を、アプリケーションが想定する JSON 形式に変換します。

rules.yaml

version: 2
input:
  format: json
  json:
    records_path: "users"
mappings:
  - target: "id"
    source: "user_id"
  - target: "name"
    expr: ["@input.full_name", trim]
  - target: "email"
    expr: ["@input.username", concat: ["lit:@example.com"]]

input.json

{ "users": [{ "user_id": 1, "full_name": " Alice ", "username": "alice" }] }

実行

rulemorph transform -r rules.yaml -i input.json

入力を transform にパイプで渡すこともできます。

cat input.json | rulemorph transform -r rules.yaml
cat input.json | rulemorph transform -r rules.yaml -i -

出力

出力を表示
[{ "id": 1, "name": "Alice", "email": "[email protected]" }]

ルールファイルを使わずに、その場で簡単な変換を行うにはダイレクトモードを使用します。

JSON またはアドホックな CSV に対して単一の式を評価します。

echo '{ "test": 1 }' | rulemorph -rule '@input.test'
echo '{ "a": 1, "b": 2 }' | rulemorph --rule '["@input.a", {"+": ["@input.b"]}]'
echo 'a,test,1' | rulemorph -rule '@input.0'
echo 'a,test,1' | rulemorph -H 'id,name,age' -rule '@input.id'
出力を表示
1
3
"a"
"a"

小さな出力オブジェクトを作成し、フィールドの順序を指定したい場合は -F/--field を使用します。

echo 'u1,Alice,42' | rulemorph -H 'id,name,age' \
  -F id='@input.id' \
  -F name='["@input.name","trim","uppercase"]' \
  -F age='["@input.age","int"]'
出力を表示
{ "id": "u1", "name": "ALICE", "age": 42 }

簡潔なネストされたターゲットマップのほうが読みやすい場合は、--output-map を使用します。

echo 'u1,Alice,42' | rulemorph -H 'id,name,age' \
  --output-map '{"user.id":"@input.id","user.name":["@input.name","trim"],"age":["@input.age","int"]}'
出力を表示
{ "user": { "id": "u1", "name": "Alice" }, "age": 42 }

ダイレクト入力に複数のレコードがある場合は、--ndjson を追加すると、1 行につき 1 つの JSON 値が出力されます。

printf 'u1,Alice,42\nu2,Bob,7\n' | rulemorph --ndjson -H 'id,name,age' \
  --output-map '{"id":"@input.id","age":["@input.age","int"]}'
出力を表示
{"age":42,"id":"u1"}
{"age":7,"id":"u2"}

ダイレクトモードでは、CSV ファイルや Excel ファイルも読み込めます。.csv ファイルでは CSV ヘッダーが自動的に推定されます。ヘッダーのない CSV には -H/--headers を使用してください。Excel の場合は、ヘッダー行とデータ範囲を明示的に指定します。

rulemorph --rule '@input.id' -i users.csv
rulemorph -H 'id,name,age' --rule '@input.id' -i headerless-users.csv
rulemorph --rule '@input.id' -i users.xlsx --excel-header-row 1 --excel-data-range A2:D20
出力を表示
"u1"
"u1"
["u1","u2"]

Rulemorph のデモ

使用するパッケージ

目的使用するもの
インストールせずにルールを試すRulemorph Playground
ファイル変換、DTO 生成、CI 検証rulemorph CLI
Rust アプリケーションに変換処理を組み込むrulemorph クレート
ローカル UI または YAML で定義した API を実行するrulemorph-server
AI アシスタントから変換、検証、DTO 生成を利用するrulemorph-mcp

インストール

CLI、サーバー、MCP サーバーのビルド済みバイナリは、GitHub Releases から入手できます。

CLI
brew install vinhphatfsg/tap/rulemorph

開発用にソースからビルドする場合:

cargo build -p rulemorph_cli --release
./target/release/rulemorph --help
UI / API サーバー
brew install vinhphatfsg/tap/rulemorph-server
rulemorph-server --rules-dir ./api_rules --api-mode rules

起動手順の詳細は、UI サーバーガイドを参照してください。

MCP サーバー

rulemorph-mcp は、Model Context Protocol を通じて AI アシスタントに Rulemorph の機能を提供します。

  • transform:データを変換します
  • validate_rules:ルールを検証します
  • generate_dto:DTO を生成します
  • analyze_input:入力構造の概要をまとめます

Claude Code のセットアップ:

claude mcp add rulemorph -- rulemorph-mcp

主な機能

  • CSV / JSON / YAML / TOML / XML / HTML / Markdown / .xlsx Excel を JSON レコードに正規化します
  • mappings を使って出力フィールドを構築します
  • v2 パイプ式で値を変換します:トリミング、大文字・小文字の変換、連結、数値演算、ルックアップ、配列操作
  • defs を使ってルール単位のカスタム OP を定義し、型付き v2 パイプやマッピング本体を再利用します
  • sqrt、mod、pow、clamp、range などの数値ヘルパーを使用して、範囲を制限した生成シーケンスを作成します
  • record_when、when、asserts で動作を制御します
  • steps、branch、finalize を使って、順序付きの実行と出力配列の処理を行います
  • Rust、TypeScript、Python、Go、Java、Kotlin、Swift 向けに推論された DTO を生成します。明示的な type が優先され、動的または安全でない形状は JSON に適した型にフォールバックします。
  • 変換出力を変更せずに、組み込み OP とカスタム OP の実行に関するセマンティックトレースを調べます
  • ローカル UI/API サーバーを実行するか、同じエンジンを MCP 経由で公開します

入力パーサーは保守的に動作するよう設計されています。HTML パーサーは JavaScript を実行したり URL を取得したりしません。Markdown の生 HTML はソーステキストとしてのみ保持され、Excel パーサーはマクロを実行したり数式を評価したりしません。曖昧さや副作用を伴う入力動作を避けるため、XML DTD/エンティティと JSON/YAML の重複キーは拒否されます。

ルール構造

version: 2
input:
  format: json # csv | json | yaml | toml | xml | html | markdown | excel
  json:
    records_path: "items"
mappings:
  - target: "output.field"
    source: "input.field"
    type: string
    when:
      eq: ["@input.status", "active"]

新しいルールファイルでは version: 2 を使用してください。移行期間中は version: 1 のルールファイルも引き続き受け入れられますが、検証およびランタイムのエントリーポイントで非推奨の警告が表示されます。今後のリリースでは、この構文を削除する前に、version: 1 のルールファイルを明示的なレガシーオプトインが必要な形式に変更する予定です。

ルールの完全な仕様については、変換ルール仕様を参照してください。日本語版は日本語でもご覧いただけます。

DTO の生成

rulemorph generate -r rules.yaml -l typescript
export interface Record {
  id: number;
  name: string;
  email: string;
}

対応言語:rust、typescript、python、go、java、kotlin、swift

DTO の生成では、まず明示的なマッピング型を使用し、その後、リテラルと v2 パイプ式から単純なスカラー、配列、マップ、ネストされたオブジェクトの形状を推論します。形状が動的である場合や、安全に推論するには広範すぎる場合、生成される DTO では各言語の JSON フォールバック型が使用されます。

ライブラリの使用

[dependencies]
rulemorph = "0.3.4"

html、excel、markdown の入力パーサーはデフォルトで有効です。コアの CSV、JSON、YAML、TOML、XML のサポートのみを必要とするライブラリ利用者は、任意のパーサー依存関係を減らすため、これらを無効にできます。

[dependencies]
rulemorph = { version = "0.3.4", default-features = false }

["html"]、["excel"]、["markdown"] などの機能を指定して、パーサーを明示的に再度有効にできます。 無効化されたパーサーがルールで選択された場合、変換は invalid_input で失敗します(Markdown の場合:input format markdown is not enabled in this build)。

use rulemorph::{parse_rule_file, transform};

let rule = parse_rule_file(&std::fs::read_to_string("rules.yaml")?)?;
let input = std::fs::read_to_string("input.json")?;
let output = transform(&rule, &input, None)?;

ドキュメント

コメント

MCP は初めてですか?

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

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