内容
# mcp-interview-prep
一款模拟罗扎·鲁斯基(Roza Russkikh)的AI克隆人,能够回答面试式问题 — 简历事实、技能、联系信息和STAR格式的行为情况 — 作为动手练习MCP(多轮对话平台)和作品集的展示。
## 工作原理
一个Python MCP服务器(`server.py`)将罗扎的数据 — `personal.json`、`resume.json`、`situations.json` — 暴露为MCP资源、工具和提示。最终,一个FastAPI后端作为MCP客户端:它首先尝试确定性关键词匹配(例如“冲突” → `get_situation("冲突")`,直接从JSON格式化,无需大型语言模型),只有在无法自信匹配时才会fallback到Gemini进行开放式问题。Next.js + Tailwind聊天界面通过HTTP与FastAPI通信 — 它永远不会直接与MCP通信。
## 技术栈
- **MCP服务器**: Python,`mcp[cli]`
- **后端**(第二阶段):Python,FastAPI — MCP客户端,也调用Gemini作为fallback
- **大型语言模型**:Gemini via `google-generativeai`
- **前端**(第二阶段):Next.js + Tailwind
- **托管**(第二阶段):Fly.io(后端),Vercel(前端)
## 状态
**第一阶段**(当前):构建MCP服务器并直接使用Claude Code测试 — 无需自定义客户端,Claude Code已经是一个MCP主机。
**第二阶段**(后续):构建FastAPI后端作为MCP客户端 + Gemini fallback,然后是Next.js前端,最后部署。
参见 [PLAN.md](PLAN.md) 获取完整设计细节。
## MCP服务器
**资源**
- `personal://info` — 值,任务,背景,语气
- `situations://all` — STAR格式的行为故事
- `resume://full` — 经验,教育,技能
**工具**
- `get_situation(类别: 字符串)` — 按类别获取行为故事(冲突,领导力,失败,模糊)
- `get_experience(公司或职称: 字符串)` — 获取某一条工作经历
- `get_skill(技能: 字符串)` — 获取技能类别 + 支持的经验亮点
- `get_contact()` — 获取邮箱,领英,GitHub
**提示**
- `find_gaps()` — 报告哪些标准面试能力还没有对应的故事
- `answer_as_roza(问题: 字符串)` — 以罗扎的语气/口吻回答
## 本地运行
```bash
uv run mcp dev server.py # MCP 检验
```