mcpField
O
ohm-mcp

ohm-mcp

本地服务
github.com/Murugarajr开发工具240 周前更新

关于 ohm-mcp

ohm-mcp 是面向 Python 项目的 AST 代码分析与重构 MCP 服务,供编码 Agent 和开发者使用。它涵盖架构、类型和性能检查,并支持自动应用更改及回滚。

主要功能

  1. 01AST 方法提取与符号重命名
  2. 02死代码和重复代码检测
  3. 03架构与 SOLID 分析
  4. 04类型覆盖率和测试生成
  5. 05性能模式检测
  6. 06自动应用、历史记录与回滚

适用场景

  1. 01从函数中提取方法并生成补丁
  2. 02跨项目重命名符号或调整导入
  3. 03定位未使用代码与重复实现
  4. 04检查类型覆盖率并生成测试

MCP 相关

作为 MCP 服务向兼容客户端提供 Python 分析与重构工具,可在 GitHub Copilot、Cursor、Cline 等客户端中使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"murugarajr-ohm": {
"command": "npx",
"args": [
"-y",
"ohm-mcp"
]
}
}
}
启动命令npx -y ohm-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmohm-mcp1.0.1
pypiohm-mcp1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

OHM-MCP

OHM-MCP

AI 驱动的 Python 重构与代码质量助手

可与 GitHub Copilot、Cursor IDE、Cline 及任何兼容 MCP 的 AI 助手配合使用。

MCP Registry Python 3.8+ MCP AST-Based License


✨ 核心功能

🏗️ 架构
  • 上帝对象检测
  • SOLID 违规分析
  • 设计模式建议
  • 依赖注入重构
🔧 代码质量
  • AST 提取方法(100% 准确)
  • 消除无用代码
  • 导入重构
  • 符号重命名(项目范围)
  • 重复检测
📊 类型安全
  • 类型覆盖率分析
  • 类型存根生成
  • 自动生成测试
⚡ 性能
  • O(n²) 模式检测
  • 热点分析
  • 基于覆盖率的优先级排序
🤖 自动化
  • 自动应用并回滚
  • 操作历史
  • 质量仪表板

🚀 快速开始

安装
📦 推荐:NPM 方式(自动安装依赖)

无需安装!使用 NPX 自动运行最新版本:

npx -y ohm-mcp@latest

这是最简单的入门方式。只需将配置添加到 AI 助手中(请参阅下文的 IDE 配置)。

MCP Registry: mcp-name: io.github.Murugarajr/ohm-mcp

🐍 替代方式:PyPI 方式(用于本地开发)

在以下情况使用此方式:

  • 使用 Python 包进行本地开发
  • 使用特定的 Python 虚拟环境
  • 从源代码安装以进行自定义

从 PyPI 安装:

pip install ohm-mcp

从源代码安装(用于开发):

pip install -e .
IDE 配置
📦 选项 1:NPX(推荐 - 自动安装依赖)
🔵 使用 NPX 的 GitHub Copilot(VS Code)

发布到 npm 后:

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["ohm-mcp@latest"]
    }
  }
}

本地开发:

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["--package", "/path/to/ohm-mcp-npm", "ohm-mcp"]
    }
  }
}

用法:

  • 打开 Copilot Chat
  • 输入 # 并选择 ohm-mcp 工具
  • 提问:“分析此文件并提出重构建议”
🟣 使用 NPX 的 Cursor IDE

全局(发布到 npm 后):

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["-y", "ohm-mcp@latest"]
    }
  }
}

本地开发:

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["--package", "/path/to/ohm-mcp-npm", "ohm-mcp"]
    }
  }
}

用法:

  • 打开 Cursor Chat(Cmd+L / Ctrl+L)
  • 工具会自动可用
  • 提问:“使用 ohm-mcp 检测死代码”
🟢 使用 NPX 的 Cline(VS Code 扩展)

全局(发布到 npm 后):

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["-y", "ohm-mcp@latest"]
    }
  }
}

本地开发:

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["--package", "/path/to/ohm-mcp-npm", "ohm-mcp"]
    }
  }
}

用法:

  • 打开 Cline 面板
  • 工具可在 Agent 上下文中使用
  • 提问:“分析类型覆盖率并提出改进建议”
🟠 使用 NPX 的 Antigravity

全局(发布到 npm 后):

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["-y", "ohm-mcp@latest"],
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

用法:

  • 工具会在 Antigravity 中自动可用
  • 提问:“使用 ohm-mcp 分析架构”
🔴 使用 NPX 的 Roo Code

全局(发布到 npm 后):

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["-y", "ohm-mcp@latest"]
    }
  }
}

用法:

  • 打开 Roo Code 面板
  • 工具可在 Agent 上下文中使用
  • 提问:“使用 ohm-mcp 检测重复项”
⚫ 使用 NPX 的 Codex VS Code

配置(config.toml):

[mcp_servers.ohm-mcp]
args = ["-y", "ohm-mcp@latest"]
command = "npx"

用法:

  • 打开 Codex 面板
  • 工具会自动可用
  • 提问:“使用 ohm-mcp 推荐设计模式”
🟡 使用 NPX 的 Kilo Code(本地/全局)

本地(在虚拟环境中进行本地开发):

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "/Users/username/project/venv/bin/python",
      "args": ["-m", "ohm_mcp.server"],
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

全局(发布到 npm 后):

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "npx",
      "args": ["-y", "ohm-mcp@latest"]
    }
  }
}

用法:

  • 打开 Kilo Code 面板
  • 工具可在 Agent 上下文中使用
  • 提问:“使用 ohm-mcp 进行重构”
🐍 选项 2:直接使用 Python(手动设置)
🔵 使用 Python 的 GitHub Copilot(VS Code)

首先安装:pip install ohm-mcp

然后添加到 .vscode/mcp.json:

{
  "servers": {
    "ohm-mcp": {
      "command": "python",
      "args": ["-m", "ohm_mcp.server"]
    }
  },
  "inputs": []
}

用法:

  • 打开 Copilot Chat
  • 输入 # 并选择 ohm-mcp 工具
  • 提问:“分析此文件并提出重构建议”
🟣 使用 Python 的 Cursor IDE

首先安装:pip install ohm-mcp

然后添加到 Cursor 的 MCP 设置文件(.cursorrules 或 MCP 配置):

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "python",
      "args": ["-m", "ohm_mcp.server"]
    }
  },
  "inputs": []
}

虚拟环境示例:

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "/Users/username/projects/venv/bin/python",
      "args": ["-m", "ohm_mcp.server"]
    }
  }
}

用法:

  • 打开 Cursor Chat(Cmd+L / Ctrl+L)
  • 工具会自动可用
  • 提问:“使用 ohm-mcp 检测死代码”
🟢 使用 Python 的 Cline(VS Code 扩展)

首先安装:pip install ohm-mcp

然后添加到 Cline 的 MCP 设置:

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "python",
      "args": ["-m", "ohm_mcp.server"]
    }
  }
}

虚拟环境示例:

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "/Users/username/projects/venv/bin/python",
      "args": ["-m", "ohm_mcp.server"]
    }
  }
}

注意: Cline 的 command 和 cwd 都需要使用绝对路径。

用法:

  • 打开 Cline 面板
  • 工具可在 Agent 上下文中使用
  • 提问:“分析类型覆盖率并提出改进建议”
🔧 其他兼容 MCP 的客户端

任何兼容 MCP 的客户端都可以使用此服务。通用配置:

{
  "mcpServers": {
    "ohm-mcp": {
      "command": "<python-interpreter-path>",
      "args": ["<path-to-mcp_server.py>"],
      "cwd": "<project-directory>"
    }
  }
}

查找 Python 路径:

# Unix/Mac
which python
# or
which python3

# Windows
where python

💡 快速用法示例

配置完成后,只需在 AI 助手聊天中按以下格式引用工具:对当前文件使用 #ohm-mcp.tool_name,或使用 @file_name.py

🗑️ 查找死代码
Use #ohm-mcp.detect_dead_code on @utils.py

此工具将检测:

  • ✅ 未使用的导入(从未被引用的导入语句)
  • ✅ 未使用的变量(已赋值但从未读取)
  • ✅ 不可达代码(位于 return/raise/break/continue 之后)
  • ✅ 未使用的函数(已定义但从未调用)
  • ✅ 被遮蔽的变量(内层作用域隐藏了外层作用域的变量)
📋 代码重复检测
Use #ohm-mcp.detect_code_duplicates to find duplicates in /path/to/project

可查找:

  • ✅ 完全重复(代码块 100% 相同)
  • ✅ 近似重复(相似度达到 90% 以上)
  • ✅ 重复函数(结构相同,名称不同)
  • ✅ 提供重构建议以消除重复
🏗️ 架构分析
Analyze architecture of @my_module.py using #ohm-mcp.analyze_architecture

可检测:

  • ✅ 上帝对象(承担过多职责的类)
  • ✅ 违反 SOLID 原则
  • ✅ 循环依赖
  • ✅ 高耦合问题
✂️ 提取方法重构
Use #ohm-mcp.extract_method_ast to extract lines 45-60 from @handler.py into a new function called "process_request"

自动:

  • ✅ 检测所需参数
  • ✅ 识别返回值
  • ✅ 生成重构后的代码
  • ✅ 创建统一差异补丁
🔄 安全重命名符号
Use #ohm-mcp.rename_symbol to rename "old_function_name" to "new_function_name" in /path/to/project

功能:

  • ✅ 基于 AST(准确率 100%)
  • ✅ 检测命名冲突
  • ✅ 应用更改前显示所有出现位置
  • ✅ 更新文档字符串和注释
📊 类型覆盖率分析
Analyze type hints in @module.py using #ohm-mcp.analyze_type_hints

提供:

  • ✅ 覆盖率百分比和等级
  • ✅ 缺少类型提示的函数
  • ✅ 建议的类型注解
  • ✅ 按优先级排列的迁移计划
⚡ 性能优化
Use #ohm-mcp.analyze_performance on @slow_module.py

可检测:

  • ✅ 嵌套循环(O(n²) 复杂度)
  • ✅ 二次复杂度的列表操作
  • ✅ 重复函数调用(缺少缓存)
  • ✅ 可变默认参数
  • ✅ 低效的字符串拼接
🧪 自动生成测试
Generate tests for @calculator.py using #ohm-mcp.generate_characterization_tests

可创建:

  • ✅ 正常流程测试用例
  • ✅ 边界情况(None、零、负数、空值)
  • ✅ 可直接运行的 pytest 代码
  • ✅ 重构前保留当前行为
🎨 设计模式建议
Suggest design patterns for @legacy_code.py using #ohm-mcp.suggest_design_patterns

建议:

  • ✅ 为冗长的 if/elif 链使用策略模式
  • ✅ 为重复的对象创建使用工厂模式
  • ✅ 为回调地狱使用观察者模式
  • ✅ 为横切关注点使用装饰器模式
🔧 导入重构
Use #ohm-mcp.refactor_imports to update all files in /path/to/project from "old.module" to "new.module"

可处理:

  • ✅ 直接导入(import old.module)
  • ✅ From 导入(from old.module import X)
  • ✅ 子模块导入
  • ✅ 导入别名

🎯 核心工具(共 30 个)

📋 通用分析与规划(4 个工具)
工具用途输出
analyze_codebase全面分析代码问题 + 重构计划
propose_function_refactor规划函数级重构详细的重构方案
explain_refactoring解释重构模式教学指导
create_refactor_patch生成统一差异补丁补丁文件
🏗️ 架构与设计(4 个工具)
工具用途输出
analyze_architecture检测上帝对象、SOLID 原则违规详细的问题报告
suggest_design_patterns推荐模式(Strategy、Factory、Observer)模式建议 + 示例
analyze_tight_coupling查找耦合问题DI 建议
suggest_di_refactor生成 DI 代码重构前后对比
🔧 代码质量与重构(10 个工具)
工具用途主要功能
extract_method_ast将代码提取到函数中基于 AST,准确率达 100%
suggest_extractable_methods查找可提取的代码块内聚性评分
detect_dead_code查找未使用的代码5 种死代码类型
refactor_imports在整个项目范围内更新导入安全的模块重命名
refactor_single_file_imports重构单个文件中的导入专注于单个文件
analyze_wildcard_imports查找通配符导入提供显式替换方案
rename_symbol在整个代码库中重命名冲突检测
detect_code_duplicates查找违反 DRY 原则的代码完全重复 + 近似重复
extract_function_code提取单个函数代码代码提取工具
apply_function_refactor应用函数级重构直接修改代码

示例 - 提取方法:

# Input: Lines 45-60
result = extract_method_ast(code, 45, 60, "calculate_total")

# Output: Refactored code + patch + auto-detected params/returns
📊 类型安全与测试(5 个工具)
工具用途优势
analyze_type_hints检查类型覆盖率迁移计划
generate_type_stub创建 .pyi 文件渐进式类型标注
generate_characterization_tests自动生成测试安全重构
generate_test_for_function为单个函数生成测试定向测试
suggest_tests建议测试策略测试规划
⚡ 性能与优先级排序(2 个工具)
工具用途检测内容
analyze_performance查找性能瓶颈嵌套循环、可变默认值、O(n²)
prioritize_by_coverage基于风险进行优先级排序未覆盖的高风险代码
🤖 自动化执行与历史记录(4 个工具)
graph LR
    A[apply_refactoring] --> B{Dry Run?}
    B -->|Yes| C[Show Preview]
    B -->|No| D[Create Backup]
    D --> E[Apply Changes]
    E --> F{Run Tests}
    F -->|Pass| G[Success]
    F -->|Fail| H[Auto Rollback]
    H --> I[rollback_refactoring]
工具用途
apply_refactoring在安全检查后自动应用重构
rollback_refactoring回滚之前的重构
show_refactoring_history查看重构审计记录
cleanup_old_backups清理旧备份文件

功能:

  • ✅ 更改前自动备份
  • ✅ 验证测试执行
  • ✅ 失败时自动回滚
  • ✅ 完整的历史审计记录
  • ✅ 自动清理备份
📈 指标与报告(1 个工具)

generate_quality_report - 以 HTML/Markdown/JSON 格式生成综合仪表板

输出预览:

📊 Health Score: 85/100 (Good)
📁 Files: 47 | Lines: 12,450 | Tech Debt: 23 pts

📊 Type Coverage: 67%
🗑️ Dead Code: 8 imports, 12 variables, 3 functions
⚡ Performance: 4 nested loops, 2 mutable defaults
📋 Duplication: 3 exact, 5 near-duplicates

可视化仪表板:

  • 🎨 圆形健康度仪表
  • 📊 彩色编码指标(🟢🟡🔴)
  • 📈 支持趋势跟踪
  • 🔗 CI/CD 集成(JSON 导出)

💡 常见工作流

1️⃣ 安全重构
generate_characterization_tests → pytest → extract_method_ast → pytest
2️⃣ 消除重复
detect_code_duplicates → review suggestions → extract_method_ast
3️⃣ 类型迁移
analyze_type_hints → follow migration plan → generate_type_stub
4️⃣ 性能优化
analyze_performance → prioritize_by_coverage → apply fixes
5️⃣ 模块重构
refactor_imports(old="myapp.old", new="myapp.new") → review patches
6️⃣ 符号重命名
rename_symbol(old="calc", new="calculate", preview_only=True) → apply
7️⃣ 质量跟踪
generate_quality_report(format="html") → open dashboard → track trends

🎨 可视化示例

质量仪表板预览
┌─────────────────────────────────────────────┐
│  🔍 Code Quality Dashboard                  │
├─────────────────────────────────────────────┤
│                                             │
│       ╭─────────╮     📁 Overview           │
│       │   85    │     Files: 47             │
│       │  /100   │     Lines: 12,450         │
│       ╰─────────╯     Tech Debt: 23         │
│     Health Score                            │
│                                             │
├─────────────────────────────────────────────┤
│  📊 Type Coverage       ⚡ Performance       │
│  ████████░░ 67%         🔴 4 nested loops   │
│  120/180 typed          🟡 2 mutable args   │
├─────────────────────────────────────────────┤
│  🗑️ Dead Code           📋 Duplication      │
│  8 imports              3 exact             │
│  12 variables           5 near              │
│  3 functions                                │
└─────────────────────────────────────────────┘
符号重命名预览
# Before
- def calc(x, y):
-     return x + y
- result = calc(5, 3)

# After
+ def calculate_sum(x, y):
+     return x + y
+ result = calculate_sum(5, 3)

✅ 1 function renamed
✅ 3 call sites updated
✅ 0 conflicts detected

🧠 设计原则

原则实现方式
🧪 测试优先在重构前自动生成特征测试
↩️ 可逆每项更改 = 备份 + 回滚能力
🎯 AST 驱动100% 准确(不使用正则表达式)
📊 风险感知覆盖率 + 复杂度 = 优先级
🏛️ SOLID检测违规并提供具体修复方案
🚫 拒绝盲改分析 → 规划 → 验证

🔌 IDE 兼容性

🤖 任意 MCP 客户端
✅ 标准协议
✅ 轻松配置
✅ 适用于所有兼容 MCP 的 AI 助手

📊 对比

功能OHM MCP传统工具
准确性100% AST~70% 正则表达式
安全性自动备份/回滚手动
测试自动生成手动
自动化全面仅提供建议
仪表板HTML/JSON/MD文本日志
IDE 支持Copilot/Cursor/Cline有限

🎯 使用场景

👨‍💻 开发者
• 安全地重构遗留代码
• 查找死代码
• 优化性能
👥 团队
• 跟踪技术债务
• 强制执行标准
• 设计模式
🚀 CI/CD
• 质量门禁
• 趋势跟踪
• 阻止不合格的 PR

📈 指标

✅ 30 MCP Tools
✅ 40+ Static Checks
✅ 100% AST Accuracy
✅ Zero Regex Patterns
✅ Automated Execution with Rollback
✅ Beautiful Dashboards (HTML/JSON/MD)
✅ Universal MCP Compatibility
✅ Safe Refactoring with Auto-Backup

🛠️ 故障排除

MCP 连接问题
  1. 验证 Python 路径:

    which python  # Unix/Mac
    where python  # Windows
    
  2. 直接测试 MCP 服务:

    python -m ohm_mcp.server
    
  3. 检查日志:

    • VS Code:检查“输出”面板
    • Cursor:检查 Cursor 日志
    • Cline:检查 Cline 设置面板
  4. 常见问题:

    • ❌ command 中使用相对路径 → 使用绝对路径
    • ❌ 缺少虚拟环境 → 先激活 venv
    • ❌ Cline 的 cwd 错误 → 必须使用绝对路径

🤝 贡献

提交前运行:

./static_analyser.sh  # Runs ruff, mypy, pylint, flake8
pytest                 # All tests must pass

🙏 致谢

基于 Model Context Protocol • Python AST 构建 • 兼容 GitHub Copilot、Cursor IDE、Cline


用 ❤️ 打造,提升代码质量

⭐ 如果它能帮助你编写更整洁的代码,请为此仓库点星!

文档

评论

支持 Markdown

第一次接触 MCP?

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

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