mcpField
G
Genify

Genify

Local
github.com/daxartioDeveloper Tools2Updated 12w ago

About Genify

Genify is a file-change MCP server and CLI for AI coding agents and repeatable project generation. It plans, previews, validates, and applies structured edits within a defined project root, with explicit approval for changes.

Key features

  1. 01Plan file operations
  2. 02Preview unified diffs
  3. 03Apply approved changes
  4. 04Validate generation configs
  5. 05Generate projects from templates

Use cases

  1. 01Review project edits before applying
  2. 02Generate consistent project structures
  3. 03Update several projects from shared configs

MCP support

Genify exposes planning, diffing, validation, template listing, and apply tools to MCP clients over STDIO. File access is constrained to the configured root, and applying changes requires explicit approval.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

genify

MCP tool for AI coding agents to safely plan, diff, and apply structured file changes inside a project root.

Use genify for repeatable codebase edits: writing files, replacing text, inserting blocks around markers, moving/copying/deleting paths, creating directories, changing modes, and generating dry-run diffs before applying changes.

Crates.io Docs.rs CI Coverage Status

Turn one file into a complete project

The main idea is to have a single source file that can be used to generate or update a full project structure quickly and consistently using different configuration files.

There are three modes:

  • CLI interactive mode – for manual use and quick input.
  • Code mode – for automated and configurable project generation.
  • MCP server mode – for AI coding agents that call structured tools over STDIO.

Features:

  • Create files from templates based on config.
  • Replace content using regular expressions.
  • Append or prepend content to existing files.
  • Easily update multiple projects using shared configs.

Installation

Cargo
  • Install the rust toolchain in order to have cargo installed by following this guide.
  • run
    cargo install genify --features cli
    

Get Started

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

Override props from the CLI (including Array/Map) using JSON:

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

Run genify as an MCP server using the standard STDIO transport:

genify mcp --root .

For read-only agent sessions:

genify mcp --root . --read-only

Example Codex configuration:

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

The MCP server writes protocol messages only to stdout; logs and diagnostics go to stderr. All filesystem access is constrained to --root.

Available tools:

ToolBehavior
genify_planReturns planned file operations and affected paths without writing files.
genify_diffRuns generation in dry-run mode and returns a unified diff.
genify_applyApplies changes only when explicit_approval is true or confirm_token is "apply".
genify_validate_configValidates config parsing, rendering, and generated paths.
genify_list_templatesLists .toml configs and template files under the MCP root.

genify_plan, genify_diff, and genify_apply accept the config directly as JSON in MCP tool arguments. No temporary TOML config or template file is required.

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

Supported rule types:

TypeFields
writepath, content, if_exists (overwrite, error, or 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, optional replace_all, optional expected_matches
managed_blockpath, start_marker, end_marker, content

replace is strict by default: when replace_all is false or omitted, it fails unless the regex match count equals expected_matches, which defaults to 1.

Supported rule examples:

{
  "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": "<!-- genify:start -->",
        "end_marker": "<!-- genify:end -->",
        "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 returns a structured hint.minimal_config and per-operation examples when the config is missing or invalid.

Supported Variable Types
TypeDescriptionCLI Interactive Support
StringText value✅ Supported
IntegerWhole number✅ Supported
FloatDecimal number✅ Supported
Booleantrue or false✅ Supported
ArrayList of values✅ JSON input
MapKey-value pairs✅ JSON input

Note: For Array and Map, enter JSON when prompted or provide them up front with --props-json.

Code
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");
}

License

Contribution

CONTRIBUTING.md

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.