Simpro MCP Server
MCP-сервер Simpro
Неофициальный. Это независимый сторонний проект. Он не связан с Simpro, не одобрен и не поддерживается компанией Simpro.
Позволяет ИИ-агенту работать с вашим аккаунтом Simpro. Искать практически что угодно в Simpro, собирать данные, для которых обычно пришлось бы кликать по нескольким экранам. Вы задаёте вопрос на обычном английском; агент выполняет поиск и изменения в Simpro за вас.
Он охватывает все части API Simpro, так что даже если нет специально созданного инструмента для чего-то, агент всё равно может до этого добраться.
⚠️ Этот инструмент может записывать и удалять, а не только читать. Он обращается ко всему API Simpro, включая конечные точки, которые обновляют и удаляют записи. Управляющий им ИИ-агент может — по ошибке или следуя плохой инструкции — изменить или уничтожить котировки, заказы, клиентов, элементы каталога и многое другое в вашем рабочем аккаунте Simpro, массово, без возможности отмены. Он действует с теми правами, которые есть у ключа или логина, которые вы ему даёте. Не передавайте его агенту, которому вы не доверяете, не позволяйте ему работать без присмотра против продакшена и дайте ему логин/ключ Simpro с правами только на то, что ему действительно нужно. Если вам нужна безопасность только для чтения, создайте пользователя Simpro с правами только для чтения и выполняйте аутентификацию от его имени.
Это было разработано на основе внутреннего инструмента, который мы используем за нашим собственным MCP Gateway. Мы добавили несколько дополнительных функций, чтобы сделать его более функциональным для сообщества, но режимы mcbp и OAuth Broker не используются нами внутри.
Это программное обеспечение предоставляется «как есть», без каких-либо гарантий, явных или подразумеваемых. Вы используете его на свой страх и риск; авторы не несут ответственности за любые потери, ущерб или изменения, внесённые в ваши данные Simpro в результате его использования.
Предварительные требования
Для установки в Claude Desktop (вариант 1): только Claude Desktop и OAuth-приложение Simpro — пакет
.mcpbсодержит собственную среду выполнения.Для запуска из исходников или самостоятельного хостинга (варианты 2 и 3): Node.js 24 или новее и
npm.Сборка Simpro, к которой вы можете подключиться, и OAuth-приложение (или устаревший API-ключ), созданное в ней — в разделе каждого режима указано, что именно ему нужно.
Related MCP server: ServiceTitan MCP Server
Содержание
1. Установка в Claude Desktop (простой способ)
Никакой командной строки, никаких файлов настройки. Вы устанавливаете пакет .mcpb из настроек расширений Claude Desktop, заполняете короткую форму и один раз входите в Simpro в браузере. После этого агент остаётся в системе, и вы просто общаетесь.
Что нужно от Simpro
Вы аутентифицируетесь с помощью OAuth-приложения Simpro, которое выполняет вход через собственный экран входа Simpro — это рекомендуемый способ. Создайте его в Simpro в разделе Setup → Integrations → API → New API Key (выберите приложение OAuth / «Authorization Code»), затем запишите:
Что | Где найти |
Build URL | Веб-адрес, по которому вы входите, например |
Company ID | Почти всегда |
Client ID | Из создаваемого OAuth-приложения. |
Client secret | Из того же OAuth-приложения. Относитесь к нему как к паролю. |
Один важный шаг: в вашем OAuth-приложении Simpro установите Redirect URI на
http://localhost:8237/callback. Именно сюда Simpro вернёт вас после входа. Он должен
совпадать точно. Если порт 8237 уже занят на вашей машине, выберите другой и укажите
соответствующий Auth redirect port на экране установки — но зарегистрированный redirect URI
должен использовать тот же порт.
Установка
Скачайте последний файл
simpro-mcp-server.mcpbсо страницы релизов.В Claude Desktop откройте Settings → Extensions, нажмите Advanced settings, затем Install extension (возможно, сначала потребуется включить там установку расширений для разработчиков/расширений). Выберите скачанный файл
simpro-mcp-server.mcpb. Появится экран установки.Заполните:
Build URL и Company ID
Authentication mode — оставьте
authorization_code(вход через браузер).Client ID и Client secret из вашего OAuth-приложения Simpro.
Оставьте Auth redirect port равным
8237, если вы не зарегистрировали другой.
Нажмите «Установить».
Вход (поток OAuth)
При первом использовании инструмента агентом в браузере откроется вкладка с экраном входа в Simpro. Войдите и подтвердите доступ. На вкладке появится «✓ Authorised» — закройте её и вернитесь к чату.
Этого одного входа достаточно. Инструмент кэширует refresh-токен, поэтому он остаётся в системе между перезапусками, и вас не будут спрашивать снова, пока этот токен не будет отозван или не истечёт. Если это когда-нибудь произойдёт, он просто снова откроет вкладку входа.
Вот и всё — начните чат и спросите что-то вроде "покажи открытые котировки для Acme" или "что на заказе 4521?".
Page size — необязательная настройка на экране установки. Оставьте 50. Она просто ограничивает количество строк, возвращаемых за раз, чтобы большие списки не перегружали один ответ — агент всегда может запросить больше.
Другие способы аутентификации
Поле Authentication mode на экране установки предлагает три варианта:
Режим | Что это такое | Когда использовать |
| Вход через браузер как вы. Действует с вашими правами Simpro. | По умолчанию — рекомендуется. |
| Машинный вход без пользователя. Действует с полным доступом OAuth-приложения. | Для автоматизации без участия человека. Также требует Client ID + secret; без шага в браузере. |
| Устаревший отдельный API-ключ. | Только если вы не можете создать OAuth-приложение. Вставьте ключ в поле Simpro API Key. Статические ключи устарели в Simpro. |
Безопасность ваших учётных данных
Ваш client secret, refresh-токен и любой API-ключ хранятся Claude Desktop и используются
только для связи с вашей собственной сборкой Simpro. Любой, у кого они есть, может действовать в Simpro с теми же правами,
которые вы предоставили, поэтому не передавайте установку .mcpb или эти значения людям, у которых
не должно быть такого доступа. Если учётные данные когда-либо были раскрыты, отзовите OAuth-приложение или ключ в
Simpro и создайте новое.
Запуск локально из исходников
Для разработчиков или тех, кто запускает из Git-клона вместо пакета .mcpb.
Если вы установили расширение выше, этот раздел можно пропустить.
Скопируйте
.env.example→.envи задайтеSIMPRO_BASE_URLиSIMPRO_COMPANY_ID, а также либоSIMPRO_CLIENT_ID+SIMPRO_CLIENT_SECRET(для входа через браузер или машинного входа) либоSIMPRO_API_KEY(устаревший ключ).Режим аутентификации определяется автоматически из того, что вы задали —
client_credentials, если присутствуют и client ID, и secret, иначеapi_key. Чтобы принудительно использовать вход через браузер, задайтеSIMPRO_AUTH_MODE=authorization_code.npm install && npm run build && npm start— это работает через stdio, так же, как установленное расширение.
Для входа через браузер (authorization_code) вы можете один раз войти заранее с помощью
npm run login — он откроет вкладку входа в Simpro и закэширует refresh-токен в
.simpro-tokens.json. Если пропустить этот шаг, сервер просто выполнит тот же вход при первом
использовании инструмента. Полный список скриптов см. в разделе Сборка самостоятельно.
2. Режим OAuth Broker (для коннектора ИИ-агента)
Для подключения Simpro к ИИ-агенту как полноценного коннектора, где каждый человек входит в Simpro сам через обычный экран входа Simpro — без общего ключа, без файла настройки на каждого человека. Для большинства людей, запускающих это на сервере, это тот режим, который вам нужен.
Именно этот режим используется в предоставленной Docker-настройке по умолчанию. Это более безопасный вариант по умолчанию:
сервер сам аутентифицирует пользователей, а не доверяет учётным данным, переданным ему извне.
Он всё равно должен находиться за обратным прокси, который завершает TLS и маршрутизирует
PUBLIC_URL на него — но контейнер никогда не решает, доверять ли входящему заголовку.
Собственный вход Simpro — это дизайн OAuth 2.0, к которому современные коннекторы агентов не подключаются напрямую. Этот сервер находится посередине и приводит его к стандарту OAuth 2.1, который они требуют — добавляя шаги безопасности, которых не хватает Simpro, при этом передавая реальный вход в Simpro. С точки зрения пользователя это просто «нажмите подключить, войдите в Simpro». Точные шаги, которые он добавляет, описаны в разделе Как брокер улучшает вход в Simpro ниже.
Сервер находится перед Simpro и выполняет рукопожатие входа. Пользователь добавляет коннектор в своём агенте, его отправляют в Simpro для входа, и с этого момента агент действует как этот человек в Simpro. Его доступ к Simpro запечатан внутри токена, который хранит агент; сервер не ведёт базу данных входов.
Этот режим требует публичного веб-адреса и OAuth-приложения Simpro (созданного в Simpro в разделе
Setup → Integrations). В этом OAuth-приложении установите Redirect URL на ваш публичный
адрес с добавлением /callback — например https://simpro.yourcompany.com/callback.
Настройки
Задайте их как переменные окружения, в дополнение к SIMPRO_BASE_URL (и, при необходимости,
SIMPRO_COMPANY_ID) из предыдущего раздела.
Setting | Обязателен | Что делает |
| да | Установите |
| да | Публичный веб-адрес, по которому пользователи обращаются к коннектору, например |
| да | Из вашего OAuth-приложения Simpro. |
| да | Из вашего OAuth-приложения Simpro. Держите его в секрете. |
| рекомендуется | Секрет, используемый для запечатывания доступа каждого пользователя к Simpro внутри его токена агента. Сгенерируйте его командой |
| нет | Задавайте только если URL входа в Simpro нестандартный. В противном случае определяется автоматически из |
| нет | То же самое — задавайте только если нестандартный. |
| нет | Порт, на котором слушает сервер. По умолчанию |
| нет | Сетевой интерфейс для привязки. По умолчанию |
| нет | Веб-путь, по которому доступен сервер. По умолчанию |
Не задавайте SIMPRO_API_KEY в этом режиме — сервер откажется запускаться.
Setting | По умолчанию | Что делает |
|
| Строк на страницу для результатов списка, если не указано иное. Максимум 250. |
|
| Наибольший допустимый размер одного ответа; при превышении ответ удерживается и агенту предлагается сузить запрос. |
3. Режим HTTP-прокси (для общего/хостингового развёртывания)
Для команд, запускающих это на сервере за чем-то, что уже обрабатывает вход пользователей (например, в окружении Cowork или Copilot). В этом режиме сервер не хранит никакого собственного ключа Simpro — каждый запрос несёт свой собственный логин, добавляемый тем, кто выполняет вход пользователей. Сервер просто пропускает его дальше к Simpro.
⚠️ Не предназначен для прямого доступа из интернета. Этот режим должен работать за шлюзом или обратным прокси (MCP-шлюз, Context Forge или что-то вроде nginx/Traefik), который завершает TLS и аутентифицирует пользователей. Он не выполняет собственную аутентификацию и не защищён для прямого доступа — никогда не публикуйте его напрямую в интернет. Контейнер намеренно не публикуется на хосте по умолчанию; шлюз обращается к нему через частную сеть.
Чтобы использовать этот режим, установите SIMPRO_TRANSPORT=proxy (прилагаемая настройка Docker по умолчанию использует более безопасный режим брокера выше). Если вы развёртываете с помощью Portainer или Context Forge, см. docs/deploy.md с описанием структуры стека.
Здесь вы не задаёте API-ключ — более того, сервер откажется запускаться, если он присутствует, потому что в этом режиме только логин каждого пользователя должен предоставлять доступ.
Важно: этот режим не выполняет никаких собственных проверок. Любой заголовок Authorization, приходящий с запросом, передаётся напрямую в Simpro без изменений. Сервер не проверяет, действительны ли учётные данные, не истёк ли их срок и не поступил ли запрос от того, кому разрешено его отправлять, — только Simpro решает, работают ли учётные данные. Это сделано намеренно: режим предполагает, что уровень перед ним (шлюз или система входа) уже аутентифицировал пользователя и добавил заслуживающий доверия заголовок. Запускайте этот режим только за таким уровнем. Если вы откроете к нему прямой доступ, любой, кто сможет до него добраться, сможет передать свой заголовок в Simpro как есть.
Настройки
Они задаются как переменные окружения (в вашем файле .env или через платформу контейнеров).
Setting | Обязателен | Что делает |
| да | Установите |
| да | Адрес вашей сборки Simpro, например |
| нет | Ваш идентификатор компании. По умолчанию |
| нет | Порт, на котором слушает сервер. По умолчанию |
| нет | Сетевой интерфейс для привязки. По умолчанию |
| нет | Веб-путь, по которому доступен сервер. По умолчанию |
Не задавайте SIMPRO_API_KEY в этом режиме — сервер откажется запускаться.
Вы также можете настроить, сколько данных возвращается за раз:
Setting | По умолчанию | Что делает |
|
| Строк на страницу для результатов списка, если не указано иное. Максимум 250. |
|
| Наибольший допустимый размер одного ответа; при превышении ответ удерживается и агенту предлагается сузить запрос. |
4. Какой режим мне нужен?
Вы хотите… | Используйте |
Использовать Simpro из Claude Desktop на своей машине | Установку в Claude Desktop (вариант 1) |
Предложить Simpro как коннектор, в который ваша команда может входить индивидуально | Режим OAuth-брокера (вариант 2) |
Запустить общий сервер, где вход обрабатывается отдельно и у вас есть собственный шлюз | Режим HTTP-прокси (вариант 3) |
5. Подключение клиента (примеры конфигурации)
Установка .mcpb для Claude Desktop (вариант 1) сама записывает свою конфигурацию — для этого вам не придётся трогать JSON. Эти примеры предназначены для запуска из клонированного исходного кода или направления клиента на размещённый брокер/прокси.
Claude Desktop — stdio из исходников
Отредактируйте claude_desktop_config.json (Settings → Developer → Edit Config). Укажите command как node, а args — на собранный dist/index.js, и передайте настройки Simpro как env:
{
"mcpServers": {
"simpro": {
"command": "node",
"args": ["/absolute/path/to/simpro-mcp/dist/index.js"],
"env": {
"SIMPRO_BASE_URL": "https://yourbuild.simprosuite.com",
"SIMPRO_COMPANY_ID": "0",
"SIMPRO_AUTH_MODE": "authorization_code",
"SIMPRO_CLIENT_ID": "your-oauth-client-id",
"SIMPRO_CLIENT_SECRET": "your-oauth-client-secret"
}
}
}
}Сначала соберите проект (npm install && npm run build). В Windows используйте полный путь с экранированными обратными слешами ("C:\\path\\to\\simpro-mcp\\dist\\index.js"). Для старого ключа уберите client id/secret и вместо них задайте "SIMPRO_API_KEY" (только для stdio).
Claude Code — claude mcp add
Зарегистрируйте тот же stdio-сервер из CLI (запустите из каталога исходников или используйте абсолютный путь):
claude mcp add simpro \
--env SIMPRO_BASE_URL=https://yourbuild.simprosuite.com \
--env SIMPRO_COMPANY_ID=0 \
--env SIMPRO_AUTH_MODE=authorization_code \
--env SIMPRO_CLIENT_ID=your-oauth-client-id \
--env SIMPRO_CLIENT_SECRET=your-oauth-client-secret \
-- node ./dist/index.jsНаправление клиента на размещённый брокер (вариант 2)
Когда брокер запущен за вашим публичным адресом, добавьте его как удалённый коннектор — здесь нет локальной команды и переменных окружения. Используйте интерфейс коннектора / «Add custom connector» в вашем клиенте и укажите MCP URL:
https://simpro.yourcompany.com/mcpКлиент отправляется в Simpro для входа; больше ничего настраивать не нужно. (HTTP-прокси из варианта 3 достигается так же, но ожидает, что ваш шлюз добавит bearer-токен — его нельзя добавить как простой коннектор.)
6. Как брокер модернизирует вход в Simpro
Этот раздел для технически любопытных или тех, кто проверяет безопасность коннектора. Он не нужен для использования любого из трёх режимов выше.
Современные коннекторы агентов подключаются только к серверам авторизации, соответствующим требованиям OAuth 2.1. OAuth Simpro не поддерживает PKCE и не поддерживает схемы идентификации клиентов, используемые этими коннекторами. Вместо того чтобы просить Simpro измениться, брокер выступает перед ним как собственный совместимый сервер авторизации OAuth 2.1 и незаметно ретранслирует запросы в Simpro за кулисами. В частности, он добавляет:
PKCE (S256), применяемый нами. Подключающийся клиент должен отправить code challenge на
/authorizeи подтвердить его на/token; при несовпадении запрос отклоняется. Сам Simpro не выполняет PKCE, поэтому фактическим контролёром выступает брокер — устраняя разрыв, связанный с кражей кода авторизации, который оставляет открытым обычный OAuth 2.0.Современная идентификация клиента — без общего секрета, встроенного в клиент. Подключающийся клиент сообщает брокеру, кто он, одним из двух стандартных способов, и брокер принимает тот, который использует данный клиент:
CIMD (документ метаданных идентификатора клиента): client_id — это URL, который брокер загружает и проверяет при каждом запросе; он должен быть самореферентным и содержать точный адрес перенаправления, используемый в данный момент. Ничего заранее не регистрируется. Загрузка выполняется под защитой от SSRF, чтобы этот URL нельзя было использовать для зондирования внутренней сети сервера.
DCR (динамическая регистрация клиента, RFC 7591): клиент может
POST /register, чтобы заранее выпустить собственный client_id. Брокер публикует эту конечную точку в своих метаданных. Регистрация открыта (без аутентификации), поэтому она ограничена по частоте и размеру и при достижении предела вытесняет самые старые записи; зарегистрированные клиенты сохраняются, поэтому переживают перезапуск. Клиент может зарегистрироваться как публичный (без секрета) или конфиденциальный (брокер выдаёт секрет и затем требует его на этапе получения токена).
Точное совпадение адреса перенаправления. Адрес, на который возвращается клиент, должен совпадать с зарегистрированным символ в символ — не просто «начинается с».
Недолговечные токены, привязанные к аудитории. Токен, который получает клиент, выпускается брокером, снабжён сроком действия и привязан к этому конкретному серверу в качестве аудитории. Настоящие токены Simpro зашифрованы (запечатаны) внутри него. Брокер не хранит базу токенов — каждый токен самодостаточен, — а выпускаемый им refresh-токен имеет ограниченный срок жизни 30 дней, так что утёкший токен нельзя бесконечно воспроизводить. Единственное исключение: поскольку Simpro ротирует refresh-токены при использовании (каждое обновление сжигает старый), брокер хранит текущий вышестоящий refresh-токен для каждого входа только в памяти в течение нескольких минут, чтобы клиент, потерявший ответ с refresh-токеном, не был вынужден снова входить в систему. Он никогда не записывается на диск; следующее успешное обновление — подтверждающее, что клиент теперь владеет текущим токеном, — удаляет его, а перезапуск или несколько минут простоя очищают его.
Итоговый эффект: агент общается с чем-то, что выглядит как чистый современный провайдер OAuth 2.1, пользователь по-прежнему входит в систему на настоящем экране Simpro, а слабые места процесса Simpro усиливаются в промежуточном звене. Весь обмен увязывается только в памяти на несколько секунд, пока длится рукопожатие, поэтому этот режим должен работать как одиночный экземпляр — не помещайте его за балансировщиком нагрузки.
Сборка самостоятельно
Если вы работаете с кодом, а не просто используете его:
npm install
npm run build # compile
npm test # run the unit tests
npm run login # one-time browser sign-in (authorization_code); caches the refresh token
npm run build:mcpb # produce the simpro-mcp-server.mcpb install file
npm start # run it locallynpm run login запускает скомпилированный dist/login.js, поэтому сначала выполните сборку; для него
необходимо, чтобы были заданы SIMPRO_CLIENT_ID и SIMPRO_CLIENT_SECRET (см. Запуск локально из исходного кода
выше).
Имеется набор модульных тестов (npm test), покрывающий чистые детерминированные части — ранжирование
поиска, форматирование вывода, пути позиций и вспомогательные функции криптографии/хранения для аутентификации. Линтера нет,
и ничто не имитирует сеть, поэтому полная проверка изменения по-прежнему означает сборку
и проверку на реальном аккаунте Simpro. Заметки по архитектуре и особенности API Simpro,
которые стоит знать, находятся в CLAUDE.md.
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
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Fergus job management platform through secure API integration. Supports managing jobs, customers, quotes, and sites with real-time data synchronization.
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with direct access to ServiceTitan's field service management platform for home services contractors. It enables users to manage customers, jobs, appointments, technician dispatching, and invoices through natural language.1MIT
- AlicenseCqualityCmaintenanceEnables AI assistants to fully access and manage SyncroMSP resources including tickets, customers, assets, invoices, and over 30 resource types through 180+ API endpoints.100248MIT
- FlicenseAqualityDmaintenanceEnables AI-assisted field service management through the Service Fusion API, including job lookup, customer management, dispatch, invoicing, and equipment tracking.161
Related MCP Connectors
Give AI agents access to form submissions — read, search, update, and process file attachments.
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Create and manage AI agents that collaborate and solve problems through natural language interacti…
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/ozmarks/simpro-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server