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. 03生成七种语言的 DTO
  4. 04分析输入结构
  5. 05通过 YAML/JSON 规则执行转换

适用场景

  1. 01规范化外部 API 响应
  2. 02将 CSV 或 Excel 导入转换为 JSON
  3. 03提取并重塑 HTML 或 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 使用声明式 YAML/JSON 规则,将外部 API、CSV、JSON、YAML、TOML、XML、HTML、Markdown 和 Excel 中的数据转换为格式规范的 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,即可每行输出一个 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 crate
运行本地 UI 或由 YAML 定义的 APIrulemorph-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 执行的语义跟踪信息,而不改变转换输出
  • 运行本地 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 规则文件改为需显式启用旧版选项才能使用,然后再移除此语法。

完整规则规范请参阅 Transformation Rules Spec。另有日文版本:Japanese。

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)?;

文档

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。