内容
# leetcode-helper
一个MCP服务器,在Claude Desktop或Claude Code中提供结构化、AI驱动的DSA指导 - 方法分析、提示、复杂度分析等,而不会泄露解决方案。
---
## 工具概览
| 工具 | 输入 | 返回内容 |
|---|---|---|
| `获取方法` | 问题 | 模式、步骤、时间复杂度/空间复杂度 |
| `获取提示` | 问题 + 卡住的地方 | 提示,不剧透 |
| `获取复杂度` | 问题 + 代码 | 每个代码块的时间复杂度/空间复杂度分析 |
| `发布解决方案` | 问题 + 已接受的代码 | 可复制的讨论帖 |
| `相似问题` | 问题 | 3-5个相同模式的问题 |
| `优化解决方案` | 问题 + 已工作的代码 | 优化方向,非解决方案 |
---
## 安装
**前提条件:** Node.js 18+,一个`ANTHROPIC_API_KEY`
```bash
git clone https://github.com/Navoren/leetcode-helper.git
cd leetcode-helper
npm install
npm run build
```
---
## 连接到Claude Code
添加到 `.claude/settings.json` (项目或全局):
```json
{
"mcpServers": {
"leetcode-helper": {
"command": "node",
"args": ["d:/leetcode-helper/dist/index.js"],
"env": {
"ANTHROPIC_API_KEY": "your-key-here"
}
}
}
}
```
## 连接到Claude Desktop
添加到 `claude_desktop_config.json`:
```json
{
"mcpServers": {
"leetcode-helper": {
"command": "node",
"args": ["/absolute/path/to/leetcode-helper/dist/index.js"],
"env": {
"ANTHROPIC_API_KEY": "your-key-here"
}
}
}
}
```
---
## 示例用法
**获取方法:**
> "使用 get_approach:给定一个整数数组,返回两个数字之和等于目标值的索引。"
**获取提示:**
> "使用 get_hint - 问题:两数之和,卡住的地方:我的嵌套循环有效但太慢"
**生成讨论帖:**
> "使用 post_solution 以及我接受的 Python 解决方案,适用于两数之和"
**优化解决方案:**
> "使用 upsolve - 这是我的 O(n²) 解决方案,帮助我思考更好的解决方案"
---
## 项目结构
```
leetcode-mcp/
├── src/
│ ├── index.ts # 入口点
│ ├── server.ts # McpServer 设置
│ ├── lib/
│ │ └── claude.ts # Anthropic API 客户端
│ └── tools/
│ ├── registry.ts # 注册所有工具(每个工具一行)
│ ├── get_approach.ts
│ ├── get_hint.ts
│ ├── get_complexity.ts
│ ├── post_solution.ts
│ ├── similar_questions.ts
│ └── upsolve.ts
├── dist/ # 编译输出
├── functional_requirement.md
├── technical_document.md
└── CLAUDE.md
```
---
## 添加新工具
1. 创建 `src/tools/your_tool.ts` - 导出 `name`, `description`, `schema` (Zod), `handler`
2. 在 `src/tools/registry.ts` 中添加一个导入和一个条目
3. 运行 `npm run build`
无需更改 `server.ts`, `index.ts` 或 `claude.ts`.
---
## 技术栈
| 层 | 选择 |
|---|---|
| 运行环境 | Node.js (ESM) |
| 语言 | TypeScript 5 |
| MCP SDK | `@modelcontextprotocol/sdk` |
| 模式验证 | Zod |
| LLM | Anthropic `claude-sonnet-4-6` |
| 传输 | stdio |