正则表达式构建工具

用于通过命名片段组合构建正则表达式的MCP服务器,简化LLMs生成正则表达式的语法复杂性。

  • by os-tack
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 aetherwing-io/fcp-regex

使用说明

fcp正则表达式

MCP服务器,用于通过命名片段组合构造正则表达式。

它的作用

LLM完全理解正则表达式语义——他们知道自己想要匹配什么。但它们在正则表达式语法上总是失败:不平衡的组、未转义的元字符、损坏的替换。fcp-regex通过让LLM使用平面元素语法通过命名片段构建正则表达式来解决这个问题。没有原始正则表达式,没有paren平衡,没有逃避负担。建立在 FCP 框架。

使用Rust编写 rmcp 用于MCP运输和 正则表达式语法 用于汇编。

快速示例

regex_session('new "Semver Parser" flavor:pcre')

regex([
  "define digits any:digit+",
  "define version digits lit:. digits lit:. digits",
  "define prerelease lit:- chars:a-zA-Z0-9-.+",
  "define semver version opt:prerelease",
  "compile semver anchored:true"
])

生产: ^\d+\.\d+\.\d+(?:-[a-zA-Z0-9\-.]+)?$

regex_query('test semver against:1.2.3-alpha.1')
→ MATCH

regex_query('test semver against:v1.2')
→ NO MATCH

可用的MCP工具

工具 目的
regex(ops) 批量突变——定义片段、导入模式、编译为正则表达式
regex_query(q) 检查——显示、测试、解释、列出片段和库
regex_session(action) 生命周期——新建、关闭、状态、撤消、重做
regex_help() 完整参考卡

动词引用——变异

动词 语法
define define NAME ELEMENT [ELEMENT...]
from from SOURCE [as:ALIAS]
compile compile NAME [flavor:F] [anchored:bool]
drop drop NAME
rename rename OLD NEW

动词引用——查询

动词 语法
show show NAME --片段树+编译正则表达式
test test NAME against:STRING --测试赛
list list --所有碎片
list library list library [category:NAME] --模式库
get get PATTERN --库模式细节
map map --片段+库概述
stats stats --会话统计

动词引用--会话

动词 语法
new new "Title" [flavor:pcre]
close close
status status
undo undo [to:CHECKPOINT]
redo redo
checkpoint checkpoint NAME

元素语法

元素 含义 示例
<name> 引用另一个片段 digits
lit:<chars> 文字(自动转义) lit:. lit:@
any:<class><quant> 角色类别 any:digit+
none:<class><quant> 否定类 none:whitespace+
chars:<set><quant> 自定义字符集 chars:a-z0-9+
not:<set><quant> 被否定的自定义集 not:@/+
opt:<name> 可选 opt:prerelease
alt:<a>|<b> 交替 alt:ipv4|ipv6
cap:<name> 捕获组 cap:domain
cap:<label>/<name> 命名捕获 cap:port/digits
sep:<name>/<lit> 分开重复 sep:octet/lit:.
raw:<regex> 原始正则表达式传递 raw:(?<=\b)

类: digit alpha alphanumeric word whitespace any

量词: + (1+) * (0+) ? (0..1) {N} {N,M} {N,}

模式库

56种精选模式,涵盖8个类别:uri、电子邮件、日期时间、标识符、网络、http、公共、数据。

regex(["from semver"])
regex_query('list library')
regex_query('get rfc3986:uri')

安装

从源代码构建

cargo install --git https://github.com/os-tack/fcp-regex

MCP客户端配置

{
  "mcpServers": {
    "fcp-regex": {
      "command": "fcp-regex"
    }
  }
}

建筑

Cargo.toml                     Workspace root
├── src/                       MCP server (fcp-regex binary + lib)
│   ├── main.rs                Entry point — MCP stdio + Slipstream bridge
│   ├── bridge.rs              Slipstream daemon connectivity
│   ├── mcp/server.rs          RegexServer (4 rmcp tool handlers)
│   ├── fcpcore/               FCP framework (Rust port)
│   │   ├── tokenizer.rs       DSL tokenizer
│   │   ├── parsed_op.rs       Operation parser
│   │   ├── verb_registry.rs   Verb spec registry
│   │   ├── event_log.rs       Event sourcing (undo/redo)
│   │   ├── session.rs         Session lifecycle
│   │   └── formatter.rs       Response formatter
│   └── reference_card.rs      Embedded reference card
│
└── fcp-regex-core/            Core library (no MCP dependencies)
    └── src/
        ├── elements/           Element parser (lit:, any:, cap:, etc.)
        ├── domain/
        │   ├── model.rs        FragmentRegistry + RegexEvent
        │   ├── compiler.rs     Fragment graph → regex string
        │   ├── mutation.rs     define/from/compile/drop/rename handlers
        │   └── query.rs        show/test/list/get handlers
        └── library/            56 curated patterns (8 categories)

发展

cargo test          # Run all tests
cargo build         # Build binary
cargo clippy        # Run lints
make help           # Show Makefile targets

许可证

麻省理工学院