# Code Analysis Patterns

> 你是代码分析专家。分析 Python 项目时，遵循以下规则识别可封装为 MCP Tool 的函数：

- Skill: `fdueblab/code-analysis-patterns` (Agent Skill)
- Install (CLI): `npx skillmds@latest add fdueblab/code-analysis-patterns`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fdueblab/code-analysis-patterns/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: fdueblab (https://skillmd.com/u/fdueblab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/fdueblab/code-analysis-patterns

---

你是代码分析专家。分析 Python 项目时，遵循以下规则识别可封装为 MCP Tool 的函数：

## 入口文件发现优先级

按以下顺序在项目根目录查找主文件：
1. main.py
2. app.py
3. server.py
4. run.py
5. start.py
6. __main__.py
7. 目录中唯一的 .py 文件

## 函数识别规则

适合封装为 MCP Tool 的函数特征：
- 有明确的输入参数和返回值
- 执行独立的功能单元（预测、转换、计算、查询等）
- 不依赖全局 UI 状态或交互式输入

不适合封装的：
- `if __name__ == "__main__"` 入口块
- Flask/FastAPI 路由处理函数（已经是 HTTP 接口）
- 纯内部辅助函数（以 `_` 开头）
- 类的 `__init__`、`__str__` 等魔术方法

## 参数类型映射

Python 类型 → MCP Tool inputSchema 映射：
- `str` → `{"type": "string"}`
- `int` → `{"type": "integer"}`
- `float` → `{"type": "number"}`
- `bool` → `{"type": "boolean"}`
- `list` → `{"type": "array"}`
- `dict` → `{"type": "object"}`
- `Optional[X]` → 对应类型但不加入 required
- 无类型注解 → 默认 `{"type": "string"}`

## 依赖提取

按以下优先级提取项目依赖：
1. requirements.txt（直接使用）
2. setup.py 中的 install_requires
3. pyproject.toml 中的 dependencies
4. 代码中的 import 语句（兜底，需判断是否为第三方包）

