🤖 数字孪生MCP服务器
一款基于人工智能的数字双胞胎助手,使用增强检索生成(RAG)来回答有关专业档案的问题。
   
📋 概述
该项目实现了 模型上下文协议(MCP)服务器 它充当专业档案的数字双胞胎助手。它利用 检索增强生成(RAG) 提供关于一个人的经验、技能、项目和资格的准确、情境感知的回应。
主要特点
- 🔍 语义搜索:使用Upstash Vector进行基于矢量的检索,以实现准确的信息检索
- 🧠 RAG架构:将检索与LLM生成相结合,以获得可靠的响应
- 🎯 工作匹配:分析招聘信息并匹配资格
- 💬 互动面试:用特定工作的问题模拟技术面试场景
- 📊 分析仪表板:使用持久存储跨多个会话跟踪面试绩效
- 🗄️ 数据持久化:面试结果存储在Uptash Redis中,用于跨会话分析
- 🌐 双界面:既可作为MCP服务器(用于VS Code/Claude Desktop)又可作为web UI
🏗️ 建筑
┌─────────────────────────────────────────────────────────────┐
│ User Query / Interview │
└────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ MCP Server / Web UI │
│ (Next.js 15 + TypeScript) │
│ • Interview Landing Page │
│ • Analytics Dashboard │
└────────────┬────────────────────────────┬───────────────────┘
│ │
▼ ▼
┌────────────────────────────┐ ┌────────────────────────────┐
│ Vector Search (Upstash) │ │ Analytics DB (Redis) │
│ • Semantic search │ │ • Interview results │
│ • Profile data retrieval │ │ • Performance tracking │
│ • Top-K retrieval (k=5) │ │ • Trend calculation │
│ • Metadata filtering │ │ • Historic data │
└────────────┬───────────────┘ └────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ LLM Generation (Groq/Llama 3.3 70B) │
│ • Context-aware response │
│ • Grounded in retrieved data │
│ • Professional interview tone │
│ • STAR format responses │
└────────────┬────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Response + Assessment + Analytics │
│ • Interview answers │
│ • Performance scores │
│ • Recommendations │
│ • Stored for future analysis │
└─────────────────────────────────────────────────────────────┘🛠️ 技术栈
| 类别 | 技术 |
|---|---|
| 框架 | Next.js 15.5.3 |
| 语言 | TypeScript(严格模式) |
| 向量数据库 | 上升矢量 |
| 分析数据库 | 升级Redis |
| LLM | Groq API(火焰3.3 70b) |
| 用户界面 | ShadCN UI+顺风CSS |
| 图表 | Recharts(数据可视化) |
| 协议 | 模型上下文协议(MCP) |
| 托管 | Vercel(生产就绪) |
🚀 快速开始
先决条件
- Node.js 18+
- pnpm包管理器
- Python 3.8+(用于脚本)
- Uptash Vector帐户
- Groq API密钥
安装
- 克隆存储库
git clone https://github.com/YOUR-USERNAME/digital-twin-mcp-portfolio.git
cd digital-twin-mcp-portfolio- 安装依赖项
cd mcp-server
pnpm install- 设置环境变量
创建 .env.local 在 mcp-server 目录:
UPSTASH_VECTOR_REST_URL=your_upstash_vector_url
UPSTASH_VECTOR_REST_TOKEN=your_upstash_vector_token
UPSTASH_REDIS_REST_URL=your_upstash_redis_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_token
GROQ_API_KEY=your_groq_api_key- 嵌入配置文件数据
cd ../scripts
python embed_digitaltwin.py- 启动服务器
cd ../mcp-server
pnpm dev访问 http://localhost:3000 查看web UI。
📱 使用模式
1.MCP服务器模式(VS代码代理)
在VS Code设置或Claude Desktop中配置:
{
"digital-twin": {
"command": "node",
"args": [
"C:/path/to/mcp-server/.next/standalone/server.js"
],
"env": {
"UPSTASH_VECTOR_REST_URL": "your_url",
"UPSTASH_VECTOR_REST_TOKEN": "your_token",
"GROQ_API_KEY": "your_key"
}
}
}然后直接从IDE查询数字孪生模型:
- “我最近的项目是什么?”
- “我有React的经验吗?”
- “我的教育背景是什么?”
2.Web UI模式
访问交互式web界面 http://localhost:3000:
- 用于提问的聊天界面
- 职位发布分析
- 技术面试模拟
3.API模式
对MCP端点进行直接的API调用:
const response = await fetch('/api/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: "What are my Python skills?"
})
});🎯 用例
1. 职位申请定制
Query: "How do my skills match this job posting?"
→ Analyzes job requirements against your profile
→ Highlights relevant experience
→ Suggests emphasis areas for cover letter2. 面试准备
Query: "Prepare me for questions about my React experience"
→ Retrieves all React-related projects
→ Generates interview talking points
→ Suggests technical questions you might face3. 投资组合概要
Query: "Summarize my experience for a senior developer role"
→ Extracts relevant experiences
→ Highlights leadership and technical skills
→ Provides concise professional summary4. 技术面试模拟 🆕
Feature: Job Description Paste Interface
→ User pastes job posting directly into web UI
→ System analyzes requirements and generates role-specific questions
→ Digital Twin conducts realistic interview using RAG
→ Provides comprehensive performance assessment with scores
Workflow:
1. Paste job description (minimum 50 characters)
2. AI generates 5 job-specific interview questions
3. Digital Twin answers questions based on professional profile
4. Receive detailed assessment:
- Overall score (0-100)
- Category scores (Technical, Experience, Communication, Cultural Fit)
- Strengths and areas for improvement
- Hiring recommendation (Pass/Conditional/Fail)
- Full transcript available for review5. 面试分析仪表板 🆕
Feature: Performance Tracking Across Multiple Interviews
→ Store all interview results in Upstash Redis
→ Track performance trends over time
→ Visualize category-specific improvements
→ Generate insights and recommendations
Analytics Include:
- Total interviews conducted
- Average score and success rate
- Performance trends (line chart)
- Category breakdown (Technical, Experience, Communication, Cultural Fit)
- Recent interview history (last 5 interviews)
- Common strengths and improvement areas
- AI-generated performance insights
- Export capability (PDF reports)📂 项目结构
digital-twin-mcp-portfolio/
├── mcp-server/ # Next.js MCP server
│ ├── app/
│ │ ├── api/mcp/ # MCP endpoint
│ │ ├── interview/ # Interview feature
│ │ │ ├── components/ # Landing page, analytics UI
│ │ │ └── page.tsx # Interview orchestration
│ │ ├── actions/ # Server actions
│ │ │ ├── interview-analytics.ts # Analytics CRUD operations
│ │ │ └── load-job-postings.ts # Job posting handling
│ │ └── components/ # Shared UI components (shadcn/ui)
│ └── lib/
│ ├── digital-twin.ts # Core RAG logic
│ └── redis.ts # Redis client for analytics
├── scripts/ # Data processing scripts
│ ├── embed_digitaltwin.py # Profile data embedding
│ └── embed_job_postings.py # Job posting processing
├── data/ # Profile data
│ └── digitaltwin_clean.json # Professional profile
├── job-postings/ # Sample job descriptions
└── docs/ # Documentation
├── design.md # Technical design
├── prd.md # Product requirements
└── VECTOR_SETUP_GUIDE.md # Setup instructions🔬 运作原理
RAG管道(访谈和询问回复)
- 数据准备
- 以JSON格式存储的专业配置文件 - 分为语义部分(教育、经验、项目、技能) - 使用Upstash的文本嵌入模型嵌入的每个块 - 存储在带有元数据标签的Uptash Vector中
- 查询处理
- 用户查询或面试问题转换为向量嵌入 - 语义搜索检索前5个最相关的块 - 包括元数据(类别、上下文),以便更好地过滤 - 按相关性得分排名的结果
- 响应生成
- 检索到的上下文传递给LLM(Llama 3.3 70B,通过Groq) - 在检索到的数据中明确指示地面响应 - 实际接地响应的温度设置为0.3 - 专业、准确和情境感知的面试答案 - 行为问题的STAR格式
- 评估和储存
- 对多个类别的面试回复进行评估 - 计算绩效得分(技术、经验、沟通、文化契合度) - 结果存储在Uptash Redis中用于分析 - 生成招聘推荐(通过/有条件/失败)
分析管道
- 数据收集
- 每个面试结果保存到Uptash Redis - 存储时间戳、分数、工作详细信息和完整成绩单 - 为高效检索和聚合而建立索引
- 趋势计算
- 从Redis检索的历史数据 - 所有面试的平均得分 - 随着时间的推移确定的性能趋势 - 按决策类型计算的成功率
- 可视化
- 显示分数进展的折线图 - 带有进度条的类别细分 - 数据表中的最近面试历史 - 基于模式的人工智能生成的见解
矢量搜索配置
const results = await index.query({
data: query,
topK: 5, // Increased for better context
includeMetadata: true
});分析存储架构
interface InterviewResult {
id: string
timestamp: number
jobTitle: string
overallScore: number
categoryScores: {
technical: number
experience: number
communication: number
culturalFit: number
}
strengths: string[]
improvements: string[]
decision: 'pass' | 'conditional' | 'fail'
transcript: Array
}👤 作者和联系人
Archana Mukunthamani - *主要开发人员和唯一贡献者*
- 🎯 完整的系统架构和实施
- 🧠 与Upstash Vector和Groq LLM合作开发RAG管道
- 🎤 技术面试模拟器功能
- 🌐 Web UI设计和开发
- 🚀 Vercel部署和生产配置
- 📊 94%的提交和整个核心功能
联系我:
- 💼 领英: linkedin.com/in/archana-mukunthamani
- 🐙 github: @穆孔塔马尼大教堂
致谢
这个项目最初是作为一个团队项目开始的。特别感谢:
- 希曼尼1201 -初始存储库设置和README模板
- 薇薇安 -初始AGENTS.md文档文件
*注:在初始设置后,该项目完全由Archana Mukunthamani设计、开发和完成。*
______________________________________________________________________
建于❤️ 通过Archana Mukunthamani
🎓 学习成果
该项目展示了在以下方面的熟练程度:
- ✅ 构建生产就绪的MCP服务器
- ✅ 实施RAG架构
- ✅ 使用矢量数据库
- ✅ Next.js 15个服务器操作和API路由
- ✅ TypeScript严格类型
- ✅ 使用ShadCN进行UI/UX设计
- ✅ LLM集成(Groq API)
- ✅ 环境管理和部署
📊 性能指标
- 响应时间:约2-3秒(包括LLM)
- 搜索准确性:Top-K检索与语义匹配
- 上下文窗口:针对3个相关块进行了优化
- 错误处理:全面的回退和验证
🚢 部署
部署到Vercel
- 将代码推送到GitHub
- Vercel的进口项目
- 设置环境变量:
- UPSTASH_VECTOR_REST_URL - UPSTASH_VECTOR_REST_TOKEN - GROQ_API_KEY
- 部署!
该应用程序配置了 vercel.json 为了优化Next.js 15的部署。
🤝 贡献
这是一个投资组合项目,但欢迎提出建议!请随意:
- 漏洞或改进的未决问题
- 提交拉取请求
- 分享反馈
📄 许可证
麻省理工学院许可证-请随时将此项目用作您自己的数字双胞胎助手的参考或起点。
致谢
- 参考架构来自 Roll Dice MCP服务器
- RAG实施的灵感来自 数字孪生Python参考
- 作为Ausbiz Consulting实习项目的一部分而建立
______________________________________________________________________
⭐ 如果你觉得这个项目有用,请考虑给它一颗星!
