Viterbit MCP Server

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.

Category
访问服务器

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

  1. Clone or copy the mcp_viterbit directory to your desired location
  2. Install dependencies:
    cd mcp_viterbit
    pip install -r requirements.txt
    
  3. 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_ID
  • SUSCRIPTOR_QUESTION_ID
  • CUSTOM_FIELD_STAGE_NAME_ID
  • CUSTOM_FIELD_STAGE_DATE_ID
  • CUSTOM_FIELD_SIN_DISCORD_ID
  • CUSTOM_FIELD_NOMBRE_EMPRESA_ID
  • GARANTIA_100_DIAS_ID
  • ACTIVO_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

  1. "Viterbit API key is required"

    • Ensure VITERBIT_API_KEY is set in your environment or .env file
  2. "Connection timeout"

    • Check your internet connection and Viterbit API status
  3. "Candidate not found"

    • Verify the email address exists in Viterbit
    • Check for typos in email addresses
  4. "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:

  1. Check the troubleshooting section above
  2. Review the logs for detailed error messages
  3. Ensure your Viterbit API key has the necessary permissions
  4. Verify your Viterbit instance configuration matches the expected field IDs

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选