InterviewDojo
Integrates with Amazon Bedrock and Alexa+ to provide spoken mock technical interviews, including resume parsing, interview question generation, answer scoring, and session reporting.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@InterviewDojoParse my resume and start a mock interview for a senior backend role."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
InterviewDojo 🥋🎙️
Self-Hosted Model Context Protocol (MCP) Server for Alexa+ Spoken Mock Technical Interviews powered by Amazon Bedrock.
Build, Ship, Shape: Amazon Developer Hackathon (Alexa+ Track + AWS Builder Mini Challenge)
🚀 What it is
InterviewDojo is a production-grade, self-hosted Model Context Protocol (MCP) server (MCP Spec 2025-11-25+, Streamable HTTP / SSE transport) designed to let Alexa+ run spoken mock technical interviews for software engineering candidates.
Instead of asking generic algorithmic questions, InterviewDojo analyzes the candidate's own resume (projects, skills, experience) alongside a target job description. It generates targeted interview questions focusing ~60% on candidate projects, ~40% on skill gap areas, and exactly one STAR-method behavioral question. Answers are scored using Amazon Bar Raiser rubrics via Amazon Bedrock Converse API.
The project includes an Alexa+ Voice Simulator React web app (/web) that interacts directly with the server via the official @modelcontextprotocol/sdk client over HTTP/SSE.
Related MCP server: interview-mcp-server
📐 Architecture
graph TD
subgraph Client Layer
A["Alexa+ Spoken Agent / Simulator Web App"]
end
subgraph Transport Layer
B["MCP Client (@modelcontextprotocol/sdk)"]
C["Streamable HTTP / SSE Transport (/mcp)"]
end
subgraph InterviewDojo MCP Server
D["Express Server (Node.js + TypeScript)"]
E["MCP Server Core & Tool Registry"]
F["parse_resume"]
G["start_interview"]
H["next_question"]
I["score_answer"]
J["session_report"]
end
subgraph AWS & Data Persistence Layer
K["Amazon Bedrock Converse API (Claude 3.5 Sonnet)"]
L[("MongoDB / In-Memory Session Store")]
end
A <--> B
B <-->|JSON-RPC over SSE| C
C <--> D
D --> E
E --> F & G & H & I & J
F & G & I & J <-->|Bedrock SDK| K
G & H & I & J <-->|Mongoose| L📦 Registered MCP Tools
All tools validate inputs with zod, return structured content alongside text summaries, and handle errors cleanly:
parse_resume{ resumeText: string }Extracts candidate skills, project details, work highlights, and education.
start_interview{ resumeText, jobDescription, role, difficulty, numQuestions }Generates interview plan, question mix, and initializes session.
next_question{ sessionId }Retrieves next question in sequence.
score_answer{ sessionId, answer }Evaluates spoken/typed answer using Bedrock Bar Raiser rubric (0-10 scores for correctness, depth, clarity, spoken feedback, follow-up, ideal hint).
session_report{ sessionId }Generates overall score breakdown, strengths, weak topics, and concrete 3-5 item practice plan.
🛠️ Prerequisites
Node.js: v20.0.0 or higher
AWS Bedrock Access: Access to
us.anthropic.claude-3-5-sonnet-20241022-v2:0(or setBEDROCK_MODEL_ID) inAWS_REGION(us-east-1).MongoDB (Optional):
MONGODB_URIconnection string (falls back to in-memory Map store if omitted).
⚙️ Environment Configuration
Copy .env.example to .env inside /server:
cp .env.example server/.envPORT=3001
NODE_ENV=development
ALLOWED_ORIGIN=http://localhost:5173
# AWS Bedrock Configuration
AWS_REGION=us-east-1
BEDROCK_MODEL_ID=us.anthropic.claude-3-5-sonnet-20241022-v2:0
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
# Mock LLM Flag (Set to true for test mode without AWS credentials)
MOCK_LLM=false
# MongoDB Connection String (Optional fallback to in-memory)
MONGODB_URI=mongodb://localhost:27017/interviewdojo🏃 Run Commands
1. Install Dependencies
# Install root, server, and web app packages
npm run install:all # or cd server && npm install && cd ../web && npm install2. Run Server & Web App Concurrently
npm run devExpress MCP Server:
http://localhost:3001/mcpHealth Endpoint:
http://localhost:3001/healthAlexa+ Simulator Web App:
http://localhost:5173
3. Run Automated Seed Script (2-Minute Demo Run)
npm run seed4. Run Vitest Unit & MCP Integration Tests
npm test🔍 How to Test with MCP Inspector
You can test InterviewDojo with the official Anthropic / Model Context Protocol Inspector tool:
# 1. Start InterviewDojo server
npm run dev:server
# 2. In another terminal, run MCP Inspector pointing to the SSE endpoint
npx @modelcontextprotocol/inspector http://localhost:3001/mcpOpen the Inspector UI in your browser to inspect tools, input schemas, and invoke parse_resume or start_interview interactively.
🎙️ How Alexa+ Connects to /mcp
Alexa+ connects to InterviewDojo over the standard Streamable HTTP transport:
Alexa+ establishes an SSE stream by making a
GETrequest tohttp://<your-server-domain>/mcp.The server responds with an SSE event containing the session endpoint URL (
/mcp/messages?sessionId=...).Alexa+ sends JSON-RPC tool invocation requests (
tools/call) viaPOST /mcp/messages?sessionId=....Spoken text responses are returned in
structuredContentand spoken aloud by Alexa+.
⚠️ Known Limitations
Browser Web Speech API Support: Speech recognition relies on browser support (
SpeechRecognition/webkitSpeechRecognition). A typed-answer fallback is provided for browsers without speech recognition support.Audio Streaming: Audio is converted text-to-speech client-side via Web Speech API; native binary PCM streaming over SSE is reserved for future iterations.
📜 Pre-existing vs Built During the Hackathon
Note for Hackathon Judges & Compliance Reviewers:
Pre-existing Code: None. (Built completely fresh from scratch for this hackathon).
Built During Hackathon:
Entire TypeScript MCP Server with Streamable HTTP transport (
/mcp).Amazon Bedrock Converse API integration with JSON validation & retry logic.
All 5 MCP tools (
parse_resume,start_interview,next_question,score_answer,session_report).MongoDB + in-memory fallback storage layer.
React + Vite + Tailwind CSS Alexa+ Voice Simulator web application (
/web).Vitest test suite and seed script.
📄 License
MIT License. See LICENSE file for details.
Related MCP Connectors
AI interview practice and career preparation with user-controlled guidance.
Run AI interviews, simulated personas and coaching sessions on JobMojito.
AI resume triage for recruiters. Query your candidate pool from Claude or ChatGPT.
AI voice interviewer: create roles, screen CVs, schedule interviews, read scored reports.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude to intelligently query and analyze your resume using RAG technology. Supports skill matching against job requirements and answering questions about your professional background from locally stored resume files.MIT
- FlicenseNot gradedqualityDmaintenanceIntelligent interview assistant that parses resumes, generates interview questions, records conversations, and produces evaluation reports for technical interviews.9-

four-leaf-mcpofficial
AlicenseNot gradedqualityCmaintenanceJob search assistant and interview prep inside any ai tool via MCP or public skill. Every tool you'll need for your job search in one product.9 npm7MIT- AlicenseAqualityDmaintenanceEnables interview preparation by analyzing resumes and job descriptions, generating role-specific questions, and evaluating answers using MCP tools integrated with an OpenAI agent.5MIT