Skip to main content
Glama
pavansunkara958

Helios Field Service

Helios Field Service — продакшн-MCP-сервер и клиент

Модуль 4. Лабораторная работа — Model Context Protocol

Превращает системы запчастей, складского учёта и RMA Helios Robotics в MCP-возможность, к которой может подключиться любой MCP-совместимый клиент. Создано с помощью FastMCP 3.x в соответствии со спецификацией MCP.

Требование

Реализация

≥3 инструментов

4 — search_parts, get_inventory, analyse_failure, create_rma

≥2 ресурсов

3 — helios://catalog/summary + два URI-шаблона

≥1 промпт

diagnose_fault(fault_code, sku, site)

Клиент обнаруживает и вызывает каждый

client.py — перечисляет все три, вызывает все три

Транспорт + обоснование

stdio (по умолчанию), HTTP поддерживается — обоснование

Безопасность на стороне клиента

Оба — запрос подтверждения (elicitation) при записи, корни (roots) на клиенте

Краткое описание безопасности

docs/security.md

Обработка ошибок

Некорректный ввод, неизвестная запись, и недоступное базовое хранилище

Документация: архитектура + транспорт · инструменты/ресурсы/промпты · безопасность · логи: logs/

Быстрый старт

python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python seed_data.py
python client.py            # spawns the server over stdio and runs the full demo

Никакого API-ключа, никакой модели, никаких затрат — MCP — это протокол, и клиент вызывает сервер напрямую.

Другие запуски

AUTO_APPROVE=1 python client.py           # non-interactive (CI, log capture)
SIMULATE_DB_OUTAGE=1 python client.py     # backing data source unreachable
MCP_TRANSPORT=http python server.py       # serve on 127.0.0.1:8000
MCP_TRANSPORT=http python client.py       # ...and connect to it

Используйте его из любого MCP-хоста

{
  "mcpServers": {
    "helios-field-service": {
      "command": "python",
      "args": ["/absolute/path/to/helios-mcp/server.py"]
    }
  }
}

В этом и заключается суть упражнения — созданный один раз, он доступен любому MCP-совместимому клиенту.

Related MCP server: mcp-lab

Что показывает демонстрация

logs/demo.log — полный цикл обнаружения и вызова:

1. DISCOVERY — tools
  • search_parts       [read-only]  Search the Helios spare parts catalogue...
  • get_inventory      [read-only]  Stock level and lead time for a part...
  • analyse_failure    [read-only]  Correlate a fault code with known issues...
  • create_rma         [WRITE]      Raise a Return Material Authorisation.

1. DISCOVERY — resources
  • helios://catalog/summary         Catalogue summary
  • helios://parts/{part_number}     Catalogue entry  (template)
  • helios://kb/{doc_id}             Knowledge base article  (template)

1. DISCOVERY — prompts
  • diagnose_fault(fault_code, sku, site)

Запись, требующая подтверждения (elicitation):

  ┌─ SERVER REQUESTS CONFIRMATION ──────────────────────────────────
  │ Raise an RMA for 1 x HX2-BMS-03 (HX-200 Battery Management Board rev C)?
  │ Serial: HX200-PHX-0442
  │ Total value: $1,240.00
  └─────────────────────────────────────────────────────────────────
{"created": true, "rma_id": "RMA-00001", "value_usd": 1240.0,
 "requested_by": "mahesh.s"}

logs/demo-db-outage.log — базовое хранилище недоступно. Что видит клиент:

TOOL UNAVAILABLE — Failure analysis is temporarily unavailable.
                   Quote reference dddc45d0fc07 to support if this persists.

Что сервер записал в stderr (logs/server-errors.log):

ERROR [helios-mcp] [dddc45d0fc07] Failure analysis failed:
OperationalError: could not connect to helios-db-prod-01.internal:5432: timeout

Имя хоста и порт никогда не пересекают границу протокола. Корреляционный идентификатор (correlation id) — мост между ними.

Заметки по проектированию

Ресурсы и инструменты не взаимозаменяемы. search_parts находит деталь, когда вы не знаете её id; helios://parts/{pn} получает ту, что у вас уже есть. Те же данные — другой способ доступа.

Промпт намеренно живёт на сервере. Диагностическая процедура — это знание предметной области Helios, а не логика хоста. Каждый подключающийся клиент получает одни и те же правила — сначала исключать неисправность прошивки, прежде чем признавать аппаратное обеспечение неисправным, никогда не предлагать заменённую деталь, — вместо того чтобы каждый реализовывал их заново и расходился в трактовке.

Все логи пишутся в stderr. При работе через stdio stdout несёт JSON-RPC-кадры. Случайный print() повреждает поток протокола; в сервере таких нет.

Клиент управляет окружением сервера. Запущенный stdio-сервер не наследует окружение родительского процесса автоматически, поэтому PythonStdioTransport(env=...) передаёт явный список разрешений (allow-list), а не отдаёт всю оболочку вызывающего процесса целиком.

Структура проекта

server.py            MCP server: 4 tools, 3 resources, 1 prompt
client.py            MCP client: discovery, invocation, elicitation, roots
seed_data.py         Creates data/helios.db
docs/
  architecture.md    Diagrams + transport justification
  capabilities.md    Every tool, resource and prompt documented
  security.md        Auth, least privilege, error redaction
logs/
  demo.log                 Successful discovery-and-invocation flow
  demo-db-outage.log       Backing store unreachable, client view
  server-errors.log        Server-side detail with correlation ids

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    This MCP server exposes industrial maintenance and work-order intelligence tools, allowing users to search assets, retrieve and correlate alarm events, and query CMMS work orders through a standardized protocol.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching incidents and runbooks, retrieving incident details by URI, and creating postmortem summary prompts through MCP tools, resources, and prompts.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to search and retrieve source-linked robotics projects, bills of materials, and technical components, compare components, and validate RPPS documents via a remote MCP endpoint.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables an MCP client to resolve household appliances, retrieve local manual/warranty/incident records, compare a stored warranty date, review persistent service case history, and draft cited repair cases that only a human can approve or close before export.
    MIT