M
MCP Resume Bullet Rewriting
作者 @Xikesen
MCP server by Xikesen
创建于 3/23/2026
更新于 about 4 hours ago
README
Repository documentation and setup instructions
MCP Resume Assistant (FastMCP + LangGraph + Streamlit)
This project is a production-style MCP demo for resume bullet rewriting. It combines:
mcp-server: a FastMCP tool server (resume_bullet_tool)mcp-host: a FastAPI + LangGraph agent host that calls MCP tools and Geministreamlit: a lightweight web UI that calls the host API
The repository includes Dockerfiles and Kubernetes manifests for deployment on GKE.
1) Features
- Rewrite weak resume bullets into stronger, impact-oriented wording
- Return one best variant plus two alternative variants
- Score bullet quality (0-10) with specific improvement tips
- Encourage metrics and measurable outcomes without fabricating numbers
- Support role-targeted phrasing (for example, Data Engineer or Software Engineer)
- Provide end-to-end deployability with Docker and Kubernetes
2) Project Structure
.
├── mcp-server/ # FastMCP tool service (port 9000)
│ ├── mcp_tool_server.py
│ ├── requirements.txt
│ └── Dockerfile
├── mcp-host/ # LangGraph + FastAPI host (port 8000)
│ ├── src/
│ │ ├── agent/graph.py
│ │ └── api/apiserver.py
│ ├── requirements.txt
│ └── Dockerfile
├── streamlit/ # UI (port 8080 in container)
│ ├── app.py
│ ├── requirements.txt
│ └── Dockerfile
└── k8s/ # Kubernetes manifests (namespace: extraquiz)
3) How It Works
Request flow:
- User enters prompt in Streamlit
- Streamlit sends
POST /invoketomcp-host mcp-hostLangGraph agent calls MCP tools frommcp-server- Agent returns rewritten bullet suggestions + score info
- Streamlit displays JSON response
Internal service URLs in K8s:
mcp-server:http://mcp-server:9000/mcpmcp-host:http://mcp-host:8000
4) Prerequisites
- Python 3.10+ (3.11 recommended for host/server)
- Docker
- Google Cloud SDK (
gcloud) kubectl- A GCP project with GKE enabled
- A valid
GOOGLE_API_KEY(Google AI Studio / Gemini)
5) Local Run (Without Kubernetes)
4.1 Start MCP server
cd mcp-server
pip install -r requirements.txt
fastmcp run mcp_tool_server.py:mcp --transport http --host 0.0.0.0 --port 9000
4.2 Start MCP host
In a new terminal:
cd mcp-host
pip install -r requirements.txt
export GOOGLE_API_KEY="YOUR_KEY"
export MCP_TOOL_URL="http://localhost:9000/mcp"
export GEMINI_MODEL="gemini-3-flash-preview"
uvicorn api.apiserver:app --host 0.0.0.0 --port 8000 --app-dir src
Health check:
curl http://localhost:8000/ok
4.3 Start Streamlit UI
In a third terminal:
cd streamlit
pip install -r requirements.txt
export MCP_CLIENT_API_URL="http://localhost:8000"
streamlit run app.py --server.port 8080
Then open http://localhost:8080.
6) Deploy to GKE
5.1 Create cluster
gcloud container clusters create extraquiz \
--machine-type e2-standard-4 \
--num-nodes 2 \
--zone us-central1-a \
--cluster-version latest
5.2 Authenticate
gcloud auth login
gcloud auth configure-docker
5.3 Build and push images
Update image registry/project if needed, then run:
gcloud builds submit ./mcp-server --tag gcr.io/mcppp/mcp-server:1.0
gcloud builds submit ./mcp-host --tag gcr.io/mcppp/mcp-host:1.0
gcloud builds submit ./streamlit --tag gcr.io/mcppp/streamlit:1.0
5.4 Create namespace and secret
kubectl apply -f k8s/namespace.yaml
Before applying k8s/secrets-template.yaml, replace GOOGLE_API_KEY with your real key:
kubectl apply -f k8s/secrets-template.yaml
5.5 Deploy all workloads
kubectl apply -f k8s/mcp-server-deployment.yaml
kubectl apply -f k8s/mcp-server-service.yaml
kubectl apply -f k8s/mcp-host-deployment.yaml
kubectl apply -f k8s/mcp-host-service.yaml
kubectl apply -f k8s/streamlit-deployment.yaml
kubectl apply -f k8s/streamlit-service.yaml
5.6 Verify
kubectl get pods -n extraquiz
kubectl get svc -n extraquiz
When streamlit service gets an external IP (LoadBalancer), open it in browser.
7) API Reference
Host health endpoint
GET /ok- Response:
{"status":"ok"}
Host invoke endpoint
POST /invoke- Request body:
{"query":"Rewrite this resume bullet for a Data Engineer role: worked on ETL pipelines"}
- Response body:
{"output":"...agent final response..."}
8) Key Environment Variables
mcp-host
GOOGLE_API_KEY(required)MCP_TOOL_URL(default:http://localhost:9000/mcp)GEMINI_MODEL(default:gemini-3-flash-preview)
streamlit
MCP_CLIENT_API_URL(default:http://localhost:8000)
9) Notes
- The tool server uses a heuristic scoring approach for bullet quality.
- If your bullet has no metrics, the system will encourage placeholders instead of fabricating numbers.
- For production use, consider adding authentication, rate limiting, centralized logging, and CI/CD.
快速设置
此服务器的安装指南
安装包 (如果需要)
uvx mcp-resume-bullet-rewriting
Cursor 配置 (mcp.json)
{
"mcpServers": {
"xikesen-mcp-resume-bullet-rewriting": {
"command": "uvx",
"args": [
"mcp-resume-bullet-rewriting"
]
}
}
}