mcpField
G
Genify

Genify

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

Genify について

Genifyは、AIコーディングエージェント向けのファイル変更用MCPサーバー兼コマンドラインツールです。指定したプロジェクトルート内で構造化された編集を計画、検証、プレビューしてから適用でき、変更には明示的な承認が必要です。

主な機能

  1. 01ファイル操作の計画
  2. 02統一差分のプレビュー
  3. 03承認済み変更の適用
  4. 04生成設定の検証
  5. 05テンプレートからのプロジェクト生成

活用シーン

  1. 01適用前のプロジェクト変更確認
  2. 02一貫したプロジェクト構成の生成
  3. 03共有設定による複数プロジェクトの更新

MCP 対応

GenifyはSTDIO経由で、計画、差分表示、設定検証、テンプレート一覧、変更適用のツールをMCPクライアントに提供します。ファイルアクセスは指定したルート内に制限され、変更適用には明示的な承認が必要です。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

genify

AI コーディングエージェントがプロジェクトルート内の構造化されたファイル変更を安全に計画、差分表示、適用するための MCP ツールです。

genify を使うと、ファイルの書き込み、テキストの置換、マーカーの前後へのブロック挿入、パスの移動/コピー/削除、ディレクトリの作成、モードの変更、変更適用前のドライラン差分の生成など、コードベースの変更を繰り返し実行できます。

Crates.io Docs.rs CI Coverage Status

1 つのファイルからプロジェクト全体を生成する

基本的な考え方は、単一のソースファイルを使い、さまざまな設定ファイルからプロジェクト構造全体をすばやく一貫して生成、または更新できるようにすることです。

モードは 3 つあります。

  • CLI インタラクティブモード – 手動での使用や、すばやい入力に適しています。
  • コードモード – 自動化された、設定可能なプロジェクト生成に適しています。
  • MCP サーバーモード – STDIO 経由で構造化されたツールを呼び出す AI コーディングエージェント向けです。

機能:

  • 設定に基づくテンプレートからのファイル作成。
  • 正規表現を使ったコンテンツの置換。
  • 既存ファイルへのコンテンツの追加または先頭への挿入。
  • 共通の設定を使った複数プロジェクトの簡単な更新。

インストール

Cargo
  • cargo を利用できるように、こちらのガイドに従って Rust ツールチェーンをインストールします。
  • 次を実行します。
    cargo install genify --features cli
    

はじめに

CLI
Turn one file into a complete project

Usage: genify [OPTIONS] [PATH]
       genify <COMMAND>

Arguments:
  [PATH]  Path to a config file or http(s) URL

Options:
  -p, --props-json <JSON>  Override props using a JSON object (Array/Map supported)
  -n, --no-interaction     Do not ask any interactive question
  -h, --help               Print help
  -V, --version            Print version

Commands:
  mcp   Start genify as an MCP server over STDIO
  help  Print this message or the help of the given subcommand(s)

example.toml

[props]
value = "value"
dir = "tmp"
val = "val"
other = "{{ val }}"
override = "1"

[[rules]]
type = "write"
path = "{{ dir }}/some.txt"  # if the file exists will be error
content = "{{ val }} {{ value }} {{ other | pascal_case }} {{ override }} - should be replaced"
if_exists = "error"

[[rules]]
type = "replace"
path = "{{ dir }}/some.txt"
replace = "should.*replaced"
content = "replaced {{ value }}"

[[rules]]
type = "prepend"
path = "{{ dir }}/some.txt"
content = "prepend {{ value }}"

[[rules]]
type = "append"
path = "{{ dir }}/some.txt"
content = "append {{ value }}"
genify example.toml

配列/マップを含むプロパティを、JSON を使って CLI から上書きします。

genify example.toml --props-json '{"tags": ["cli", "json"], "meta": {"license": "MIT"}}'

tmp/some.txt

prepend value
val value Val 1 - replaced value
append value
MCP

標準の STDIO トランスポートを使用して、genify を MCP サーバーとして実行します。

genify mcp --root .

読み取り専用のエージェントセッションの場合:

genify mcp --root . --read-only

Codex の設定例:

[mcp_servers.genify]
command = "genify"
args = ["mcp", "--root", "."]

MCP サーバーはプロトコルメッセージのみを stdout に書き込み、ログと診断情報は stderr に出力します。 ファイルシステムへのアクセスは --root の範囲内に制限されます。

利用可能なツール:

ツール動作
genify_planファイルを書き込まずに、予定されているファイル操作と影響を受けるパスを返します。
genify_diffドライランモードで生成を実行し、統合 diff を返します。
genify_applyexplicit_approval が true、または confirm_token が "apply" の場合にのみ変更を適用します。
genify_validate_config設定の解析、レンダリング、生成されたパスを検証します。
genify_list_templatesMCP ルート配下の .toml 設定ファイルとテンプレートファイルを一覧表示します。

genify_plan、genify_diff、genify_apply は、MCP ツールの引数として設定を JSON 形式で直接受け付けます。 一時的な TOML 設定ファイルやテンプレートファイルは必要ありません。

{
  "config": {
    "rules": [
      {
        "type": "replace",
        "path": "src/application.rs",
        "replace": "old text",
        "content": "new text"
      }
    ]
  },
  "root": "."
}

サポートされているルールの種類:

種類フィールド
writepath、content、if_exists(overwrite、error、または skip)
deletepath
rename / movefrom、to
copyfrom、to
mkdirpath
chmodpath、mode
append / append_once / prependpath、content
insert_before / insert_afterpath、marker、content
replace / replace_or_appendpath、replace、content、任意の replace_all、任意の expected_matches
managed_blockpath、start_marker、end_marker、content

replace はデフォルトで厳密に動作します。replace_all が false または省略されている場合、正規表現の一致数が expected_matches と一致しないと失敗します。expected_matches のデフォルト値は 1 です。

サポートされているルールの例:

{
  "config": {
    "rules": [
      {
        "type": "write",
        "path": "new/file.rs",
        "content": "...",
        "if_exists": "error"
      }
    ]
  }
}
{
  "config": {
    "rules": [
      {
        "type": "append_once",
        "path": "README.md",
        "content": "..."
      }
    ]
  }
}
{
  "config": {
    "rules": [
      {
        "type": "managed_block",
        "path": "README.md",
        "start_marker": "",
        "end_marker": "",
        "content": "..."
      }
    ]
  }
}
{
  "config": {
    "rules": [
      {
        "type": "insert_after",
        "path": "README.md",
        "marker": "## Usage",
        "content": "..."
      }
    ]
  }
}
{
  "config": {
    "rules": [
      {
        "type": "move",
        "from": "old/file.rs",
        "to": "new/file.rs"
      }
    ]
  }
}

設定がない場合や無効な場合、genify_validate_config は構造化された hint.minimal_config と、操作ごとの例を返します。

サポートされている変数の種類
種類説明CLI の対話型入力への対応
Stringテキスト値✅ 対応
Integer整数✅ 対応
Float小数✅ 対応
Booleantrue または false✅ 対応
Array値のリスト✅ JSON 入力
Mapキーと値のペア✅ JSON 入力

注: Array と Map の場合は、プロンプトが表示されたときに JSON を入力するか、あらかじめ --props-json で指定してください。

コード
fn main() {
    genify::generate(
        Path::new("."),
        &genify::parse_toml(
            fs::read_to_string("example.toml")
                .unwrap()
                .as_str(),
        )
        .expect("The config should be valid"),
        Some(vec![(
            "value".to_string(),
            genify::Value::String("val".to_string()),
        )]),
    )
    .expect("The generation should be successful");
}

ライセンス

貢献

CONTRIBUTING.md

コメント

MCP は初めてですか?

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

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