Jobber MCP Server
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
Перейдите на developer.getjobber.com и войдите с аккаунтом администратора Jobber.
Создайте новое приложение. Дайте ему имя, которое вы узнаете, например
Claude Connector.Укажите URI перенаправления точно как
http://127.0.0.1:5679/callbackСохраните приложение, затем скопируйте Client ID и Client Secret.
Шаг 2: Подключите его к вашему ИИ-клиенту
Claude Desktop. Откройте файл конфигурации:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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] Застряли или хотите сделать правильно с первого раза?
Мы зарегистрируем приложение, подключим его к вашему аккаунту и проведём одного человека из вашей команды по всем шагам. А потом покажем, на что оно пока не может ответить, — это обычно самое интересное.
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 инструментов)
Инструмент | Входные данные | Что делает |
|
| Ищет клиентов по имени, email или телефону. Возвращает контактные данные и адреса |
|
| Работы, сметы, счета и платежи одного клиента |
|
| Неоплаченные счета с истёкшим сроком: сначала самые старые, сверху итог по странице |
|
| Отправленные сметы, ожидающие ответа клиента, с указанием давности и сумм |
|
| Работы за период, сгруппированные по статусам, с количеством и итогами |
|
| Оплаченные счета, сгруппированные по месяцам и кварталам, с итогами |
|
| Визиты и осмотры за период, сгруппированные по дням |
|
| Новые и незапланированные заявки: две отдельные секции с постраничной навигацией |
Управление подключением (4 инструмента)
Tool | Что делает |
| Открывает страницу входа Jobber и сохраняет одобренные учётные данные в зашифрованном виде |
| Показывает, установлено ли соединение и когда истекает токен |
| Отзывает доступ в Jobber, где это возможно, затем очищает локальные токены |
| Читает собственный журнал этого сервера со всеми выполненными им вызовами, с фильтром по дате и постраничной выдачей |
Ресурсы
URI | Что содержит |
| Живое состояние аутентификации в формате JSON |
| Уведомление простым языком о том, что этот коннектор только для чтения, и где находится журнал аудита |
Пагинация
Каждый инструмент со списком принимает необязательный параметр 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 | Типичная стоимость | Максимальная стоимость |
| 334 | 500 |
| 27 | 50 |
| 14-26 | 26 |
| 186 | 250 |
| 206 | 250 |
| 66 | 400 |
| 86 | 500 |
| 188 | 1200 |
| 124 | 400 |
Перегенерируйте с помощью npm run build && npm run measure-costs. Не вводите их вручную.
Конфигурация
Каждая переменная описана в .env.example. Если вы запускаете собранный сервер напрямую через npm start, а не через клиента, который сам передеёт переменные окружения, .env читается из каталога установленного пакета рядом с package.json, а не из вашего рабочего каталога. Поместите его туда или эскпортируйте переменные в вашей оболочке.
Переменная | Обязательная | По умолчанию | Описание |
| да | - | Идентификатор клиента (client ID) приложения разработчика Jobber |
| да | - | Секрет клиента (client secret) приложения разработчика Jobber |
| нет |
| Локальный порт для OAuth-обратного вызова stdio |
| нет | эндпоинт авторизации Jobber | Переопределение эндпоинта авторизации OAuth |
| нет | эндпоинт токена Jobber | Переопределение эндпоинта токена OAuth |
| нет | GraphQL-эндпоинт Jobber | Также используется для отзыва достпа |
| нет |
| Зафиксированная версия |
| нет | автоматически генерируется | AES-256 ключ из 64 шестнадцатеричных символов, переопределяющий связку ключей ОС. Для CI и установок без графического интерфейса |
| нет |
| Блокирует регистрацию любых инструентов записи. В версии 1 инструентов записи нет в любом случее |
| нет |
|
|
| в HTTP-режиме | - | Внешне доступный базовый URL, используемый для построения URI перенаправления OAuth |
| нет |
| Порт HTTP-транспорта |
| в HTTP-режиме | - | Bearer-токен, обязательный для |
| нет | - |
|
| нет | - | Дополнительные разрешённые значения |
Устранение неполадок
«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.
This server cannot be installed
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 Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to access and manage Jobber field-service data including clients, jobs, invoices, and quotes through natural language interactions.654MIT
- FlicenseNot gradedqualityFmaintenanceConnects Claude to Jobber to manage clients, jobs, invoices, quotes, and scheduling through natural language.
- AlicenseAqualityBmaintenanceConnect 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.12MIT
- AlicenseAqualityBmaintenanceEnables 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.39MIT
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.
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/adeocode/jobber-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server