Token导航 LogoToken导航TokenDH.com
MCP Flag Sweeper logo
运维云端stdio官方级别未说明来源级核验

MCP Flag Sweeper

MCP Server

一个自动化清理代码中功能标志的工具,通过替换标志调用为最终值来减少技术债务并提高代码可维护性。

工具数

2

提示词数

0

GitHub Stars

1

资源数

0
PythonClaude云端部署ClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

hbg

提供方

hbg

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install fastmcp polyglot-piranha

详细介绍

Flag Sweeper 🚩

问题

功能标志对于现代软件开发至关重要,但它们会造成隐藏的技术债务危机:

  • 🏴‍☠️ 死旗 在生产代码中保留数月/数年
  • 🔀 分支复杂性 使代码更难理解和维护
  • 🐛 Bug风险 从过时的条件逻辑
  • 🚀 性能开销 不必要的运行时检查
  • 😤 开发人员沮丧 导航被污染的代码库

现实: 大多数功能标志应该是临时的,但手动清理既费时又容易出错。

解决方案

一个模型上下文协议(MCP)服务器,它使用Polyglot Piranha自动清理代码库中的特征标志。根据中定义的标志状态将特征标志调用转换为最终值 flags.json.

🎯 愿景: 连接到实时功能标志系统(LaunchDarkly、Split.io、自定义实验MCP),以自动识别并安全地从代码库中删除稳定标志。

✨ 这有什么作用

之前(特色旗帜地狱):

if isFeatureEnabled("beta_ui") {
    renderBetaUI()
} else {
    renderOldUI()
}

if client.GetString("new_checkout") == "true" {
    processNewCheckout()
} else {
    processLegacyCheckout()
}

之后(干净、可维护的代码):

if true {
    renderBetaUI()
} else {
    renderOldUI()
}

if false {
    processNewCheckout()
} else {
    processLegacyCheckout()
}

*下一步:让你的编译器/优化器完全删除死分支!*

🚀 快速开始

  1. 安装依赖项:
   pip install fastmcp polyglot-piranha
  1. 在游标中配置:

增添 ~/.cursor/mcp.json:

   {
     "mcpServers": {
       "mcp-piranha": {
         "command": "python3",
         "args": ["-m", "mcp-piranha"],
         "cwd": "/path/to/your/project",
         "env": {
           "PYTHONPATH": "/path/to/your/project"
         }
       }
     }
   }
  1. 创建 flags.json 在您的项目中:
   {
     "functions": [
       "isFeatureEnabled",
       "client.GetString",
       "isEnabled",
       "getFlag",
       "is_feature_enabled"
     ],
     "flags": {
       "beta_ui": {
         "value": true,
         "description": "Enables the new beta user interface",
         "replace_with": true
       },
       "new_checkout": {
         "value": false,
         "description": "New payment processing flow",
         "replace_with": false
       }
     }
   }

🛠️ MCP工具

list_flags

从以下位置加载和解析功能标志 flags.json 在您的项目目录中。

参数:

  • working_directory (可选):要搜索的目录 flags.json

退货:

  • flags:旗帜名称列表
  • flag_details:详细的标志信息
  • global_patterns:检测功能模式
  • source_file:加载的路径 flags.json

apply_rewrite

通过将特征标志调用替换为其最终值来转换代码。

参数:

  • code:要转换的源代码
  • language:编程语言(go、java、python等)
  • flag_name (可选):要清理的特定标志
  • rules (可选):自定义食人鱼规则
  • edges (可选):自定义规则边

退货:

  • transformed_code:转换后的代码
  • message:状态消息

📝 flags.json 格式

用于定义特征标志和检测模式的JSON格式:

{
  "functions": ["function1", "function2", "function3"],
  "flags": {
    "flag_name": {
      "value": true,
      "description": "Flag description",
      "replace_with": true
    }
  }
}

格式详细信息

函数数组:

  • 要检测的函数名数组
  • 示例: "isFeatureEnabled", "client.GetString", "isEnabled"
  • 支持任何将标志名称作为字符串参数的函数

标记对象:

  • 以标志名称作为键的对象
  • 每个标志包含:

- value:当前状态(真/假) - description:人类可读的描述 - replace_with:清理时要更换什么

示例

{
  "functions": [
    "isFeatureEnabled",
    "client.GetString",
    "isEnabled",
    "getFlag",
    "is_feature_enabled",
    "get_flag",
    "flag_manager.is_feature_enabled",
    "config.getBoolean",
    "settings.isEnabled"
  ],
  "flags": {
    "beta_ui": {
      "value": true,
      "description": "Enables the new beta user interface with modern design elements",
      "replace_with": true
    },
    "new_checkout_flow": {
      "value": false,
      "description": "New payment processing flow with improved UX",
      "replace_with": false
    },
    "feature_flag": {
      "value": true,
      "description": "Generic feature flag for testing purposes",
      "replace_with": true
    },
    "legacy_auth": {
      "value": false,
      "description": "Legacy authentication system (deprecated)",
      "replace_with": false
    },
    "debug_mode": {
      "value": true,
      "description": "Enables debug logging and additional error information",
      "replace_with": true
    }
  }
}

🔧 运作原理

  1. 模式检测:使用全局函数模式查找特征标志调用
  2. 灵活匹配:支持各种功能签名:

- isFeatureEnabled("flag_name") - isFeatureEnabled("flag_name", arg2) - isFeatureEnabled(arg1, "flag_name") - isFeatureEnabled(arg1, "flag_name", arg3)

  1. 规则生成:为每个函数模式创建食人鱼规则
  2. 代码转换:将标志调用替换为其最终值

🧪 测试

在中运行测试 tests/ 目录:

python3 tests/test_multilayered.py

📁 项目结构

mcp-piranha/
├── src/
│   ├── __init__.py
│   └── server.py          # Main MCP server
├── tests/
│   ├── test_multilayered.py
│   └── test_*.py          # Additional test files
├── __main__.py            # Entry point
├── flags.json             # Feature flag definitions
├── motivation.png         # The problem we're solving
└── README.md

🎯 支持的语言

  • - isFeatureEnabled(), client.GetString(),自定义图案
  • Java - config.getBoolean(), featureManager.isEnabled()
  • python - is_feature_enabled(), get_flag()
  • JavaScript/TypeScript -各种标志检查模式
  • C -基于配置的标志模式
  • 还有更多 -可通过Polyglot Piranha的规则系统进行扩展

🔍 现实世界影响

降低代码复杂度

之前: 导航嵌套标志条件

if is_feature_enabled("new_dashboard"):
    if is_feature_enabled("advanced_analytics"):
        render_advanced_dashboard()
    else:
        render_basic_new_dashboard()
else:
    render_legacy_dashboard()

之后: 清晰的线性逻辑

if true:
    if true:
        render_advanced_dashboard()
    else:
        render_basic_new_dashboard()
else:
    render_legacy_dashboard()

性能优势

  • 运行时标志评估 (数据库/API调用)
  • 编译时间常数 (运行时开销为零)
  • 🚀 死代码消除 由编译器/打包器

🔮 未来愿景:企业整合

graph LR
    A[Feature Flag System
LaunchDarkly/Split.io] --> B[Safety Analysis
Rollout % / Stability]
    B --> C[MCP Piranha
Code Transformation]
    C --> D[Clean Codebase
Zero Technical Debt]

马上就来:

  • 🔌 直播旗系统集成 -直接连接到LaunchDarkly、Split.io、Unleash
  • 🛡️ 安全性分析 -仅删除95%以上推出和30天以上稳定性的标志
  • 🔄 自动化工作流程 -CI/CD与审批流程的集成
  • 📊 影响分析 -应用前预览更改
  • 🎯 批量操作 -安全地清理整个代码库

🚨 故障排除

  • “未应用任何转换”:检查一下 flags.json 存在并包含该标志
  • “连接已关闭”:重新启动Claude Code或MCP服务器
  • “树保姆查询无效”:确保函数模式是有效的标识符

💡 为什么这很重要

“功能标志是一个强大的工具,但如果没有适当的清理,它们就会成为随着时间的推移而加剧的技术债务。这个项目自动化了去除标志这一乏味但关键的任务,保持代码库的清洁和可维护性。”

目标: 使功能标志清理变得如此简单和安全,使其成为每个开发工作流程的标准部分。

目录标签

目录标签

PythonClaude云端部署功能标志清理本地部署代码优化技术债务管理自动化工具软件开发

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP