bangtu-open-api
Officialbangtu-open-mcp
MCP-сервер для открытого API Bangtu. Он фиксирует опубликованные контракты API в схемах инструментов и серверных маршрутах: среда выполнения MCP не обращается к страницам документации API, поэтому отключение страниц документации не влияет на вызовы MCP для опубликованных интерфейсов.
В настоящее время поддерживается:
Базовая идентификация чертежей DWG: загрузка DWG, запрос статуса задачи, получение структурированных результатов рамки и штампа
Распознавание строительных компонентов: 23 типа результатов, включая оси, помещения, двери и окна, лестницы, текст, разрезы и детали
Streamable HTTP MCP и SSE MCP для совместимости со старыми клиентами
Зафиксированные контракты вышестоящей системы
Элемент | Значение |
Базовый адрес API |
|
Способ аутентификации | При каждом вызове инструмента MCP передаётся |
Условие успеха |
|
Статус задачи |
|
API-ключ является учётными данными вызывающей стороны. MCP-сервер не читает, не сохраняет и не выводит в журнал бизнес-API-ключ по умолчанию; в платной среде используйте отдельный API-ключ для каждого клиента.
Установка и запуск
Требования к окружению: Node.js 20 или новее.
Важно: при использовании MCP есть два способа, их нельзя смешивать:
Прямое подключение к существующему удалённому MCP: заполните только MCP Endpoint, предоставленный поставщиком услуг, повторное развёртывание этого проекта не требуется.
Самостоятельное развёртывание этого проекта: необходимо развернуть код и зависимости как HTTP-сервис, затем использовать публичное доменное имя, выделенное платформой развёртывания, с добавлением
/mcpв качестве MCP Endpoint. В этом случае нельзя продолжать указывать адреса официальных сервисов других сред.
npm install
cp .env.example .env
npm run devВ Windows PowerShell можно использовать:
npm install
Copy-Item .env.example .env
npm run devСборка и запуск для продакшена:
npm ci
npm run build
cp .env.example .env
npm startВ Windows PowerShell можно использовать:
npm ci
npm run build
Copy-Item .env.example .env
npm startnpm start зависит от зависимостей времени выполнения в node_modules. Если скопированы только dist, public, package.json и package-lock.json, необходимо сначала выполнить npm ci в этом каталоге; артефакты сборки не являются автономным однофайловым приложением.
.env.example настраивает только порт сервиса, базовый адрес вышестоящей системы и параметры опроса, но не настраивает клиентские API-ключи. При вызове инструментов MCP необходимо передавать собственный apiKey клиента в параметрах инструмента. Сложные чертежи DWG могут занимать до 120 минут; при необходимости можно скорректировать BANGTU_MAX_TASK_DURATION_MINUTES в соответствии с фактическими возможностями сервиса.
Адреса MCP
Прямое подключение к существующему официальному сервису
Адреса производственной среды:
Протокол | Адрес | Сценарий использования |
Streamable HTTP (новая версия, рекомендуется) |
| Клиенты, поддерживающие новую версию MCP Streamable HTTP |
Legacy SSE (совместимость со старыми версиями) |
| Старые клиенты, ещё не поддерживающие Streamable HTTP |
Проверка работоспособности |
| Только проверка состояния сервиса, не MCP Endpoint |
Конфигурация новой версии Streamable HTTP (рекомендуется)
Формат конфигурации соответствует официальной главной странице:
{
"mcpServers": {
"bangtu-api": {
"url": "https://mcp.bangtu-ai.com/mcp",
"apiKey": "请填入您的apiKey"
}
}
}Конфигурация тестового клиента
Используется для быстрой проверки вызовов инструментов MCP в тестовой среде. Формат конфигурации соответствует конфигурации тестового клиента на главной странице:
{
"mcpServers": {
"bangtu-api-test": {
"url": "https://mcp.bangtu-ai.com/mcp",
"apiKey": "btzlbnfhwr1dkndirgq5h6gy3838b8rh"
}
}
}Тестовая конфигурация предназначена только для оценки и интеграционного тестирования; для официального использования переключитесь на выделенный клиентский API-ключ. Имя конфигурации bangtu-api-test — это только отображаемое имя клиента, фактический адрес подключения определяется url.
Конфигурация старой версии Legacy SSE
Если старый клиент не поддерживает Streamable HTTP, измените адрес на /sse:
{
"mcpServers": {
"bangtu-api": {
"url": "https://mcp.bangtu-ai.com/sse",
"apiKey": "请填入您的apiKey"
}
}
}/mcp и /sse отличаются только транспортным протоколом MCP; предоставляемые инструменты и бизнес-возможности одинаковы; для новых подключений предпочтительно использовать /mcp.
Локальное тестирование
После запуска локального сервиса адреса по умолчанию:
Тип | Адрес |
Streamable HTTP |
|
SSE |
|
Проверка работоспособности |
|
Пример конфигурации локального тестового клиента:
{
"mcpServers": {
"bangtu-local": {
"url": "http://localhost:3000/mcp",
"apiKey": "请填入您的apiKey"
}
}
}Адрес MCP после самостоятельного развёртывания
Если вы развернули этот проект на облачном сервере, контейнерной платформе или другой хостинговой платформе, адрес подключения должен использовать публичный URL, выделенный платформой, с добавлением /mcp, например:
https://<你的服务域名>/mcpНе используйте адрес страницы развёртывания, адрес репозитория кода, адрес /health или адреса официальных сервисов других сред вместо MCP Endpoint. После завершения развёртывания сначала проверьте:
https://<你的服务域名>/healthЯ фактически запросил адрес проверки работоспособности официального сервиса:
GET https://mcp.bangtu-ai.com/health
HTTP/1.1 200 OKФактическое возвращаемое значение:
{"ok":true,"service":"bangtu-open-api-mcp","version":"1.0.0"}Также фактически выполнил MCP-рукопожатие initialize к https://mcp.bangtu-ai.com/mcp, получил HTTP/1.1 200 OK, версия протокола — 2025-06-18, имя сервиса — bangtu-open-api, версия сервиса — 1.0.0. Это означает, что официальный /mcp Endpoint в настоящее время может устанавливать сеанс MCP.
Проверка работоспособности и этап инициализации MCP не используют бизнес-apiKey; бизнес-apiKey передаётся только при вызове конкретных инструментов MCP.
Для самостоятельного развёртывания как минимум необходимо:
Загрузить или связать полные файлы проекта, включая
package.json,package-lock.json,src/,tsconfig.json,public/и.env.example; не полагайтесь на игнорируемые файлы.Установить зависимости:
npm ci.Собрать:
npm run build.Запустить:
npm start, сервис прослушиваетPORT, внедрённый платформой, не зашивайте порт жёстко.Настроить публичный адрес платформы как
/mcp, затем выполнить тест подключения MCP.
Удалённое развёртывание обычно не подходит для прямой передачи filePath с компьютера вызывающей стороны. Файлы DWG следует передавать через fileBase64 + fileName или использовать публичный fileUrl, доступный серверу развёртывания. .env настраивает только параметры выполнения сервиса и базовый URL вышестоящей системы; не записывайте клиентский apiKey в переменные окружения; apiKey по-прежнему передаётся как параметр инструмента при каждом вызове инструмента MCP.
Инструменты
Инструмент | Назначение |
| Чтение |
| Создание задачи распознавания строительных компонентов с помощью |
| Запрос статуса любой асинхронной задачи, возвращает подсказку |
| Короткий многократный опрос по умолчанию 20 секунд, максимум 45 секунд; возвращает фактическое количество запросов и превышение тайм-аута |
| Получение результатов рамки, штампа и координат для задачи PRE |
| Получение 23 типов структурированных результатов по строительной специальности |
Цепочка вызовов DWG
Вызовите
bangtu_create_dwg_task. Для удалённых агентов рекомендуется передаватьfileBase64иfileNameпосле преобразования вложения; при локальном развёртывании можно также передатьfilePathилиfileUrl.Сохраните возвращённый
data.taskId.Для коротких задач вызовите
bangtu_wait_task; по умолчанию он выполнит несколько фактических запросов и вернётpollCount,elapsedSecondsиtimedOut. Если возвращеноdata.status=RUNNINGиtimedOut=true, это означает только завершение окна ожидания, а не сбой; вызовитеbangtu_wait_taskснова с тем жеtaskId.Для сложных чертежей или при коротких ограничениях тайм-аута инструментов платформы агента повторяйте вызовы
bangtu_get_task_statusс интервалом примерно 3–5 секунд. Не считайте завершение одного вызова инструмента, тайм-аут клиента или статусRUNNINGсбоем.Когда статус станет
SUCCESS, вызовитеbangtu_get_frame_result, который вернёт список рамокdata[].Выберите
frameIdиз результатов рамок и вызовитеbangtu_create_cv_task({ product: "architecture", frameId })для создания строительной задачи.Для строительной задачи повторно используйте
bangtu_wait_taskилиbangtu_get_task_status, пока статус не станетSUCCESS.Вызовите
bangtu_get_arch_result({ taskId, dataType })для получения структурированных результатов по строительной специальности.
Статус задачи определяется по data.status. При FAILED прочитайте data.logs; RUNNING — это не ошибка, и его нельзя считать сбоем из-за тайм-аута удобного опроса, завершения вызова инструмента клиентом или незавершения за короткое время. bangtu_wait_task — это инструмент синхронного ожидания; если у клиента более короткий тайм-аут одного вызова инструмента, следует использовать повторные вызовы bangtu_get_task_status.
Загрузка файлов
Параметры MCP и параметры интерфейса вышестоящей системы
Интерфейс вышестоящей системы Bangtu POST /pre/createPreTask не принимает fileBase64, fileName, filePath или fileUrl; он фактически принимает поле file в формате multipart/form-data.
Текущий инструмент MCP определяет три способа источника файлов:
fileBase64 + fileName: передача содержимого вложения с платформы удалённого агента, рекомендуемый способ, не требует проброса внутренних сетей;filePath: абсолютный путь к локальному файлу.dwg, который может прочитать сервер, на котором работает MCP, подходит для локального развёртывания;fileUrl: URL-адрес файла.dwg, доступный и загружаемый сервером, на котором работает MCP.
Необходимо выбрать ровно один из трёх источников. Если удалённая платформа поддерживает файловые вложения, агент должен преобразовать содержимое вложения в Base64 (с префиксом data URL или без него) и одновременно передать имя файла .dwg:
{
"apiKey": "你的客户API Key",
"fileBase64": "<DWG 文件的 Base64 内容>",
"fileName": "drawing.dwg"
}Цепочка обработки на сервере:
第三方平台附件
-> Agent 传 fileBase64 + fileName
-> MCP 服务在内存中还原 DWG 文件
-> 构造 multipart/form-data
-> 以 file 字段上传到帮图 APIfileBase64, fileName, filePath и fileUrl — это параметры уровня MCP, а не параметры API вышестоящей системы Bangtu. Удалённому агенту не нужен проброс внутренних сетей, и он не должен передавать локальные пути с компьютера вызывающей стороны.
Типы строительных результатов
dataType для bangtu_get_arch_result поддерживает:
axisNumber, indexNumber, texts, textelvation, arrows, alignedDims, subFrame,
planRoom, planStair, planLift, planDoor, planWindow, facadeStorey,
sectionStorey, stairPlanDetWall, stairPlanDetSeg, stairPlanDetPlatform,
stairPlanDetRail, stairSecDetPlatform, stairSecDetSeg, wallDetContour,
doorWinDetail, doorWinTableРазвёртывание сервера
Это постоянный сервис Node.js, не требующий базы данных или монтирования локального хранилища. Файлы DWG временно читаются MCP-сервером и пересылаются в API Bangtu; результаты задач сохраняются и запрашиваются вышестоящей системой.
Требования к конфигурации
Минимальная конфигурация подходит для тестирования и небольшого количества вызовов:
Элемент | Минимальная рекомендация |
CPU | 1 vCPU |
Память | 1 ГБ |
Диск | 10 ГБ, в основном для системы и журналов |
Система | Ubuntu 22.04/24.04, Debian 12 или другой Linux |
Среда выполнения | Node.js 20 или новее |
Сеть | Доступ к |
Для производственной среды рекомендуется 2 vCPU, 2 ГБ памяти и масштабирование в зависимости от количества одновременных вызовов. Задачи анализа DWG выполняются асинхронно на вышестоящей системе Bangtu; сам сервер не будет постоянно потреблять значительные ресурсы CPU из-за ожидания задач; реально нужно следить за пропускной способностью, количеством одновременных соединений и объёмом журналов.
Прямое развёртывание
Развёртывание полного исходного кода. Сначала необходимо установить зависимости проекта; нельзя напрямую выполнять npm run build или npm start:
# 服务器安装 Node.js 20+
git clone <你的代码仓库地址> bangtu-open-mcp
cd bangtu-open-mcp
npm install
cp .env.example .env
npm run build
npm startЕсли в проекте есть package-lock.json, в производственной среде можно использовать более строгую и воспроизводимую команду установки вместо npm install:
npm ciЕсли используется уже сгенерированный каталог выпуска, необходимо предоставить как минимум dist/, public/, package.json, package-lock.json и .env, затем выполнить в каталоге выпуска:
npm ci --omit=dev
npm startНе копируйте только dist/ и затем выполняйте npm start. Во время выполнения требуются производственные зависимости, такие как @modelcontextprotocol/sdk, cors, dotenv, express и zod.
В .env как минимум проверьте следующую конфигурацию:
PORT=3000
HOST=127.0.0.1
BANGTU_API_BASE_URL=https://openapi.bangtu-ai.com/openApi/
BANGTU_POLL_INTERVAL_MS=5000
BANGTU_MAX_TASK_DURATION_MINUTES=120
BANGTU_DEFAULT_WAIT_SECONDS=20
BANGTU_MAX_WAIT_SECONDS=45После запуска сервиса сначала проверьте:
curl http://127.0.0.1:3000/healthИспользование PM2 для защиты
Рекомендуется использовать PM2 для автоматического перезапуска после аварийного завершения процесса и настройки автозапуска при загрузке системы:
npm install -g pm2
pm2 start dist/index.js --name bangtu-open-mcp
pm2 save
pm2 startup
pm2 logs bangtu-open-mcpПосле выполнения pm2 startup выполните системную команду, которую он выведет в терминале. При обновлении кода:
npm ci
npm run build
pm2 restart bangtu-open-mcpОбратный прокси Nginx
MCP-сервис прослушивает только 127.0.0.1:3000 на локальной машине, HTTPS обеспечивается Nginx. /mcp использует Streamable HTTP, /sse — SSE для совместимости со старыми клиентами; оба пути должны быть перенаправлены:
server {
listen 443 ssl http2;
server_name mcp.example.com;
ssl_certificate /etc/letsencrypt/live/mcp.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mcp.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 7200s;
proxy_send_timeout 7200s;
}
}После настройки проверьте:
curl https://mcp.example.com/healthВ производственной среде не открывайте порт 3000 напрямую. Как минимум на уровне Nginx, облачного файрвола или шлюза настройте HTTPS, аутентификацию доступа, ограничение запросов и деидентификацию журналов. Клиентский apiKey — это бизнес-учётные данные, передаваемые при каждом вызове инструмента; не записывайте его в .env сервера и не выводите в журналы.
Развёртывание Docker
В проекте уже предоставлен Dockerfile. Текущий способ сборки и запуска образа:
docker build -t bangtu-open-mcp .
docker run -d --name bangtu-open-mcp -p 3000:3000 --env-file .env bangtu-open-mcpСуществующий Dockerfile использует базовый образ Node.js 22.19.0, на этапе сборки выполняет npm install и npm run build, на этапе запуска использует pm2-runtime dist/index.js для запуска сервиса. .env не должен записываться в образ; при запуске контейнера конфигурация сервиса внедряется через --env-file .env или переменные окружения платформы.
Внутренний порт сервиса в контейнере — 3000; при публичном развёртывании платформа или обратный прокси должны перенаправлять на этот порт и предоставлять /mcp и /sse через HTTPS. Адрес проверки работоспособности — /health.
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
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
Turn any PDF into structured JSON via AI + OCR: invoices, bank statements, contracts.
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
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/Bangtu-ai/bangtu-open-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server