面试问题生成器

基于FastAPI和Google Gemini LLM的MCP服务器,用于从职位描述生成五个面试问题,支持本地测试和Google Cloud Run部署。

  • by wevertonsc
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 wevertonsc/mcp_server

使用说明

README.md(文件名,通常表示这是一个Markdown格式的说明文件)

快速MCP服务器——面试问题生成器

这个项目是一个 基于FastAPI的MCP(模型控制协议)服务器 使用(的) Google Gemini 大型语言模型 生成 五个面试问题 根据给定的工作描述。 它可以在本地运行进行测试,或者被部署到 Google Cloud Run 使用 Terraform(中文可译为“土地塑造者”,但在技术语境中,通常直接使用“Terraform”这一英文名称,因为它已成为一个专有名词,代表用于基础设施即代码(IaC)的工具)。


特点/功能

  • 基于上述信息,翻译如下:用(某种技术或框架)构建的REST API FastAPI(中文可译为“快速API”或保持原名,根据上下文决定是否需要翻译)
  • 用途 Gemini 2.5 闪存版 通过模型(的方式) google-generativeai
  • /生成问题 用于生成面试问题的终端点
  • 可部署至 Google Cloud Run
  • 安全的 Gemini API密钥 储存在 密钥管理器
  • 使用代码管理基础设施 Terraform(译为“土地形成工具”或根据上下文可能译为“基础设施即代码工具”,但更常见的专业术语翻译为“Terraform(保持原名)”,因其已成为一个特定的软件名称,直接使用原名更为普遍)

项目结构

.
├── mcp_server.py             # FastAPI app source code
├── requirements.txt          # Python dependencies
├── docker-compose.yml        # Container build file
├── terraform/
│   ├── provider.tf
│   ├── variables.tf
│   ├── enable_apis.tf
│   ├── service_account.tf
│   ├── secret_manager.tf
│   ├── secret_iam.tf
│   ├── cloud_run.tf
│   ├── outputs.tf
│   └── terraform.tfvars.example
└── README.md

先决条件

确保您本地已安装以下内容:


本地设置与测试

1. 克隆仓库

git clone https://github.com/your-username/fast-mcp-server.git
cd fast-mcp-server

2. 创建并激活虚拟环境

python -m venv .venv
source .venv/bin/activate   # Linux / Mac
# or
.venv\Scripts\activate      # Windows

3. 安装依赖项

pip install --upgrade pip
pip install -r requirements.txt

4. 设置Gemini API密钥

export GEMINI_API_KEY="your_api_key_here"     # Linux / Mac
# or
setx GEMINI_API_KEY "your_api_key_here"       # Windows (PowerShell)

5. 运行应用程序

uvicorn mcp_server:app --reload

6. 测试终端节点

curl -X POST http://127.0.0.1:8000/generate_questions \
  -H "Content-Type: application/json" \
  -d '{"description": "We are looking for a data engineer with experience in Python, SQL, ETL pipelines, and cloud tools like GCP or AWS."}'

预期输出:

{
  "questions": [
    "1. How would you design an ETL pipeline using Python and SQL?",
    "2. What are the key differences between GCP and AWS for data workflows?",
    "3. How would you handle failures in a production data pipeline?",
    "4. What strategies do you use to optimize SQL queries for large datasets?",
    "5. Describe a scenario where you automated a data process using Python."
  ]
}

Docker 构建(可选)

1. 构建Docker镜像

docker build -t mcp-server:latest .

2. 在Docker中本地运行

docker run -p 8000:8000 -e GEMINI_API_KEY=$GEMINI_API_KEY mcp-server:latest

3. 测试

curl http://127.0.0.1:8000/health

使用 Terraform 部署到 Google Cloud Run

所有的Terraform配置文件都在 terraform/ 目录。

1. 验证并配置GCP(谷歌云平台)

gcloud auth login
gcloud config set project YOUR_PROJECT_ID
gcloud auth application-default login

2. 构建并推送Docker镜像到GCP(Google Cloud Platform)

IMAGE="gcr.io/YOUR_PROJECT_ID/mcp-server:latest"
docker build -t $IMAGE .
docker push $IMAGE

3. 配置Terraform变量

创建一个名为 terraform.tfvars 在……里面 terraform/ 文件夹:

project        = "your-gcp-project-id"
region         = "us-central1"
image          = "gcr.io/your-gcp-project-id/mcp-server:latest"
gemini_api_key = "YOUR_GEMINI_API_KEY"

(Do 不是 将此文件与实际的API密钥一起提交到版本控制系统中。)

4. 初始化 Terraform

cd terraform
terraform init

5. 部署基础设施

terraform apply

类型 yes 以确认。

Terraform 将:

  • 启用所需的GCP API
  • 创建一个Cloud Run服务
  • 将您的Gemini API密钥存储在Secret Manager中
  • 分配必要的IAM角色
  • 公开一个公共端点

6. 获取Cloud Run的URL

部署完成后,Terraform 将输出服务 URL:

Outputs:

cloud_run_url = "https://mcp-server-xxxxxx-uc.a.run.app"

7. 测试已部署的API

curl -X POST https://mcp-server-xxxxxx-uc.a.run.app/generate_questions \
  -H "Content-Type: application/json" \
  -d '{"description": "We are looking for a backend engineer with FastAPI and Google Cloud experience."}'

故障排除

  • 403 权限被拒绝: 检查Cloud Run服务账户的IAM角色(应具有 Secret Manager Secret Accessor)。
  • 500 内部服务器错误: 确保 GEMINI_API_KEY 已正确存储且服务可访问。
  • 无效的JSON错误: 确保你发送的是带有双引号的正确JSON,而不是单引号。

清理

要删除所有已部署的资源:

terraform destroy

Docker Compose

运行命令 PROD:

docker-compose up --build

运行命令 DEV:

docker-compose -f docker-compose.dev.yml up --build

停止命令:

docker-compose down

Uvicorn 服务器

Uvicorn 是一个用于 Python 的 ASGI(异步服务器网关接口)网络服务器实现。

运行MCP服务器

uvicorn mcp_server:app --reload