Skip to main content
Glama
ThambimuthuAnush24

MCP Resume & Email Assistant

MCP Resume & Email Assistant

This is a Model Context Protocol (MCP) server that provides the following features:

  1. Resume Parsing: Parse and extract information from your resume to answer questions about your professional experience.

  2. Email Notifications: Send email notifications with customizable recipient, subject, and body.

  3. Next.js Frontend: A beautiful, responsive UI for interacting with the MCP server.

  4. 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 configuration

Features

  • 📄 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

  1. Clone this repository

  2. Install dependencies:

    npm install
  3. Create a .env file in the root directory with your email configuration

  4. Build the project:

    npm run build
  5. Start the server:

    npm start

For Frontend Development

  1. Navigate to the frontend directory:

    cd frontend
  2. Install dependencies:

    npm install
  3. Start the development server:

    npm run dev
  4. Open http://localhost:3000 in your browser

GitHub Pages Deployment

This project is configured for deployment on GitHub Pages. Follow these steps to deploy:

  1. Make sure you've pushed your code to GitHub:

    git add .
    git commit -m "Ready for GitHub Pages deployment"
    git push origin main
  2. Run the deployment script:

    cd frontend
    npm run deploy

This will:

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

  1. parseResume

    • Parses a resume from text or PDF

    • Parameters:

      • text (optional): Plain text resume content

      • fileContent (optional): Base64-encoded PDF content

      • fileName (optional): Name of the PDF file

  2. queryResume

    • Queries parsed resume data

    • Parameters:

      • query: The question to ask about the resume

      • context (optional): Previous conversation history

  3. sendEmail

    • Sends an email

    • Parameters:

      • to: Recipient email address

      • subject: Email subject

      • body: Email content

Local Development

Local Testing

The backend includes a local client for testing MCP tools:

npm run test:local

Debugging

For debugging the MCP server:

  1. Run in development mode:

    npm run dev
  2. Check the console logs for any errors.

  3. For frontend debugging, use the browser's developer tools.

License

MIT

Available Tools

3 tools
parseResumeParse ResumeC

Parse a resume file to extract information

ParametersJSON Schema
NameRequiredDescriptionDefault
resumeTextYesThe text content of the resume or a base64 encoded PDF

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesThe question to ask about the resume

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email address
bodyYesEmail body content
subjectYesEmail subject

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv1.0.0
    • First observedparseResume
    • First observedqueryResume
    • First observedsendEmail

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: parseResume for extracting data, sendEmail for sending notifications, and queryResume for asking questions. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in camelCase (parseResume, sendEmail, queryResume), making it predictable for agents to understand their actions.

Tool Count5/5

With three tools, the server is well-scoped for its stated purpose of resume parsing and email assistance. Neither too sparse nor excessive.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables searching job listings, tracking applications, managing resumes, and tailoring resumes to job posts, all locally via MCP.
    20
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides MCP tools for job search, inbound recruiter activity triage, conversation inbox access, and guarded profile updates.
    -