secureFlows MCP Server
secureFlows MCP Server
Облачный MCP-сервер, который оборачивает поверхность OpenAPI secureFlows, помеченную тегами ai-safe и ai-optional.
Этот репозиторий — публичное зеркало, публикуемое периодически из приватного монорепозитория secureFlows, где на самом деле ведётся разработка. Issues и PR приветствуются; крупные изменения могут сначала пройти цикл релиза в основном репозитории.
Что такое MCP-сервер?
MCP-сервер — это небольшой HTTP-сервис, который предоставляет набор «инструментов», которые ИИ-клиент может вызывать стандартным способом.
В этом репозитории:
secureFlows MCP-сервер предоставляет инструменты, автоматически сгенерированные из ваших YAML-спецификаций OpenAPI.
Когда клиент вызывает инструмент, MCP-сервер пересылает вызов на ваш реальный бэкенд secureFlows (
connection.host) и возвращает ответ в нормализованном виде результата инструмента.
Это позволяет ИИ-клиенту:
обнаруживать доступные операции secureFlows через
listToolsвызывать их через
callToolбез жёсткого кодирования поверхности API или ручной настройки аутентификации/заголовков
Что он делает
Два вида инструментов, зарегистрированных вместе в src/server.ts:
Сгенерированные инструменты (src/tools/build-tools.ts) — по одному на каждую операцию OpenAPI:
Загружает:
docs/openapi/session/secure-flows-session-api.yamldocs/openapi/user/secure-flows-user-api.yamldocs/openapi/docs/secure-flows-docs-api.yaml
Предоставляет только операции, помеченные
ai-safeилиai-optional, как MCP-инструментыПересылает запросы на указанный вызывающей стороной хост secureFlows — тонкая универсальная HTTP-обёртка без специфичной для secureFlows логики. Каждый из них требует действующий токен
auth.*, поэтому они полезны только после того, как сессия уже существует (см. Модель выполнения ниже).Сопоставляет заголовки аутентификации secureFlows из входных данных MCP-инструмента:
auth.firebaseTokenauth.sessionTokenauth.userToken
Статические инструменты (src/tools/static-tools.ts) — написанные вручную, не сгенерированные из спецификации:
secureflows_build_login_url/secureflows_build_logout_url— корректно строят URL для хостингового входа и перенаправления при выходе (всегда/app/sessions/login, никогда устаревший/app/login; отклоняютredirect_uriпосле выхода, указывающий на/callbackили раскрывающийsession_token). Токен secureFlows не требуется.secureflows_lint_integration— проверяет сгенерированный исходный код приложения на соответствие правилам интеграции и сообщает структурированные результаты вместо того, чтобы оставлять их в виде текста, который агент должен сам контролировать. Токен secureFlows не требуется. Два вида результатов:scope: "file"— запрещённая конструкция присутствует в точном местеfile:line: константы конфигурации из переменных окружения, токен вlocalStorage, устаревший/app/login, выход черезfetch/XHR, декодирование JWT на клиенте, отзыв при выходе, пустойcatch {}, восстановлениеsetSession(null)при ошибках, не связанных с аутентификацией, CTA «Продолжить», ограниченный условиемsession === null, …scope: "project"— требуемая обработка отсутствует во всех переданных файлах: обнаружение401/410, но токен никогда не очищается, отсутствие обработки403или обработка403без исключенияBILLING_GRACE_LOCK.
Проверки отсутствия существуют, потому что шаблонные правила структурно не могли выявить класс дефектов, который доминирует в реальных сгенерированных приложениях. Измерено: в реальном приложении пробной версии, которое LLM-судья оценочного стенда оценил в 4/10 — ссылаясь на «устаревший токен, никогда не очищаемый при выходе», «необработанные варианты 403», «отсутствие обработки ошибок» — одни только шаблонные правила дали ноль результатов, потому что каждая из этих ошибок является отсутствием, а регулярное выражение может видеть только то, что присутствует. С проверками отсутствия он выдаёт 3 результата, включая ошибку уровня
errorоб очистке токена. Оба вида проверок проверяются на каноническом стартовом шаблонеtemplates/web-app-secureflows, который должен оставаться с нулевым количеством результатов.Это всё ещё эвристический текстовый анализ, а не парсер или проверка типов: он пропускает то, для чего у него нет правила, проектная проверка может быть удовлетворена правильным ключевым словом в неправильном месте, и он не может покрыть проверки, требующие работающего приложения (гонки при монтировании auth-guard, проверка свежей перезагрузки). Быстрый первый проход — не замена чек-листу реализации агента в SKILL.md.
Эти статические инструменты существуют, потому что сгенерированные инструменты не могут помочь с частью интеграции, которая происходит до создания сессии — создание кода перенаправления/обратного вызова/жизненного цикла токена — а именно здесь происходит большинство ошибок интеграции secureFlows.
Использует транспорт MCP без сохранения состояния по HTTP, поэтому сервер не сохраняет конфигурацию тенанта или секреты.
Модель выполнения
Каждый вызов инструмента получает:
connection.host: базовый URL secureFlowsconnection.workspaceName: необязательное рабочее пространство по умолчаниюconnection.appId: необязательный идентификатор приложения по умолчаниюauth.*: токен, необходимый выбранной конечной точке
workspaceName и appId рассматриваются как стабильная конфигурация приложения. Сервер внедряет их в известные формы запросов secureFlows, если вызывающая сторона их не указала.
Для агентов (единственный поддерживаемый путь клиента)
Укажите MCP-клиенту хостинговый URL — тот же хост, что и у продукта, путь /mcp (не поддомен):
Окружение | MCP URL |
Продакшн |
|
Стейджинг |
|
Здоровье |
|
{
"mcpServers": {
"secureflows": {
"url": "https://www.secure-flows.com/mcp"
}
}
}Не говорите агентам запускать npx или использовать localhost — это разделяет историю и ломает тех, кто никогда не запускает локальный процесс. Встроено в веб-Docker-образ (Node на 127.0.0.1:8787, nginx location = /mcp; см. docs/ROUTING.md). Node-процесс устанавливает обработчики uncaughtException / unhandledRejection, чтобы один плохой запрос не завершал процесс; docker/entrypoint.sh также перезапускает MCP, если процесс всё же завершается.
Локальная разработка (мейнтейнеры этого пакета)
cd mcp-server
npm install
npm run build
npm test
npm run devСервер по умолчанию запускается на http://0.0.0.0:8787 (POST /mcp, GET /health). Это для изменения самого MCP-сервера — а не путь, который должны настраивать агенты продукта.
Переменные окружения
PORT: HTTP-порт, по умолчанию8787(в веб-контейнере entrypoint устанавливаетPORT=8787только для дочернего процесса MCP, чтобы nginx сохранял публичный$PORTRender)HOST: адрес привязки, по умолчанию0.0.0.0(веб-контейнер использует127.0.0.1)ALLOWED_HOSTS: необязательный список разрешённых хостов через запятую для проверки заголовка Host MCPMCP_ALLOWED_HOSTS: переопределениеALLOWED_HOSTSв entrypoint при запуске процесса внутри образа
Конечные точки
POST /mcp: конечная точка MCP Streamable HTTPGET /health: проверка здоровья (публично доступна какGET /mcp/healthчерез nginx)
Встраивание secureFlows в приложение
Продуктовые приложения интегрируются напрямую с HTTP API secureFlows и хостинговым входом. Начните с:
docs/integration/quickstart.md— подготовка (рабочее пространство + приложение) и хостинговый вход во время выполненияdocs/integration/CONCEPT.md— базовый порядок: вход → создание рабочего пространства перед расширенными функциямиdocs/openapi/integration-auth.yaml—/app/sessions/login(приложения с сессиями) против/app/login(устаревший/консольный)
Продуктовые приложения по-прежнему интегрируются напрямую с указанными выше HTTP API, а не через этот сервер. Сгенерированные инструменты здесь предназначены для агентов/автоматизации, у которых уже есть токен (тестирование, скриптовая проверка). Статические инструменты (secureflows_build_login_url, secureflows_build_logout_url, secureflows_lint_integration) не требуют токена и предназначены для вызова кодирующим агентом, пока он ещё создаёт интеграцию — см. Что он делает выше.
Тестирование этого MCP-сервера
npm testвmcp-server/— модульные тесты плюс HTTP-дымовой тест (test/http-smoke.test.ts): запускает Express-приложение на эфемерном порту, проверяетGET /health,GET /mcp→ 405 и реальный клиент Streamable-HTTPlistTools+callTool(secureflows_build_login_url).После развёртывания: Playwright
tests/smoke/mcp-health.spec.tsобращается к публичнымGET /mcp/healthиGET /mcpна целевом хосте (продакшн-дымовая задача).Локальный цикл мейнтейнера:
npm run dev, затемcurl -sS http://127.0.0.1:8787/health.Опционально: MCP-клиент против
POST /mcpсconnection.host+auth.*для сгенерированных инструментов.
Развёртывание
Поставляется внутри веб-Docker-образа и проксируется на /mcp на www.secure-flows.com / стейджинге (см. Для агентов выше). Без отдельного поддомена.
npm-пакет secureflows-mcp-server — это то, как CI публикует версионированный артефакт (и как можно собрать автономный контейнер из mcp-server/Dockerfile); это не путь настройки для агентов. Публикация по тегам v*.*.* через .github/workflows/publish-secureflows-mcp-server.yml.
docker build -f mcp-server/Dockerfile -t secureflows-mcp-server .
docker run --rm -p 8787:8787 secureflows-mcp-serverПримечания
Конечные точки хостингового входа / перенаправления доступны только в том случае, если они помечены
ai-safeилиai-optionalв спецификациях OpenAPI.Поиск по документации (
get_docs_search) —ai-safe, не требует никакогоauth.*— толькоconnection.hostи параметр запросаq.Консольные API только для людей-администраторов намеренно исключены.
Полезная нагрузка ответа каждого инструмента включает:
statusokurlheadersdata
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 Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
MCP server for AI access to Swagger by SmartBear.
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/michal-lefler/secureflows-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server