Viterbit MCP Server
Enables interaction with Viterbit recruitment API for managing candidates, jobs, and applications. Supports searching, updating candidate data, handling job applications, and advanced filtering with subscription and activity status tracking.
README
Viterbit MCP Server
A Model Context Protocol (MCP) server that provides Claude and other MCP-compatible clients with access to Viterbit recruitment API functionality.
Overview
This MCP server exposes comprehensive Viterbit API operations including candidate management, job operations, and candidature (application) handling. It allows Claude to interact with your Viterbit recruitment system autonomously.
Features
š§āš¼ Candidate Management
- Search candidates by email address
- Get detailed candidate information including custom fields and addresses
- Update candidate data (Discord ID, subscription status, stage information)
- Filter candidates with enriched data for reporting
- š Search subscribers with advanced filtering by activity status, coach, mobility, etc.
- š Get candidate counts efficiently for statistical queries without loading all data
š¼ Job Management
- Retrieve job details with comprehensive information
- Access job custom fields and company information
š Candidature (Application) Management
- Find active applications for any candidate
- Disqualify applications individually or in bulk
- Manage candidature lifecycle with proper reasons and timestamps
š ļø Utility Functions
- Get custom field definitions to understand Viterbit schema
- Check candidate eligibility for reports and filtering
- Access department and location mappings
- Extract specific data from custom fields
Installation
- Clone or copy the
mcp_viterbitdirectory to your desired location - Install dependencies:
cd mcp_viterbit pip install -r requirements.txt - Set up environment variables:
cp .env.example .env # Edit .env and add your Viterbit API key
Configuration
Required Environment Variables
VITERBIT_API_KEY: Your Viterbit API key (required)
Optional Environment Variables
If you're using a different Viterbit instance with different custom field IDs, you can override them:
DISCORD_ID_QUESTION_IDSUSCRIPTOR_QUESTION_IDCUSTOM_FIELD_STAGE_NAME_IDCUSTOM_FIELD_STAGE_DATE_IDCUSTOM_FIELD_SIN_DISCORD_IDCUSTOM_FIELD_NOMBRE_EMPRESA_IDGARANTIA_100_DIAS_IDACTIVO_INACTIVO_ID
Usage
Running the Server
To run the MCP server directly:
cd mcp_viterbit
python -m server
Claude Desktop Integration
To integrate with Claude Desktop, add this configuration to your Claude Desktop settings:
{
"mcpServers": {
"viterbit": {
"command": "/path/to/mcp_viterbit/.venv/bin/python",
"args": ["/path/to/mcp_viterbit/server.py"],
"env": {
"VITERBIT_API_KEY": "your_api_key_here"
}
}
}
}
Important: Use the full path to your virtual environment's Python interpreter and replace /path/to/mcp_viterbit/ with the actual path to your server directory.
Available Tools
Candidate Management
search_candidate
Search for a candidate by email address.
- Input:
email(string) - Output: Basic candidate info (ID, name, email, phone)
get_candidate_details
Get comprehensive candidate information.
- Input:
candidate_id(string) - Output: Full candidate details including custom fields
get_candidate_with_filters
Get candidate with enriched filtering data.
- Input:
email(string) - Output: Candidate data optimized for reporting/filtering
update_candidate_discord_id
Update candidate's Discord username.
- Input:
candidate_id(string),discord_id(string) - Output: Success confirmation
update_candidate_subscription
Update subscription status.
- Input:
candidate_id(string),is_subscriber(boolean, default: true) - Output: Success confirmation
update_candidate_stage
Update candidate's stage and date.
- Input:
email(string),stage_name(string) - Output: Success confirmation
search_subscribers š
Search for candidates who are subscribers with advanced filtering options.
- Input:
is_subscriber(boolean, default: true),activity_status(string, optional),page(number),page_size(number) - Output: Enhanced format with summary metadata, filters applied, and candidate data
- Features: Returns total count, pagination info, and filtered results
get_candidate_count š
Get total count of candidates matching specific criteria efficiently.
- Input: Multiple optional filters including
is_subscriber,activity_status,coach,has_driving_license,national_mobility,has_experience - Output: Total count with applied filters summary
- Performance: Fast operation using minimal data transfer (page_size=1)
Job Management
get_job_details
Get comprehensive job information.
- Input:
job_id(string) - Output: Full job details including custom fields
Candidature Management
find_active_candidatures
Find all active applications for a candidate.
- Input:
email(string) - Output: List of active candidatures
disqualify_candidature
Disqualify a specific application.
- Input:
candidature_id(string),reason(string, default: "Baja Servicio") - Output: Success status
disqualify_all_candidatures
Disqualify ALL active applications for a candidate.
- Input:
email(string) - Output: Detailed results including counts and errors
Utility Tools
get_custom_fields_definitions
Get all custom field schemas.
- Input: None
- Output: Custom field definitions
check_candidate_eligibility
Check if candidate should be included in reports.
- Input:
viterbit_data(object) - Output: Eligibility status and reason
get_department_location_mappings
Get department and location ID mappings.
- Input: None
- Output: Department and location mappings
extract_discord_username
Extract Discord username from custom fields.
- Input:
custom_fields(array) - Output: Discord username
Example Usage with Claude
Once configured in Claude Desktop, you can use natural language to interact with Viterbit:
Basic Operations
"Find me the candidate with email john.doe@example.com and show me their details"
"Update candidate ID 12345's Discord username to 'johndoe_discord'"
"Show me all active job applications for sara.smith@example.com"
"Disqualify all applications for candidate mike.jones@example.com because they unsubscribed"
"Get the details for job ID 67890 including custom fields"
š Advanced Subscriber & Counting Queries
"How many active subscribers do we have?"
ā Uses get_candidate_count with subscriber and activity filters
"Show me 10 inactive subscribers"
ā Uses search_subscribers with activity_status: "Inactivo"
"How many candidates have a driving license?"
ā Uses get_candidate_count with has_driving_license: "SĆ"
"Find subscribers assigned to coach Alexia"
ā Uses search_subscribers with coach filter
"What's the total number of candidates willing to travel nationally?"
ā Uses get_candidate_count with national_mobility: "SĆ"
"Show me 5 subscribers and tell me the total count"
ā Uses search_subscribers which returns both data and total in summary
Custom Field Queries
"Show me all available custom fields and their IDs"
ā Uses get_custom_fields_definitions
"How many candidates need personalized follow-up?"
ā Uses custom field filtering capabilities
Error Handling
The server includes comprehensive error handling:
- API Errors: Viterbit API errors are caught and reported clearly
- Validation: Input parameters are validated before API calls
- Logging: Detailed logging for debugging and monitoring
- Graceful Failures: Tools return informative error messages instead of crashing
Security
- API Key Protection: API keys are loaded from environment variables
- No Data Storage: The server doesn't store or cache any sensitive data
- Minimal Permissions: Only requires Viterbit API access
Troubleshooting
Common Issues
-
"Viterbit API key is required"
- Ensure
VITERBIT_API_KEYis set in your environment or .env file
- Ensure
-
"Connection timeout"
- Check your internet connection and Viterbit API status
-
"Candidate not found"
- Verify the email address exists in Viterbit
- Check for typos in email addresses
-
"Custom field errors"
- Ensure your Viterbit instance uses the default custom field IDs
- Override with correct IDs in environment variables if needed
Debugging
Enable debug logging by setting the logging level:
import logging
logging.getLogger().setLevel(logging.DEBUG)
Development
The server is built with:
- MCP SDK: For Model Context Protocol implementation
- httpx: For async HTTP requests to Viterbit API
- python-dotenv: For environment variable management
Project Structure
mcp_viterbit/
āāā __init__.py # Package initialization
āāā server.py # Main MCP server implementation
āāā viterbit_client.py # Viterbit API client with enhanced filtering
āāā tools.py # MCP tool definitions (16 tools total)
āāā config.py # Configuration and custom field ID mappings
āāā requirements.txt # Python dependencies
āāā test_tools.py # Test script for functionality verification
āāā .env # Environment variables (with your API key)
āāā README.md # This documentation
Key Features Added in Latest Version
- š¢ Statistical Queries: Fast candidate counting without data transfer overhead
- šÆ Advanced Filtering: Search by subscription, activity, coach, mobility, experience, driving license
- š Enhanced Metadata: All searches now return total counts, pagination info, and applied filters
- ā” Performance Optimized: Counting operations use minimal bandwidth (page_size=1)
- šļø Custom Field Integration: Direct integration with all 27 Viterbit custom fields
License
This project was generated by Claude Code for use with Viterbit recruitment systems.
Support
For issues or questions:
- Check the troubleshooting section above
- Review the logs for detailed error messages
- Ensure your Viterbit API key has the necessary permissions
- Verify your Viterbit instance configuration matches the expected field IDs
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.