Skip to main content
Glama
adeocode

Jobber MCP Server

by adeocode

Jobber MCP Server: подключение Claude, ChatGPT или Copilot к Jobber

Разработано Adeocode: заказное ПО для компаний сферы домашнего обслуживания

Мы создаём интеграции и внутренние системы для компаний в области HVAC, сантехники, кровли, покрытий, ограждений и ландшафтного дизайна — поверх тех инструментов, которыми они уже пользуются. Код принадлежит клиенту, включая этот коннектор. Запишитесь на 15-минутный звонок


Сервер с открытым исходным кодом на базе Model Context Protocol, который позволяет Claude, ChatGPT или Microsoft Copilot читать живые данные из Jobber: клиентов, работы, сметы, счета, выручку и график. Задайте вопрос простым языком — и получите ответ из своего аккаунта, ничего не экспортируя в окно чата.

Короче говоря: 12 инструментов. Только чтение, поэтому изменить ваш аккаунт невозможно. Запускается на вашей машие через stdio или как удалённый сервер по Streamable HTTP для ChatGPТ и Copilot Studio. Расход каждого запроса учитвается в рамках лимита Jobber на 10 000 очков — именно этот момент большинство интеграций с Jobber понимают неправильно. OAuth-токены шифруются при хранении с помощью AES-256-GCM. Никакого ретрансляционного сервера и никаких посредников. Лицензия MIT, бесплатно навсегда.

Для кого это: владельцы и офис-менеджеры, которые ведут бизнес в Jobber, а также разработчики, создающие для них решения. Если вы умеете вставлять блок в файл конфигурации, вы с этим справитесь.

[!TIP] Вы не разработчик? И не нужно.

Шаги ниже предполагают, что вам комфортно редактировать JSON-файл. Если это не про вас, мы всё настроим за вас: ваше собственное приложение Jobber, учётные данные с ограниченным доступом, а один человек из вашей команды пройдёт по шагам вместе с нами.

Посмотрите, что мы строим на Jobber API или запишитесь на 15-минутный звонок

Перейти к: Что у него можно спросить . Чем этот вариант отличается . Безопасность . Настройка . Инструменты . Таблица стоимости . Нужно больше, чем коннектор?

Что у него можно спросить

После подключения это превращается в вопросы одной строкой вместо девяти кликов.

Деньги

  • «Какие счета просрочены более чем на 30 дней?»

  • «Сколько нам сейчас должны?»

  • «Что мы выставили в прошлом квартале?»

  • «Покажи выручку по месяцам за этот год»

Сметы

  • «Какие сметы мы отправили, а ответа так и не получили?»

  • «Какая смета дольше всех ждёт решения клиента?»

  • «Сколько денег висит в сметах, ожидающих ответа?»

Клиенты

  • «Покажи Harbour Coatings»

  • «Суммируй нашу историю с этим клиентом»

  • «Сколько мы взяли с них в прошлый раз?»

  • «Найди контакт по этому номеру телефона»

Работы

  • «Что стоит в графике на эту неделю?»

  • «Сколько работ мы приняли в прошлом месяце в разбивке по статусам?»

  • «Есть новые заявки, которые я ещё не смотрел?»

  • «Что сейчас не запланировано?»

Каждый ответ формируется из живых данных Jobber при каждом запросе. Ничего не кэшируется, и коннектор не хранит никаких данных о вашем аккаунте.

Related MCP server: Jobber MCP Connector

Чем этот вариант отличается

Jobber тарифицирует свой API по стоимости запроса, а не только по количеству обращений. Вам даётся 10 000 очков. Они восполняются со скоростью 500 очков в секунду. Отдельный потолок ограничивает вас 2 500 запросами каждые 5 минут.

Это важнее, чем звучит. Мы создаём интеграции с Jobber, которые работают в продакшене, и фиксировали стоимость каждого вызова в одной из них. Одна загрузка KPI-дашборда обошлась в 13 456–20 762 очка при 41–52 вызовах API. Один экран — против бюджета в 10 000 очков.

И вот та часть, о которую спотыкаются почти все. Когда Jobber начинает ограничивать вас, он отвечает кодом HTTP 200, а ошибку кладёт в тело ответа. Библиотеки повторов ориентируются на коды статуса, воспринимают 200 как успех и не возвращают ничего.

Этот коннектор построен с учётом обоих фактов:

  • Каждый инструмент объявляет свою максимальную стоимость и проверяет оставшийся бюджет до того, как потратит хоть что-то.

  • Сигнал ограничения внутри ответа с кодом 200 распознаётся, ожидается восполнение очков, и вызов повторяется один раз.

  • Размеры страниц ограничены для каждого инструмента, поэтому один вопрос не может исчерпать запас для следующего.

  • Если ожидание может затянуться, он сообщает об этом и быстро завершается с ошибкой, а не зависает.

Полные измерения опубликованы: Лимиты API Jobber, измеренные в продакшене.

Ниже также приведена измеренная стоимость каждого инструмента. Эти цифры — из скрипта, который прогоняет каждый инструмент на реальном аккаунте, а не приблизительно.

Безопасность: что он может и чего не может

Он только для чтения. В версии 1 доступны только инструменты чтения. Он умеет смотреть, подсчитывать и обобщать. Он не может создать работу, отправить счёт или перенести визит, поэтому худший сбой — это неверный ответ, а не неверное действие. Инструменты записи будут появляться по одному: каждый — за шагом явного подтверждения, каждый — с логированием.

Модель никогда не пишет собственные запросы. Каждый GraphQL-документ фиксирован и проверен в src/jobber/queries.ts. Модель выбирает, какой инструмент вызвать и какие аргументы передать, — и только. Инструмента «сырого» запроса нет, поэтому и доступ, и стоимость API остаются предсказуемыми.

Ваши учётные данные остаются на вашем компьютере. Вы регистрируете собственное приложение разработчика Jobber. Администратор аккаунта Jobber подтверждает его через страницу входа самого Jobber, поэтому коннектор никогда не видит пароль. Токены шифруются AES-256-GCM при хранении в ~/.jobber-mcp/, а ключ находится в связке ключей вашей ОС, а не на диске в открытом виде.

Ничего не проходит через нас. Коннектор работает на вашем оборудовании и общается напрямую с Jobber. Никакого облачного сервиса Adeocode посередине нет, потому что облачного сервиса нет вообще.

Каждый вызов логируется локально. ~/.jobber-mcp/audit.log записывает каждый вызов инструмента с отметкой времени, аргументами и результатом. В него никогда не попадают токены и секреты, а поисковый запрос инструмента find_client сохраняется в виде хэша, а не в исходном виде, поскольку может содержать имя клиента или номер телефона. Прочитать его можно инструментом get_audit_log.

Одно честное ограничение. Коннектор читает то, что предоставляет API Jobber. Загрузка бригад, часы по сотрудникам и стоимость или прибыль по каждой работе там не доступны. Для этого нужна работа, выходящая за рамки коннектора, — об этом рассказано внизу страницы.

Требования

  • Node.js 18 или новее: nodejs.org/en/download

  • MCP-клиент: Claude Desktop, Claude Code, Cursor, ChatGPT (режим разработчика) или Microsoft Copilot Studio

  • Аккаунт Jobber с доступом к API и кто-то, кто может подтвердить для него приложение разработчика. Jobber открывает полный доступ к API только на старшем тарифе, поэтому сначала проверьте свой тариф на getjobber.com/pricing

Настройка

Три шага, в первый раз примерно пятнадцать минут.

Шаг 1: Зарегистрируйте приложение разработчика Jobber

  1. Перейдите на developer.getjobber.com и войдите с аккаунтом администратора Jobber.

  2. Создайте новое приложение. Дайте ему имя, которое вы узнаете, например Claude Connector.

  3. Укажите URI перенаправления точно как http://127.0.0.1:5679/callback

  4. Сохраните приложение, затем скопируйте Client ID и Client Secret.

Шаг 2: Подключите его к вашему ИИ-клиенту

Claude Desktop. Откройте файл конфигурации:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Добавьте это внутрь mcpServers, подставив свои значения:

{
  "mcpServers": {
    "jobber": {
      "command": "npx",
      "args": ["-y", "@adeocode/jobber-mcp"],
      "env": {
        "JOBBER_CLIENT_ID": "your-jobber-client-id",
        "JOBBER_CLIENT_SECRET": "your-jobber-client-secret"
      }
    }
  }
}

Если другие серверы уже настроены, добавьте запятую после последнего, прежде чем добавлять этот блок. Затем полностью закройте Claude Desktop и откройте его снова.

Claude Code: claude mcp add jobber -- npx -y @adeocode/jobber-mcp

Cursor: тот же JSON-блок в настройках MCP в Cursor.

ChatGPT и Microsoft Copilot Studio: оба подключаются только к удалённым серверам, поэтому используйте HTTP-транспорт ниже.

Шаг 3: Войдите один раз

В новом диалоге скажите:

authenticate with Jobber

В браузере откроется страница входа Jobber. Администратор Jobber подтверждает приложение. Когда появится сообщение, что подключение прошло успешно, вернитесь к ассистенту и попробуйте:

which invoices are past 30 days?

Чтобы позже проверить подключение, попросите auth_status.

[!TIP] Застряли или хотите сделать правильно с первого раза?

Мы зарегистрируем приложение, подключим его к вашему аккаунту и проведём одного человека из вашей команды по всем шагам. А потом покажем, на что оно пока не может ответить, — это обычно самое интересное.

См. сервис Jobber AI или запишитесь на 15-минутный звонок

HTTP-транспорт для ChatGPT и Copilot Studio

Режим разработчика ChatGPT и Microsoft Copilot Studio требуют сервер, доступный через интернет, поэтому запустите коннектор в HTTP-режиме и укажите им адрес <MCP_BASE_URL>/mcp.

TRANSPORT=http \
MCP_BASE_URL=https://your-host.example.com \
MCP_API_KEY="$(openssl rand -hex 32)" \
JOBBER_CLIENT_ID=your-client-id \
JOBBER_CLIENT_SECRET=your-client-secret \
npx -y @adeocode/jobber-mcp

Прочитайте это, прежде чем открывать к нему публичный доступ. Без MCP_API_KEY сервер отказывается запускаться в HTTP-режиме, потому что если оставить его не заданным, /mcp и всё, что через него можно прочитать из Jobber, окажутся открыты любому, кто достучится до порта. Устанавливайте MCP_ALLOW_NO_API_KEY=true только когда аутентификацию перед ним уже обеспечивает что-то другое. /mcp, /oauth/start и /oauth/callback отклоняют запросы, у которых заголовок Host или Origin не совпадает с MCP_BASE_URL, — это защита от DNS-rebinding. Используйте HTTPS: только в этом случае привязывающий cookie OAuth-колбэка помечается как Secure. Каждая сессия привязана к хэшу API-ключа, предъявленного при её создании, поэтому утёкший mcp-session-id нельзя воспроизвести самостоятельно, а сами сессии удаляются после 30 минут простоя или 24 часов с момента создания. /health возвращает {ok: true} и ничего больше.

Доступные инструменты

Ваш ассистент выбирает их автоматически по вопросу. Вам не нужно вызывать их по имени.

Чтение вашего аккаунта (8 инструментов)

Инструмент

Входные данные

Что делает

find_client

search_term, page_size, cursor

Ищет клиентов по имени, email или телефону. Возвращает контактные данные и адреса

client_history

client_id, курсоры по разделам

Работы, сметы, счета и платежи одного клиента

overdue_invoices

page_size, cursor

Неоплаченные счета с истёкшим сроком: сначала самые старые, сверху итог по странице

quotes_outstanding

page_size, cursor

Отправленные сметы, ожидающие ответа клиента, с указанием давности и сумм

jobs_summary

date_from, date_to, page_size

Работы за период, сгруппированные по статусам, с количеством и итогами

revenue_summary

date_from, date_to, page_size

Оплаченные счета, сгруппированные по месяцам и кварталам, с итогами

schedule_lookup

date_from, date_to, timezone

Визиты и осмотры за период, сгруппированные по дням

requests_inbox

page_size, курсоры

Новые и незапланированные заявки: две отдельные секции с постраничной навигацией

Управление подключением (4 инструмента)

Tool

Что делает

authenticate

Открывает страницу входа Jobber и сохраняет одобренные учётные данные в зашифрованном виде

auth_status

Показывает, установлено ли соединение и когда истекает токен

logout

Отзывает доступ в Jobber, где это возможно, затем очищает локальные токены

get_audit_log

Читает собственный журнал этого сервера со всеми выполненными им вызовами, с фильтром по дате и постраничной выдачей

Ресурсы

URI

Что содержит

jobber://auth/status

Живое состояние аутентификации в формате JSON

jobber://safety/notice

Уведомление простым языком о том, что этот коннектор только для чтения, и где находится журнал аудита

Пагинация

Каждый инструмент со списком принимает необязательный параметр cursor. Когда записей больше, чем помещается на страницу, ответ содержит и note («доступно ещё N»), и next_cursor. Передайте это значение обратно как cursor при следующем вызове и повторяйте, пока не перестанет приходить next_cursor.

client_history разделяет это на jobs_cursor, quotes_cursor, invoices_cursor и payments_cursor — по одному на раздел, а requests_inbox использует cursor для новых запросов и unscheduled_cursor для незапланированных. payments_cursor ведёт себя иначе, чем остальные: платежи вложены в каждый счёт и не имеют связи на уровне клиента, поэтому передача этого курсора загружает дополнительные платежи для того счёта, где их оказалось больше, и такой ответ содержит только раздел payments. Каждый платёж несёт invoice_id и invoice_number, чтобы его можно было связать обратно.

Таблица стоимости

Измерено, а не оценено. Составлено путём запуска каждого инструмента против реального аккаунта Jobber с журналированием стоимости каждого вызова, относительно описанного выше бюджета в 10 000 баллов.

Tool

Типичная стоимость

Максимальная стоимость

find_client

334

500

client_history

27

50

client_history (продолжение платежей)

14-26

26

overdue_invoices

186

250

quotes_outstanding

206

250

jobs_summary

66

400

revenue_summary

86

500

schedule_lookup

188

1200

requests_inbox

124

400

Перегенерируйте с помощью npm run build && npm run measure-costs. Не вводите их вручную.

Конфигурация

Каждая переменная описана в .env.example. Если вы запускаете собранный сервер напрямую через npm start, а не через клиента, который сам передеёт переменные окружения, .env читается из каталога установленного пакета рядом с package.json, а не из вашего рабочего каталога. Поместите его туда или эскпортируйте переменные в вашей оболочке.

Переменная

Обязательная

По умолчанию

Описание

JOBBER_CLIENT_ID

да

-

Идентификатор клиента (client ID) приложения разработчика Jobber

JOBBER_CLIENT_SECRET

да

-

Секрет клиента (client secret) приложения разработчика Jobber

JOBBER_REDIRECT_PORT

нет

5679

Локальный порт для OAuth-обратного вызова stdio

JOBBER_AUTH_URL

нет

эндпоинт авторизации Jobber

Переопределение эндпоинта авторизации OAuth

JOBBER_TOKEN_URL

нет

эндпоинт токена Jobber

Переопределение эндпоинта токена OAuth

JOBBER_GRAPHQL_URL

нет

GraphQL-эндпоинт Jobber

Также используется для отзыва достпа logout по мере возможности, посколько у Jobber нет отдельного эндпоинта отзыва

JOBBER_GRAPHQL_VERSION

нет

2025-04-16

Зафиксированная версия X-JOBBER-GRAPHQL-VERSION. Подтверждена как активная в Developer Center по состоянию на 2026-08-26. Проверьте там снова перед изменением

ENCRYPTION_KEY

нет

автоматически генерируется

AES-256 ключ из 64 шестнадцатеричных символов, переопределяющий связку ключей ОС. Для CI и установок без графического интерфейса

JOBBER_READ_ONLY

нет

true

Блокирует регистрацию любых инструентов записи. В версии 1 инструентов записи нет в любом случее

TRANSPORT

нет

stdio

stdio или http

MCP_BASE_URL

в HTTP-режиме

-

Внешне доступный базовый URL, используемый для построения URI перенаправления OAuth

PORT

нет

3000

Порт HTTP-транспорта

MCP_API_KEY

в HTTP-режиме

-

Bearer-токен, обязательный для /mcp. Сервер откажется запускаться без него, если вы не откажетесь от этого требования ниже

MCP_ALLOW_NO_API_KEY

нет

-

true занускает HTTP-режим без ключа. Только за чем-то, что уже обеспечивает аутентификацию

MCP_ALLOWED_ORIGINS

нет

-

Дополнительные разрешённые значения Origin через запятую, для развёртывания за обратным прокси или CDN

Устранение неполадок

«API budget refilling, try again in Ns.» Это работает ограничение скорости Jobber на основе стоимости. Коннектор отслеживает бюджет и автоматически пережидает короткие пополнения на 5 секунд или меньше, включая ответ THROTTLED, который Jobber отправляет внутри HTTTP 200. Вы видите это сообщение только тогда, когда ожидание заняло бы больше вре мени; в этом случее он быстро завершается с ошибкой, а не зависает. Побуйте снова через некотоое вре мя.

«Jobber restricts this data to accounts on its top-tier plan.» Jobber предоставляет полный доступ к API только на высшем плане. Проверьте свой на getjobber.com/pricing.

OAuth возвращает на страницу ошибки. Проверьте, что JOBBER_CLIENT_ID и JOBBER_CLIENT_SECRET точно соответствуют вашем приложению разработчика, и что URI перенаправления, зарегистрированный в Jobber, совпадает с тем, который использует коннектор. В HTTTP-режиме он формируется из MCP_BASE_URL.

Порт 5679 уже занят. Установите JOBBER_REDIRECT_PORT на свободный порт и обновите URI перенаправления в вашем приложении Jobber, чтобы он совпадал.

«Файл токена существует, но расшифровка не удалась.» Ключ шифрования боль ше не совпадает с тем, который записал файл токена; обычно это происходит из-за удаления записи из связки ключей, смены машины или другого значения ENCRYPTION_KEY. Выполните logout, затем снова authenticate.

Журнал аудита

Каждый вызо инструента записывается в формате JSONL в ~/.jobber-mcp/audit.log, с правами достпа 0700 для каталога и 0600 для файла. Токены достпа, токены обновления, клиентские секреты, пароли и ключи шифрования никог да в него не записываются. Список удучаемых данных см. в src/utils/auditLog.ts. search_term у find_client хэшируется, а не хранится открытым текстом, поэтому его можно сопоставлять меж ду записями, не раскрывая имя, email или телфон клиента. Относитесь к журналу как к конфиденциальным деловым данным и ограничьте достп к машине соответствующим образом.

Файл ротируется после превышения 10 МБ: текущий становится audit.log.1, перезапи сывая предыдущую ротацию, и начинается новый журнал. Это ротация одного поколения, а не пол ноценная настройка logrotate. Прочитать его можно инструентом get_audit_log. Количе ство corrupted_lines появляется в ответе, когда какая-либо строка не смогла быть разобрана, например из-за записи, прерванной на середине строки.

Нужно больше, чем коннектор?

Этот коннектор читает ваш аккаунт Jobber. Он не строит ничего поверх этих данных, а вопросы, которые чаще всего волнуют владельцев, обычно лежат за пределами того, что предоставляет API: загрузка бригад, часы по сотрудникам, стоимость и прибыль по каждой работе или дашборд, который остаётся быстрым благо даря фоновой синхронизации в собственную базу данных.

Именно этим мы и занимаемся. [Посмотрите, что мы строим на Jobber API](https://www.adeocode.com/services/jobber-ai/?ut m_source=github&utm_medium=readme&utm_campaign=jobber-mcp&utm_content=footer-svc-jobber-ai), прочитайте обзор с полным списком инструентов и FAQ или [запишитесь на 15-минутный зво нок](https://www.adeocode.com/bo ok?src=jobber-mcp&utm_source=github&utm_medium=readme&utm_campaign=jobber-mcp&utm_content=footer-call) и приходите с вопросом, на который вам боль ше всего хотелось бы получить ответ от Jobber. Если его реша ет Zap, вы услышите об этом первым.

Бесплатно навсегда

Код в этом репозитории остаётся под лицензией MIT, и новые релизы тоже остаются под MIT. Здесь нет ничего урезанного, ограниченного по времени или придержанного для платного тарифа. Мы зарабатываем на создании систем, которые этот коннектор построить не может.

Поддержка проекта

Мы не принимаем пожертвования. Если он сэконом ил вам вре мя, вот что дейст вительно помогает:

  • Поставьте звезду репозиторию. Так его находят другие компании.

  • Расскажите другой компании, которая использует Jobber.

  • Откройте issue, когда столкнётесь со случаем в Jobber API, который этот коннектор обрабатывает плохо.

Кто мы

Adeocode создаёт заказное програмное обеспечение для бизнеса в сфере дома шних услуг: HVAC, сантехника, кровля, покрытия, ограждения, ландшафтный дизайн и смежные професии. Интеграции, дашборды и внутренние системы, построенные вокруг того, как уже работает компания, находятся в полной собст венности клиента.

Мы независемые разработчики. Мы не аффилированы с Jobber, Housecall Pro, ServiceTitan или Anthropic и не получаем от них реферальных вознаграждений. Всё, что мы публикуем об их продуктах, сдержит дату, когда мы это проверили.

  • Веб: [adeocode.com](https://www.adeocode.com/?ut m_source=github&utm_medium=readme&utm_campaign=jobber-mcp&utm_content=who-we-are-web)

  • Запись на зво нок: [15 минут с основателем](https://www.adeocode.com/bo ok?src=jobber-mcp&utm_source=github&utm_medium=readme&utm_campaign=jobber-mcp&utm_content=who-we-are-call)

Участие в разработке

Приветствуются issue и пул-реквесты. Если вы столкнулись с крайним слу чаем Jobber API, который этот коннектор обрабатывает плохо, откройте issue с описанием сценария и примером запроса. Инструменты только для чтения, соответствующие объёму версии 1, приветствуются в виде пул-реквестов.

Разработка

npm install
npm test
npm run build
npm run lint

Каждый GraphQL-документ в src/jobber/queres.ts перед выпуском проверяется в GraphiQL из Developer Center Jobber с зафиксированной версией JOBBER_GRAPHQL_VERSION. Полная повторная проверка, охватывающая каждый документ, была завершена 2026-08-26, включая schedule_lookup и requests_inbox после изменений в их пагинации и часовых поясах. Не осталось ни одного маркера VERIFY-IN-GRAPHIQL.

Лицензия

MIT (c) Adeocode. См. LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to access and manage Jobber field-service data including clients, jobs, invoices, and quotes through natural language interactions.
    6
    54
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Connect an AI assistant to your Jobber account to query clients, jobs, invoices, and more in plain English, with optional write actions for creating clients and jobs.
    12
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants like Claude to read and optionally write data in FieldRoutes (formerly PestRoutes) using plain English, with read-only mode by default and granular safety profiles.
    39
    MIT

View all related MCP servers

Related MCP Connectors

  • Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.

  • Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...

  • Talk to your live-events CRM (campaigns, analytics, paid ads, segments) in Claude and ChatGPT.

View all MCP Connectors

Latest Blog Posts

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/adeocode/jobber-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server