interview-prep-mcp
Serves as the default LLM provider for generating interview questions, scoring practice answers, and analyzing weak areas.
Click on "Install 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., "@interview-prep-mcpStart interview prep for Acme, Python Developer"
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.
interview-prep-mcp
An open-source Python MCP server for AI-assisted interview preparation. Runs in any MCP-compatible host — Claude Desktop, Cursor, Google Antigravity, Windsurf — and defaults to Google Gemini with optional OpenRouter for cross-provider model selection.
What it does
interview-prep-mcp exposes 17 tools that cover the full interview-prep loop:
Parse a job posting (URL or pasted text) and a CV (PDF or markdown).
Persist company and interviewer research collected by the host's other MCPs (e.g.
firecrawl,exa) — this server doesn't scrape itself.Generate personalized interview questions using the active LLM.
Submit practice answers and get scored evaluations.
Analyze weak areas across your practice history.
It also exposes:
A
interview-prep://interviews/{id}resource bundling the full prep state for one session.Two MCP prompts:
daily_prepandmock_interview.
Related MCP server: Aurai Advisor (上级顾问 MCP)
Install
The fastest way — no global pip install:
uvx interview-prep-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"interview-prep": {
"command": "uvx",
"args": ["interview-prep-mcp"],
"env": {
"GEMINI_API_KEY": "AIza...",
"OPENROUTER_API_KEY": "sk-or-..."
}
}
}
}OPENROUTER_API_KEY is optional — leave it out if you only want to use Gemini.
Google Antigravity
Antigravity uses the same mcpServers JSON in its MCP settings panel. Paste the same
block as above. Antigravity ships with Gemini already configured at the host level, so
you'll typically only need to add the MCP entry itself.
Cursor (~/.cursor/mcp.json)
Same mcpServers block as Claude Desktop.
Windsurf and other MCP-compatible hosts
Same mcpServers block; just paste it into whichever config path the host documents.
Required env
Variable | Required? | Purpose |
| Yes (default) | Direct Gemini API access. |
| No | Enables |
You can run with only one of them set. If neither is set, the server still starts — context tools (parsing, storage) work; smart tools will return a clear "no LLM provider configured" error when invoked.
Recommended companion MCPs
To research companies and interviewers, install these alongside:
firecrawl-mcp— scrape pages.exa-mcp-server— web search.
The host orchestrates all three. interview-prep-mcp exposes save_research_note for
the host to persist whatever those companion MCPs returned.
Quick start (5 minutes)
Set
GEMINI_API_KEYand install the server in your host (see snippets above).In a fresh chat:
parse_job_posting("https://example.com/jobs/123").parse_cv("/path/to/cv.pdf")— first CV becomes active automatically.start_interview_prep("Acme", "Senior Backend Engineer", job_id=1, cv_id=1).(Optional) Ask Claude to research the company via
firecrawl/exaand callsave_research_note(interview_id=1, kind="company", content="...").generate_questions(interview_id=1, count=10, types=["technical","behavioral"]).Answer questions; each answer goes to
submit_practice_answer.After several answers:
analyze_weak_areas(interview_id=1).
Tool reference
Tool | LLM? | Description |
| no | URL or text → structured JobPosting. |
| no | PDF/markdown → CVProfile. First CV is set active. |
| no | All CVs with their |
| no | Switch which CV other tools default to. |
| yes | Score + strengths + gaps. |
| no | New prep session. |
| no | Active prep sessions. |
| no | Persist markdown research. |
| no | Grouped by kind. |
| yes | Personalized Qs using job + cv + research. |
| no | Previously generated. |
| yes | Returns evaluation. |
| no | Past attempts. |
| yes | Recurring gaps + recommended topics. |
| no | Gemini (curated) + OpenRouter (24h cached). |
| no | Persist active model. |
| no | Current selection. |
Architecture
MCP Host
├── firecrawl-mcp ──────┐
├── exa-mcp ────────────┤
└── interview-prep-mcp ─┘
│
├── Tools layer
├── Service layer (parsers + storage + LLM router)
├── SQLite (~/.interview-prep/db.sqlite)
├── Config (~/.interview-prep/config.json)
└── LLM router ──┬── Gemini (default)
└── OpenRouter (optional)The MCP composes with companion MCPs — it does not scrape itself. The host's Claude
calls firecrawl/exa, then feeds findings into save_research_note.
Contributing
git clone https://github.com/shenmali/Interview-MCP-First
cd interview-prep-mcp
python3.11 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
ruff check .
mypy interview_prep_mcpCI runs ruff + mypy + pytest on every PR.
License
MIT — see LICENSE.
Available Tools
17 toolsanalyze_weak_areas_toolC
Summarize recurring gaps across practice sessions; recommends focus topics.
| Name | Required | Description | Default |
|---|---|---|---|
| interview_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full burden. It only states the tool summarizes and recommends, but lacks disclosure of side effects, idempotency, permission requirements, or data dependencies (e.g., interview_id must have practice sessions). Insufficient for a tool with no annotations.
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?
Single sentence, no redundancy. Every word contributes meaning. Efficiently conveys the tool's core action.
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?
Low complexity (1 parameter, no nesting) and output schema exists, so burden is lower. However, description is vague ('recurring gaps', 'focus topics') and misses scope context (e.g., time period, categorization). Adequate but leaves gaps in understanding.
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 0%, and the description does not mention the 'interview_id' parameter at all. Fails to add any meaning beyond the schema, leaving the agent to guess its purpose and required format.
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 summarizes recurring gaps and recommends focus topics. It distinguishes from sibling 'get_practice_history_tool' which provides raw data, whereas this tool analyzes. However, it could be more specific about what constitutes a 'gap'.
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 (e.g., get_practice_history_tool). Does not mention prerequisites (e.g., need for existing practice sessions) or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_questions_toolC
Generate count interview questions using job + cv + research as context.
| Name | Required | Description | Default |
|---|---|---|---|
| interview_id | Yes | ||
| count | Yes | ||
| types | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions using job, CV, and research as context but does not explain how these are used, whether the tool is read-only or generates new data, or the nature of the output (e.g., whether it modifies state). The term 'generate' implies creation, but details are missing.
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 no wasted words, but the phrasing 'Generate count interview questions' is ambiguous and slightly ungrammatical. It could be restructured to clearly indicate generating a specified number of questions. It is concise but at the cost of clarity.
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 3 required parameters, 0% schema coverage, and an output schema (not detailed), the description does not adequately cover input requirements, output format, or prerequisites (e.g., needing an active interview prep). For a generative tool with multiple inputs, this is insufficient for reliable agent usage.
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 0%, so parameters have no descriptions. The description only mentions 'count' indirectly ('Generate count'), but does not explain interview_id or types. The types enum is not elaborated. The reference to 'job + cv + research' hints at interview_id's role but is insufficient for precise parameter understanding.
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 generates interview questions using job, CV, and research context. It distinguishes from sibling tools like list_questions_tool (which lists existing questions) and start_interview_prep_tool (which starts preparation). However, the phrasing 'Generate count interview questions' is slightly awkward and could be more precise.
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?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or context-specific usage. For an agent to decide between generate_questions_tool and list_questions_tool or submit_practice_answer_tool, additional guidance is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_model_toolA
Return the currently active model (provider + id) or None.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the return value (active model or None), which is minimally transparent, but does not explicitly mention read-only nature or absence of side effects.
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?
Single sentence, 10 words, no wasted text. Front-loaded and efficient.
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's simplicity, zero parameters, and existence of an output schema, the description completely covers what the tool does.
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?
There are no parameters, so the description has no parameter information to add. Baseline for 0 parameters is 4 per guidelines; the schema coverage is 100%.
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 verb 'Return', the resource 'currently active model', and the output structure '(provider + id) or None'. It distinguishes from siblings like set_model_tool and list_models_tool.
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 explicit guidance on when to use this tool vs alternatives. The description implies it's for retrieving the active model, but does not contrast with set_model_tool or list_models_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_practice_history_toolC
Return all practice sessions for an interview.
| Name | Required | Description | Default |
|---|---|---|---|
| interview_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full burden. Only states the action; does not disclose whether the operation is safe, idempotent, or any side effects.
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?
Description is a single sentence, which is concise, but lacking structure such as a brief title or contextual lead. It is minimally informative.
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?
Despite having an output schema, the description does not explain what a 'practice session' is or any constraints. For a simple tool with one parameter, more completeness is warranted.
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 0% and the description adds no meaning to the 'interview_id' parameter beyond its name. Agent receives no guidance on what constitutes a valid interview_id.
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?
Clearly states 'Return all practice sessions for an interview', identifying verb and resource. However, it does not differentiate from sibling tools like list_interviews_tool or list_questions_tool, though the uniqueness is somewhat apparent from the resource name.
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 vs. alternatives. Does not mention prerequisites or context for invoking the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_research_toolA
Return all research notes for an interview, grouped by kind.
| Name | Required | Description | Default |
|---|---|---|---|
| interview_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description states the output is 'grouped by kind' but does not disclose additional behavioral traits such as idempotency, order, error handling, or prerequisites. The presence of an output schema suggests more detail, but the description itself does not elaborate.
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 that directly conveys the tool's purpose without any superfluous words. It is well-structured and front-loaded.
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 simplicity of the tool (one parameter, output schema exists), the description is mostly adequate. It covers the core functionality, though it lacks details on error conditions and prerequisites. For a retrieval tool, this is sufficient but not fully comprehensive.
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?
With 0% schema description coverage, the description must compensate. It only explains that 'interview_id' identifies the interview, which is implicit. It does not add constraints like valid range or existence checks, so it adds minimal value beyond 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 the verb 'Return' and the resource 'research notes for an interview', with the additional detail 'grouped by kind'. This effectively differentiates it from siblings like save_research_note_tool and list_interviews_tool.
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 explicit guidance is given on when to use this tool versus alternatives. The description implies it is for retrieving notes for a specific interview, but there is no mention of when not to use it or which sibling tool to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cv_profiles_toolA
List all CVs with their is_active flag.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It identifies the operation as listing (implying read-only) and mentions a returned field, but does not disclose any permissions, side effects, or rate limits. This is minimal but acceptable for a simple list operation.
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 of eight words, front-loaded with the key action and object. Every word serves a purpose with no redundancy.
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's simplicity (no parameters, an output schema exists), the description covers the core functionality. However, it omits whether all CV fields are returned or just the active flag, which could affect downstream planning. Still adequate for most use cases.
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?
The input schema has zero parameters, so the description adds no parameter information. Schema description coverage is 100%, making the baseline score 4.
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 uses a specific verb ('list') and resource ('all CVs') and mentions a key field ('is_active flag'). While it implicitly distinguishes from siblings like set_active_cv_tool, it does not explicitly differentiate from other list tools like list_interviews_tool.
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 is provided on when to use this tool versus alternatives such as match_cv_to_job_tool or set_active_cv_tool. The agent receives no context on preferred scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_interviews_toolA
Return all active interview prep sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It implies a read-only operation ('Return'), but does not confirm safety, authentication needs, or any side effects. The brevity leaves significant gaps.
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, efficient sentence. It is front-loaded with the action and resource, with no wasted words. Perfectly concise.
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, zero-parameter list tool, the description is largely complete: it specifies the entity ('interview prep sessions') and a filter ('active'). The output schema is provided separately, so the description does not need to detail return structure. Minor gap: it could mention the output type (e.g., list).
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?
There are zero parameters, so the schema coverage is 100% by default. According to the guidelines, a 0-parameter tool gets a baseline of 4. The description does not add parameter details, but that is not needed. Score is appropriate.
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 core function: 'Return all active interview prep sessions.' It uses a specific verb ('Return') and resource ('active interview prep sessions'), distinguishing it from sibling tools like 'start_interview_prep_tool' or 'get_practice_history_tool'.
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 usage guidance is provided. There is no indication of when to use this tool versus alternatives, no prerequisites, and no exclusions. The single sentence only states what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_models_toolC
List available models. Provider 'all' merges Gemini + OpenRouter (top 20).
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | all | |
| min_context | No | ||
| supports_json_only | No | ||
| free_only | No | ||
| refresh | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must reveal behavioral traits. It only mentions that provider 'all' merges top 20 models, but omits whether the operation is read-only, cached, or has rate limits. This is insufficient for a tool with no annotations.
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, efficient sentence with no wasted words. However, it could be expanded to cover more parameters without becoming verbose. Front-loading is good.
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 5 parameters and no annotations, the description is too brief. It explains only one parameter's behavior and lacks details about filters (min_context, free_only) and refresh. The output schema may cover return format, but the parameters remain under-documented.
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 0%, so the description should explain all parameters. It only adds meaning for 'provider' (merging behavior), but ignores min_context, supports_json_only, free_only, and refresh. Thus, only 1 of 5 parameters is clarified.
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 lists available models, which is a specific verb+resource. It also distinguishes from sibling tools like set_model_tool and get_active_model_tool by focusing on listing rather than setting or retrieving.
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 is provided on when to use this tool versus alternatives like set_model_tool or analyze_weak_areas_tool. The description lacks context on when listing models is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_questions_toolC
Return previously generated questions for an interview.
| Name | Required | Description | Default |
|---|---|---|---|
| interview_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implies read-only behavior but does not disclose idempotency, error handling for missing interview_id, or response format. Output schema exists but description adds no behavioral context.
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?
Single sentence, no wasted words, but excessively brief given the lack of annotations and schema coverage. Could include more detail without losing 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?
Despite a simple tool (1 param, output schema exists), the description fails to explain the return structure or any constraints. The agent cannot fully understand what to expect.
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 0%, meaning description adds no meaning to the parameter 'interview_id'. An agent must infer its purpose from the tool name and description, which is insufficient.
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 returns questions for an interview, distinguishing it from sibling tools like generate_questions_tool. However, it lacks specificity about what constitutes 'previously generated' (e.g., all questions or recent ones).
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 (e.g., generate_questions_tool for new questions). No prerequisites or limitations mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_cv_to_job_toolB
Match a CV against a job posting. Returns score (0-100), strengths, gaps, summary.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| cv_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It indicates the tool returns a score, strengths, gaps, and summary, which is helpful. However, it does not state whether the tool has side effects (e.g., writes to a database) or disclose any other behavioral traits like required permissions or rate limits.
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, front-loaded sentence that succinctly conveys the purpose and output. Every word contributes value, with no redundancy.
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?
The tool has low complexity with two parameters and an output schema covering return values. The description provides a high-level summary but fails to explain parameter semantics or how the tool fits into a workflow (e.g., relationship with parse_cv_tool). It is adequate but not thorough.
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 0%, meaning the description must explain the parameters. The description entirely omits any mention of job_id or cv_id, leaving the agent to infer their meaning from the name alone. The schema indicates job_id is required and cv_id optional, but the description adds no explanatory value.
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 function: 'Match a CV against a job posting.' It also specifies the output: score, strengths, gaps, summary. This differentiates it from sibling tools like parse_cv_tool and parse_job_posting_tool, which focus on parsing rather than matching.
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?
The description implies usage when a match between a CV and job posting is needed, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., CV and job must be parsed first). Context is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_cv_toolB
Parse a CV from a PDF or markdown file path. First CV becomes active automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the automatic activation behavior, but omits other important details like whether parsing overwrites existing profiles, error handling, or required permissions. The description adds some value beyond the schema, but significant gaps remain.
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?
Two short sentences with no unnecessary words. Front-loaded with the core action. Every part is relevant and earned its place.
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 tool with one parameter and an output schema (though not shown), the description covers the primary action and side effect. But it lacks details on multi-file behavior, error conditions, and return value semantics. It is minimally complete but could be more informative.
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?
The schema has 0% description coverage, so the description must compensate. It specifies that the file_path should be a 'PDF or markdown file path', adding format constraints. However, it does not clarify path type (absolute/relative) or any validation rules.
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 verb (Parse), resource (CV), and input format (PDF or markdown file path). It also notes a key behavior (first CV becomes active automatically). However, it could better distinguish from sibling tools like set_active_cv_tool or list_cv_profiles_tool.
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 explicit guidance on when to use this tool vs alternatives. It does not mention prerequisites, when not to use, or alternative tools. The automatic activation hint is useful but insufficient for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_job_posting_toolA
Parse a job posting from a URL, raw HTML, or pasted text. Returns id + parsed fields.
| Name | Required | Description | Default |
|---|---|---|---|
| source_or_text | Yes | ||
| is_html | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states what the tool does and its return value, but omits behavioral traits such as network requests, error handling, or side effects, leaving significant gaps for an agent.
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 that is front-loaded with the main verb and resource, containing no redundant words. Every word earns its place.
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?
With an output schema existing, the description appropriately summarizes return values. However, it lacks details on input validation, error scenarios, or handling of different input types, making it barely adequate for a tool with zero schema descriptions and no annotations.
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 0%, so the description must add meaning. It explains that 'source_or_text' can be a URL or text and hints at 'is_html' via mention of raw HTML, providing moderate value beyond the bare 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 the tool parses job postings from multiple input types (URL, raw HTML, pasted text) and returns parsed fields, distinguishing it from sibling tools like 'parse_cv_tool' which handles CVs.
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?
The description implies usage when a job posting is available, but does not explicitly state when not to use it or mention alternatives like 'parse_cv_tool' for CVs. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_research_note_toolC
Persist a research note for a prep session. Markdown content is fine.
| Name | Required | Description | Default |
|---|---|---|---|
| interview_id | Yes | ||
| kind | Yes | ||
| content | Yes | ||
| subject | No | ||
| source_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It implies a write operation but does not mention whether it overwrites, appends, requires permissions, or any rate limits. The note only says 'Markdown content is fine', leaving significant gaps.
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 extremely concise with two sentences, no filler, and the key action is front-loaded. Every word serves a purpose.
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 5 parameters (3 required), an enum, and no annotations, the description is incomplete. It does not explain parameter usage, return value (despite output schema existing), or provide enough context for an AI agent to correctly invoke the tool.
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?
With 0% schema description coverage, the description adds minimal value beyond the schema. It hints that 'content' accepts markdown, but does not explain 'interview_id', 'kind', 'subject', or 'source_url'. The enum for 'kind' is undocumented.
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 verb 'Persist' and the resource 'research note for a prep session', making the purpose evident. However, it does not differentiate from siblings like 'analyze_weak_areas_tool' or 'generate_questions_tool', which is acceptable as they are distinct in function.
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 is provided on when to use this tool versus alternatives. The description lacks context such as prerequisites or situations where saving a research note is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_cv_toolB
Switch which CV other tools default to.
| Name | Required | Description | Default |
|---|---|---|---|
| cv_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals a side effect (changing defaults globally), but lacks details on reversibility, permissions, or impact on ongoing operations. With no annotations, more behavioral context is needed.
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 concise sentence with no filler. It efficiently conveys the core purpose, though could benefit from additional context without becoming verbose.
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?
Despite low complexity (1 parameter, output schema exists), the description lacks essential details about return values, prerequisites, and parameter meaning. The tool's state-changing nature demands more 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?
The sole parameter 'cv_id' is not explained in the description. The schema has 0% description coverage, leaving the agent without guidance on what value to provide or where to obtain it.
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 action ('Switch') and the resource ('which CV other tools default to'). It uniquely identifies the tool's purpose among siblings, as no other tool sets the active CV.
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?
The description implies usage when one needs to change the default CV for other tools, but it does not provide explicit guidance on when to use versus alternatives, nor does it mention prerequisites or consequences of switching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_model_toolC
Set the active model (persists to config). Requires the matching API key.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses that the operation persists to config and requires an API key, but does not describe side effects (e.g., overwriting, reversibility, impact on other tools) or failure modes.
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?
Two concise sentences with clear front-loading of the action. Every sentence adds necessary information without waste.
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?
With an output schema present, the description is not required to detail return values, but it lacks context on what 'active model' means for other tools, how provider selection ties to API keys, and suggestions for verification after setting.
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 0%, and the description adds no meaning beyond the schema. It does not explain model_id or provider roles, valid values, or how they interact with the API key requirement.
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 action ('Set the active model') and a key behavioral trait (persists to config). It distinguishes from siblings like get_active_model_tool and list_models_tool, though it doesn't explicitly contrast them.
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?
Provides a requirement ('Requires the matching API key') but no guidance on when to use this tool versus alternatives like get_active_model_tool or list_models_tool. No situational context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_interview_prep_toolC
Create a new interview prep session and return its id + metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | ||
| role | Yes | ||
| job_id | No | ||
| cv_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It mentions creation and return of id+metadata but does not disclose side effects, authorization requirements, rate limits, or whether it modifies persistent state. 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 that directly states the action and outcome. It is appropriately front-loaded and concise, though it could benefit from a brief elaboration on session scope.
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's complexity (4 parameters, no annotations), the description is too brief. It does not clarify how session creation relates to other tools (e.g., generating questions) or what metadata is returned. The output schema exists but is not referenced.
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 0%, so the description should explain parameters. It does not describe the meaning of company, role, job_id, or cv_id beyond their names. The optional parameters are not explained, leaving ambiguity about their purpose.
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 creates an interview prep session and returns id + metadata. The verb and resource are specific, and it is distinguishable from sibling tools which perform different actions (e.g., generate_questions, analyze_weak_areas). However, it does not elaborate on what constitutes a session.
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 is provided on when to use this tool versus alternatives, such as set_active_cv or list_interviews. There are no prerequisites, exclusions, or context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_practice_answer_toolC
Submit an answer; returns evaluation (score + strengths + gaps + suggestion).
| Name | Required | Description | Default |
|---|---|---|---|
| question_id | Yes | ||
| answer_text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are given, and the description provides minimal behavioral context. It does not disclose idempotency, side effects (e.g., resubmission), or authentication requirements.
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, front-loaded sentence with no fluff. Every word earns its place.
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 presence of an output schema (not shown), the description might be adequate for a simple submission tool. However, with no annotations and zero parameter descriptions, it feels incomplete.
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 0%, and the tool description adds no semantic detail beyond parameter names. The meaning is partially inferred but lacks constraints (e.g., allowed question IDs, answer format).
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 (submit an answer) and outcome (returns evaluation with score, strengths, gaps, suggestion). It is specific but does not explicitly differentiate from sibling tools.
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 usage guidelines are provided. The description does not indicate when to use this tool versus alternatives (e.g., analyze_weak_areas_tool) or any prerequisites.
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. Dates show when Glama detected each change.
17 tool updates
v0.1.0- First observed
analyze_weak_areas_tool - First observed
generate_questions_tool - First observed
get_active_model_tool - First observed
get_practice_history_tool - First observed
get_research_tool - First observed
list_cv_profiles_tool - First observed
list_interviews_tool - First observed
list_models_tool - First observed
list_questions_tool - First observed
match_cv_to_job_tool - First observed
parse_cv_tool - First observed
parse_job_posting_tool - First observed
save_research_note_tool - First observed
set_active_cv_tool - First observed
set_model_tool - First observed
start_interview_prep_tool - First observed
submit_practice_answer_tool
TDQS
Each tool targets a distinct operation: CV parsing vs job parsing, question generation vs answer submission, session management vs research notes. No two tools have overlapping purposes; even similar verbs like 'list' and 'get' are applied to different resources (interviews vs practice history vs questions).
All tools follow a consistent verb_noun_tool pattern in snake_case (e.g., parse_cv_tool, list_interviews_tool, set_active_cv_tool). Verbs are descriptive and uniformly placed at the start. No mixing of conventions or cryptic abbreviations.
17 tools is well-scoped for a specialized interview preparation server. The count covers essential workflows (CV management, job parsing, question generation, practice, feedback, research, model config) without being overwhelming or sparse.
Core CRUD-like operations are present for key entities (create/list for interviews, parse/list for CVs and jobs, generate/list for questions). Minor gaps: no update or delete tools for CVs, job postings, or research notes, but the primary workflow (parse-match-practice-analyze) is fully covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA specialized Model Context Protocol (MCP) server that enables AI-powered interview roleplay scenarios for practice with realistic conversational feedback.447Apache 2.0
- FlicenseAqualityDmaintenanceAn MCP server that enables local AI models to receive guidance from remote 'senior' AI providers like OpenAI, Anthropic, and Gemini to solve programming problems. It features intelligent multi-turn dialogue management, context synchronization, and automated session history tracking.411-
- FlicenseNot gradedqualityDmaintenanceAn educational MCP server that teaches implementing the Model Context Protocol from scratch, enabling AI models to discover and invoke tools via JSON-RPC over stdio.-
- FlicenseBqualityCmaintenanceA lightweight MCP server that enables AI assistants to interact with the local machine through terminal, filesystem, and Python execution tools.91-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shenmali/Interview-MCP-First'
If you have feedback or need assistance with the MCP directory API, please join our Discord server