MCP Resume & Email Assistant
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., "@MCP Resume & Email AssistantParse my resume and send a summary to hiring@company.com"
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.
MCP Resume & Email Assistant
This is a Model Context Protocol (MCP) server that provides the following features:
Resume Parsing: Parse and extract information from your resume to answer questions about your professional experience.
Email Notifications: Send email notifications with customizable recipient, subject, and body.
Next.js Frontend: A beautiful, responsive UI for interacting with the MCP server.
GitHub Pages Deployment: The frontend is configured for easy deployment to GitHub Pages.
Live Demo
Check out the live demo at: https://ThambimuthuAnush24.github.io/mcp-server
Related MCP server: CV Email MCP Server
Project Structure
mcp-server/
├── src/
│ ├── index.ts # Main MCP server implementation
│ ├── localClient.ts # Test client for local development
│ ├── services/
│ │ ├── emailService.ts # Email service implementation
│ │ └── resumeService.ts # Resume parsing service
├── frontend/ # Next.js frontend application
│ ├── src/
│ │ ├── app/ # Next.js app directory
│ │ │ ├── api/ # API routes
│ │ │ ├── layout.tsx # Main layout
│ │ │ └── page.tsx # Main page
│ │ ├── components/ # React components
│ │ └── utils/ # Utility functions
├── .vscode/
│ └── mcp.json # VS Code MCP integration
├── .env # Environment variables (not committed)
├── package.json # Project dependencies
└── tsconfig.json # TypeScript configurationFeatures
📄 Resume Parser: Upload and analyze resumes with intelligent extraction
📧 Email Sender: Create and send professional emails with ease
💬 AI Assistant: Get intelligent answers to questions about your resume and career
🎨 Beautiful UI: Modern glass-morphism design with animations and responsive layout
🚀 GitHub Pages Deployment: Easy deployment to GitHub Pages
Technologies Used
Next.js 14: For the frontend with static export support
TypeScript: For type-safe code
Tailwind CSS: For beautiful, responsive styling
Model Context Protocol (MCP): For AI-powered features
GitHub Pages: For deployment
Prerequisites
Node.js v18 or higher
npm or yarn
Git
Setup Instructions
For Backend Development
Clone this repository
Install dependencies:
npm installCreate a
.envfile in the root directory with your email configurationBuild the project:
npm run buildStart the server:
npm start
For Frontend Development
Navigate to the frontend directory:
cd frontendInstall dependencies:
npm installStart the development server:
npm run devOpen http://localhost:3000 in your browser
GitHub Pages Deployment
This project is configured for deployment on GitHub Pages. Follow these steps to deploy:
Make sure you've pushed your code to GitHub:
git add . git commit -m "Ready for GitHub Pages deployment" git push origin mainRun the deployment script:
cd frontend npm run deploy
This will:
Build the Next.js application
Create the necessary
.nojekyllfileDeploy to the gh-pages branch
Make your site available at https://yourusername.github.io/mcp-server
GitHub Pages Mode
When running on GitHub Pages, the application automatically detects the environment and uses mock data instead of trying to call backend APIs that wouldn't be available in a static deployment.
MCP Tools Provided
parseResume
Parses a resume from text or PDF
Parameters:
text(optional): Plain text resume contentfileContent(optional): Base64-encoded PDF contentfileName(optional): Name of the PDF file
queryResume
Queries parsed resume data
Parameters:
query: The question to ask about the resumecontext(optional): Previous conversation history
sendEmail
Sends an email
Parameters:
to: Recipient email addresssubject: Email subjectbody: Email content
Local Development
Local Testing
The backend includes a local client for testing MCP tools:
npm run test:localDebugging
For debugging the MCP server:
Run in development mode:
npm run devCheck the console logs for any errors.
For frontend debugging, use the browser's developer tools.
License
MIT
Available Tools
3 toolsparseResumeParse ResumeC
Parse a resume file to extract information
| Name | Required | Description | Default |
|---|---|---|---|
| resumeText | Yes | The text content of the resume or a base64 encoded PDF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It fails to disclose behavior on malformed input, output format, error handling, or required permissions. Minimal information provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence. It is appropriately concise for a simple tool, though it could be slightly expanded without losing focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should clarify what 'extract information' returns (e.g., structured data). It fails to cover return values, error cases, or the full context of operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already describes 'resumeText' as text or base64 PDF. The description adds no additional meaning beyond the schema, meeting baseline but not exceeding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Parse a resume file') and purpose ('extract information'). It is specific enough to distinguish from 'sendEmail', though it doesn't explicitly contrast with 'queryResume'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'queryResume'. No prerequisites, contexts, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queryResumeQuery ResumeC
Ask a question about the resume content
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | The question to ask about the resume |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden for behavioral disclosure. It only states 'ask a question' without revealing any behavioral traits, such as whether it requires prior state, how it handles ambiguous queries, or what the response format is. This is insufficient for an agent to predict tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence), but it fails to include necessary details about usage or behavior. While front-loaded, it does not fully earn its place because it adds minimal value over the tool name. A more informative description would be preferable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and no output schema, the description could be more complete by explaining the expected source of resume content (e.g., from previously parsed data) or how to interpret responses. The current description leaves ambiguity, especially in relation to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the 'question' parameter has a description), so the baseline is 3. The tool description adds no new meaning beyond the schema; it essentially repeats the parameter description. However, it is not misleading and aligns with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Ask a question about the resume content' specifies a clear verb+resource pairing. It distinguishes from sibling tools, as 'parseResume' suggests parsing/reading the resume file, and 'sendEmail' is unrelated. However, it lacks detail about what 'the resume content' refers to (e.g., from a previously parsed resume).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided about when to use this tool versus alternatives. It does not mention prerequisites (e.g., must first parse a resume) or when it is not appropriate to use. The description only states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendEmailSend EmailB
Send an email notification with customizable recipient, subject, and body
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address | |
| body | Yes | Email body content | |
| subject | Yes | Email subject |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It only says 'Send an email notification' without disclosing side effects (e.g., non-idempotent), potential failures, rate limits, or whether it actually dispatches or queues the email. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 12 words, but it lacks detail. It is concise but under-informative; a slightly longer description with key constraints would be more helpful without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three required parameters, the description is partially complete. However, it omits important details like validation, error handling, and behavior (e.g., immediate send vs. queued). The lack of output schema also reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive field names and descriptions (e.g., 'Recipient email address'). The description adds no extra semantic value beyond stating the parameters are customizable, which is already implied by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sends an email notification with customizable recipient, subject, and body. It explicitly names the resource (email) and action (send), and the sibling tools (parseResume, queryResume) are for different tasks, so no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use or not use this tool, such as prerequisites (e.g., valid email address), alternatives, or context (e.g., only for notifications). The sibling tools are unrelated, but no explicit differentiation is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
parseResume - First observed
queryResume - First observed
sendEmail
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: parseResume for extracting data, sendEmail for sending notifications, and queryResume for asking questions. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in camelCase (parseResume, sendEmail, queryResume), making it predictable for agents to understand their actions.
With three tools, the server is well-scoped for its stated purpose of resume parsing and email assistance. Neither too sparse nor excessive.
The tool set covers the core workflow: parse a resume, query it, and send email. Missing features like updating or deleting resume data, but the surface is functional for its focused domain.
Maintenance
Related MCP Connectors
Generate tailored, ATS-optimized resume PDFs and cover letters from a job description, over MCP.
isolved and ApplicantPro jobs, tenant discovery, and change detection as an MCP server.
GetJobzi MCP server for job search, application tracking, and career forecasting.
# **RChilli MCP Hub** RChilli MCP Hub is a production-grade MCP server that exposes RChilli's full HR data intelligence platform as 17 AI-callable tools across 4 categories. Built on 15+ years of HR data intelligence, it is trusted by ATS vendors, HR technology platforms, staffing agencies, and enterprise recruiting teams worldwide. Every tool is read-only and returns a consistent, structured JSON response — no raw exceptions, no inconsistent formats. <br> --- <br> # **Tools — 17 Total** userkey and subuserid are injected automatically from your Bearer token — you never need to pass them manually. <br> --- <br> # **🔍 Resume & Job Description Parsing — 3 tools** <br> > ### **`extract_resume_data`** > > Extracts and converts resumes, CVs, and candidate documents into structured, searchable profiles with contact details, skills, experience, education, certifications, and taxonomy-enriched data for ATS, HCM, and AI recruiting workflows. When used on a careers page or application form, the same extraction call auto-fills every application field in under 10 seconds — documented to increase candidate conversion by up to 194%. Supports 40+ languages with English-normalized output for global intake, and runs in batch mode to process legacy databases or migration backlogs overnight at scale. Also supports resume reprocessing — re-running previously extracted resumes through the latest extraction logic and taxonomy version to bring older records up to current data quality, without requiring a new document from the candidate. Distinct from bulk import (first-time extraction of a new batch) and from talent data refresh (re-enrichment from a newer submitted resume). <br> > ### **`extract_resume_data_from_url`** > > Accepts a direct URL to a PDF, DOCX, or RTF file and returns the same normalized JSON profile as the Resume Data Extraction tool. Ideal for pipeline automation where resumes are stored in cloud storage, S3, or email attachments. Also supports the same auto-fill, multilingual, and batch-processing capabilities as the core extraction tool for URL-based intake sources. <br> > ### **`extract_job_data`** > > Extracts and converts job descriptions into structured hiring data including job title, required skills, preferred skills, responsibilities, experience, education, and taxonomy-normalized role requirements for recruitment automation and candidate matching. <br> --- <br> # **🧠 Skills & Job Taxonomy — 4 tools** <br> > ### **`lookup_skill`** > > Returns authoritative detail for a known skill including description, all aliases, related skills, proficiency levels, and O*NET/ESCO mappings. Use when you need the complete record rather than a ranked search. <br> > ### **`lookup_job_profile`** > > Returns authoritative detail for a known job profile including canonical title, SOC/O*NET code, job family, typical required and preferred skills, salary bands, and work context. <br> > ### **`autocomplete_skill`** > > Accepts a partial skill string (min 2 chars) and returns up to 10 ranked autocomplete suggestions with canonical names and categories. Prevents free-text entry errors and keeps skill data clean at point of entry. <br> > ### **`autocomplete_job_profile`** > > Accepts a partial job title string and returns ranked autocomplete suggestions with canonical titles and job families. Ensures job titles map to taxonomy profiles from the moment a recruiter starts typing. <br> --- <br> # **🛡️ Redaction, Documents & Utilities — 7 tools** <br> > ### **`redact_resume`** > > Redacts personally identifiable information from candidate profiles to support anonymized review, bias-aware screening, compliance workflows, and audit logs. Configurable redaction scope. Idempotent. <br> > ### **`reformat_resume_with_template`** > > RChilli's Resume Reformatting tool accepts any structured candidate profile and applies one of six branded templates (TM001–TM006) to produce a consistently formatted output document in PDF, DOCX, RTF, or HTML — ensuring every candidate is presented in a standardized, professional layout regardless of how their original resume was structured. Designed for staffing firms, recruitment agencies, and enterprise HR teams who need to control candidate presentation at scale, it eliminates manual reformatting effort and enforces brand consistency across all submissions. <br> > ### **`convert_document_format`** > > Accepts a document as base64 or URL and converts between PDF, DOCX, RTF, HTML, and plain text. Preserves formatting fidelity. Useful as a pre-processing step before data extraction on non-standard file types. <br> > ### **`tag_entities`** > > RChilli's Named Entity Recognition tool takes already-extracted HR text and annotates it by wrapping each recognized entity in a structured XML-style label inline — returning output such as `<job_title>Senior Data Engineer</job_title>`, `<skill>Python</skill>`, `<city>Austin</city>`, `<degree>Bachelor of Science</degree>`, and `<organization>Google</organization>` — covering 10+ HR-specific entity types including person name, state, country, date, and year. Unlike data extraction tools that produce separate field lists, tag_entities preserves the full original text structure with entities labeled in place, making the output immediately consumable by ATS field-mapping pipelines, candidate profile builders, and content annotation workflows without any offset calculation or post-processing. <br> > ### **`extract_contacts`** > > Identifies and structures names, emails, phone numbers, LinkedIn URLs, and addresses with field-level confidence scores from candidate records, emails, or documents. Safe for GDPR/CCPA workflows. <br> > ### **`geolocate`** > > Converts partial or informal location text into structured city, state, country, ISO codes, latitude, and longitude. Enables radius-based candidate and job search and supports workforce planning analytics. <br> > ### **`classify_job_zone`** > > RChilli's Job Zone Classification tool reads the job profile from a resume or job description and returns its O/*NET Job Zone — one of five standardized levels ranging from Zone 1 (little or no preparation required) through Zone 2 (some preparation), Zone 3 (medium preparation), Zone 4 (considerable preparation), to Zone 5 (extensive preparation required) — based on the education, experience, and training criteria defined by O/*NET. The returned Job Zone level enables downstream workflows such as candidate-to-role fit filtering, compensation benchmarking, over/under-qualification flagging, and job architecture standardization without any manual O/*NET lookup. <br> --- <br> # **🎯 Search & Matching — 3 tools** <br> > ### **`score_resume_against_jd`** > > Accepts one resume and one Job Description (no index required) and returns an overall match score, dimension scores, skill gap list, and natural-language explanation. Bias-controlled and audit-ready. <br> > ### **`find_matches_in_index`** > > Accepts a resume or Job Description as input and returns the top-N most similar documents from the indexed corpus ranked by semantic similarity. No index setup required for the input document. <br> > ### **`search_indexed_documents`** > > Accepts a query string and returns ranked document references from the tenant's pre-populated index. Supports Boolean and semantic search modes. Requires documents to be indexed before use.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables chat-based interaction with resume data and sending email notifications via MCP tools.364 npmMIT
- FlicenseAqualityDmaintenanceEnables CV parsing from PDF resumes and sending email notifications with customizable recipients.3-
- AlicenseNot gradedqualityBmaintenanceProvides MCP tools for job search, inbound recruiter activity triage, conversation inbox access, and guarded profile updates.Academic Free v1.1
- FlicenseNot gradedqualityCmaintenanceEnables AI-powered job search and resume matching with strict skill verification, resume parsing, and configurable user preferences, plus MCP tools for job search, Excel export, and email dispatch.-