Model Context Protocol

Спроси.Ева MCP Server

Позвольте AI-агентам работать с Спроси.Ева — управляйте вакансиями, вопросами и кандидатами прямо из Claude, Cursor, VS Code Copilot и любого MCP-совместимого клиента.

Обзор #

MCP-сервер Спроси.Ева реализует Model Context Protocol через Streamable HTTP. Он предоставляет инструменты для AI-агентов, позволяющие читать и записывать данные в аккаунте Спроси.Ева — без единой строки интеграционного кода.

Сервер использует транспорт JSON-RPC 2.0 через единственный эндпоинт POST /mcp. Аутентификация выполняется с помощью стандартного JWT Bearer-токена.

📋
16 инструментов для вакансий
Создавайте, обновляйте, публикуйте, анализируйте и управляйте вакансиями
6 инструментов для вопросов
Создавайте наборы вопросов для интервью и обрабатывайте ответы
👤
7 инструментов для кандидатов
Просматривайте кандидатов, резюме, видео и отзывы

Эндпоинт #

Все MCP-запросы отправляются на единый эндпоинт:

POST https://my.whyeva.ru/mcp

Сервер поддерживает только метод POST. Методы GET и DELETE возвращают 405 Method Not Allowed.

Версия протокола: сервер сообщает 2024-11-05 при рукопожатии initialize и назначает уникальный заголовок Mcp-Session-Id для каждой сессии.

Аутентификация #

Эндпоинт MCP требует действительный JWT Bearer-токен. Получите его, войдя через API Спроси.Ева, и передавайте с каждым запросом.

1

Получить токен

Войдите в API Спроси.Ева, чтобы получить JWT-токен доступа:

HTTP
POST https://my.whyeva.ru/api/account/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "your-password"
}

Ответ содержит поле accessToken.

2

Передать токен в заголовках

Включите токен как Bearer в заголовок Authorization:

HTTP
Authorization: Bearer <your-access-token>
Примечание: Токены краткосрочны. Большинство MCP-клиентов поддерживают статический токен в конфигурации (см. Быстрое подключение). Обновите токен при ошибке 401 Unauthorized.

Быстрое подключение #

Добавьте MCP-сервер Спроси.Ева в ваш AI-клиент, вставив конфигурацию ниже. Замените на Bearer-токен, полученный выше.

~/.cursor/mcp.json
{
  "mcpServers": {
    "whyeva": {
      "url": "https://my.whyeva.ru/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}
claude_desktop_config.json
{
  "mcpServers": {
    "whyeva": {
      "type": "http",
      "url": "https://my.whyeva.ru/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Расположение файла: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или %APPDATA%\Claude\claude_desktop_config.json (Windows).

.vscode/mcp.json
{
  "servers": {
    "whyeva": {
      "type": "http",
      "url": "https://my.whyeva.ru/mcp",
      "headers": {
        "Authorization": "Bearer ${input:whyevaToken}"
      }
    }
  },
  "inputs": [
    {
      "id": "whyevaToken",
      "type": "promptString",
      "description": "Спроси.Ева JWT Bearer Token",
      "password": true
    }
  ]
}

VS Code запросит токен при первом использовании и безопасно сохранит его.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "whyeva": {
      "serverUrl": "https://my.whyeva.ru/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}
cURL – initialize
curl -X POST https://my.whyeva.ru/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2024-11-05",
      "capabilities": {},
      "clientInfo": { "name": "my-agent", "version": "1.0" }
    }
  }'

Инструменты #

Сервер предоставляет 29 инструментов, сгруппированных в три категории. Вызовите tools/list для получения полного списка с определениями JSON Schema.

Вакансии  16 tools

ИнструментОписаниеПараметры
createVacancyСоздать новую вакансию
1 param
NameTypeDescription
contractreqobjectVacancy creation details
updateVacancyОбновить существующую вакансию
1 param
NameTypeDescription
contractreqobjectUpdated vacancy details
deleteVacancyУдалить вакансию
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
getVacancyПолучить вакансию по ID
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
getVacanciesCollectionПолучить список вакансий с фильтрами
1 param
NameTypeDescription
contractreqobjectFilter criteria for vacancies
publishVacancyОпубликовать черновик вакансии
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
prolongVacancyПродлить активную вакансию
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
deactivateVacancyДеактивировать вакансию
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
checkVacancyПроверить статус вакансии
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
getInterviewVacancyПолучить детали вакансии для интервью
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
analyzeVacancyContentАнализировать содержимое вакансии с помощью AI
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
getVacancySummaryПолучить сводку вакансии
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
updateVacancySummaryОбновить сводку вакансии
1 param
NameTypeDescription
contractreqobjectUpdated vacancy summary details
getVacancyContentFilenamesПолучить имена загруженных файлов вакансии
1 param
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
deleteVacancyContentУдалить содержимое вакансии по ID
1 param
NameTypeDescription
vacancyContentIdreqstringVacancy content identifier (GUID)
getVacancyContentUrlПолучить подписанный URL для просмотра содержимого вакансии
1 param
NameTypeDescription
vacancyContentIdreqstringVacancy content identifier (GUID)

Вопросы  6 tools

ИнструментОписаниеПараметры
createQuestionСоздать новый вопрос для вакансии
1 param
NameTypeDescription
contractreqobjectQuestion creation details
updateQuestionОбновить существующий вопрос
1 param
NameTypeDescription
contractreqobjectUpdated question details
deleteQuestionУдалить вопрос
1 param
NameTypeDescription
questionIdreqstringQuestion identifier (GUID)
getQuestionsCollectionПолучить коллекцию вопросов для вакансии
1 param
NameTypeDescription
vacancyIdstringVacancy identifier (GUID)
getInterviewQuestionsCollectionПолучить вопросы для интервью по вакансии
1 param
NameTypeDescription
vacancyIdstringVacancy identifier (GUID)
skipInterviewQuestionПропустить вопрос интервью (кандидатом)
4 params
NameTypeDescription
questionIdreqstringQuestion identifier (GUID)
candidateFirstNamereqstringCandidate first name
candidateLastNamereqstringCandidate last name
candidateEmailreqstringCandidate email address

Кандидаты  7 tools

ИнструментОписаниеПараметры
getVacancyCandidateПолучить кандидата для конкретной вакансии
2 params
NameTypeDescription
candidateIdreqstringCandidate identifier (GUID)
vacancyIdreqstringVacancy identifier (GUID)
getCandidatesCollectionПолучить коллекцию кандидатов для вакансии
3 params
NameTypeDescription
vacancyIdreqstringVacancy identifier (GUID)
lastFinishedDateFromstringStart date filter (ISO 8601)
lastFinishedDateTostringEnd date filter (ISO 8601)
getVideoPresignedUrlПолучить подписанный URL для видео кандидата
1 param
NameTypeDescription
analysisDataIdreqstringAnalysis data identifier (GUID)
getCandidateSummaryПолучить сводку кандидата
2 params
NameTypeDescription
candidateIdreqstringCandidate identifier (GUID)
vacancyIdreqstringVacancy identifier (GUID)
createCandidateSummaryСоздать сводку кандидата с помощью AI
2 params
NameTypeDescription
candidateIdreqstringCandidate identifier (GUID)
vacancyIdreqstringVacancy identifier (GUID)
updateCandidateReviewОбновить статус проверки или комментарий кандидата
4 params
NameTypeDescription
candidateIdreqstringCandidate identifier (GUID)
vacancyIdreqstringVacancy identifier (GUID)
candidateStatusTypestringCandidate status enum value
recruiterCommentstringRecruiter comment text
getCandidateReviewПолучить проверку кандидата
2 params
NameTypeDescription
candidateIdreqstringCandidate identifier (GUID)
vacancyIdreqstringVacancy identifier (GUID)

Методы JSON-RPC #

Сервер реализует транспорт MCP Streamable HTTP с использованием JSON-RPC 2.0.

initialize

Выполняет MCP-рукопожатие и возвращает возможности сервера.

Request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": { "name": "my-agent", "version": "1.0" }
  }
}
Response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2024-11-05",
    "capabilities": { "tools": { "listChanged": false } },
    "serverInfo": { "name": "WhyEva-MCP", "version": "1.0.0" }
  }
}
Ответ включает заголовок Mcp-Session-Id с уникальным UUID сессии.

tools/list

Возвращает все доступные инструменты с их определениями JSON Schema.

Request
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }

tools/call

Вызывает конкретный инструмент по имени, передавая аргументы как JSON-объект.

Request – example: getVacancy
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "getVacancy",
    "arguments": {
      "vacancyId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
  }
}

notifications/initialized

Отправляется клиентом после успешного initialize. Сервер возвращает 200 OK без тела.


Коды ошибок #

HTTP-статусRPC-кодОписание
401Отсутствующий или недействительный JWT Bearer-токен
200-32700Ошибка парсинга — тело запроса не может быть разобрано как JSON
200-32601Метод не найден — неизвестный метод JSON-RPC
200-32602Неверные параметры — отсутствуют обязательные аргументы или неизвестное имя инструмента
200-32603Внутренняя ошибка — необработанное исключение сервера
405Метод не разрешён — GET/DELETE не поддерживаются
Ошибки выполнения инструментов возвращаются как успешный JSON-RPC ответ с "isError": true внутри массива result.content.
Русский