Skip to main content
Glama
pyroua
by pyroua

Pyro Storefront MCP Server 🎆

npm version Model Context Protocol License: MIT

Офіційний клієнтський MCP-сервер (Model Context Protocol) для інтернет-магазину піротехніки та салютів pyro.ua.

Дозволяє автономним ІІ-агентам (Claude Desktop, Cursor, Cline, Windsurf, ChatGPT Desktop) підбирати феєрверки за технічними характеристиками (калібр, кількість пострілів, тривалість, бюджет), перевіряти складські залишки, знаходити найближчі відділення і поштомати Нової Пошти та безпечно оформляти замовлення з миттєвим онлайн-чекаутом через Monobank.


⚡ Швидке підключення (1-Click Run)

Сервер повністю автономний, зібраний у єдиний виконуваний бандл і не потребує ручного встановлення залежностей.

🟣 1. Claude Desktop

Додайте в конфігураційний файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "pyro-storefront": {
      "command": "npx",
      "args": ["-y", "github:pyroua/pyro-storefront-mcp"]
    }
  }
}

🔵 2. Cursor / Windsurf

Додайте в .cursor/mcp.json:

{
  "mcpServers": {
    "pyro-storefront": {
      "command": "npx",
      "args": ["-y", "github:pyroua/pyro-storefront-mcp"]
    }
  }
}

Related MCP server: Commerce MCP Server

🛠️ Доступні інструменти (Tools)

Інструмент

Опис

search_fireworks

Пошук піротехніки за бюджетом, калібром (мм), кількістю пострілів та ключовими словами

get_firework_details

Детальні ТТХ товару: опис, фото, відео роботи, безпечна дистанція, інструкція

check_stock_availability

Пакетна перевірка залишків на складі та розрахунок підсумкової вартості

search_delivery_branches

Пошук відділень і поштоматів Нової Пошти в обраному місті України

create_order

Оформлення роздрібного замовлення з генерацією захищеного посилання на оплату Monobank

track_order

Перевірка статусу замовлення та ТТН за номером замовлення та 4 останніми цифрами телефону


💬 Приклади запитів для вашого AI-асистента

  • «Підбери салют на день народження до 3500 грн, від 30 мм калібру, не менше ніж на 30 пострілів. Покажи відео та ціну.»

  • «Знайди поштомати Нової Пошти у Києві біля станції метро Мінська.»

  • «Оформи замовлення на салют №508 на ім'я Ігор Шульга (+380501234567) з доставкою до поштомату №1263 у Києві. Мені є 18 років.»

  • «Який статус мого замовлення №72901? Мій номер закінчується на 4567.»


🛡️ Безпека та захист даних (Enterprise Gold Standard)

  1. DLP & Нульовий витік комерційної таємниці: Сервер має сувору ізоляцію від внутрішніх систем. Собівартість, маржа та дані постачальників недоступні клієнтському MCP.

  2. Захист від перебору (Anti-Enumeration): Метод track_order вимагає обов'язкового збігу останніх 4 цифр телефону. Номери телефонів у відповідях маскуються (+380 50 *** ** 67).

  3. Age Gate (18+): Замовлення створюються виключно за умови явної підтвердженої згоди клієнта про досягнення повноліття (confirmed_legal_age: true).

  4. Ідемпотентність: Запобігання повторним списанням та дублюванню замовлень завдяки Idempotency-Key.


💻 Локальна розробка

# Клонування репозиторію
git clone https://github.com/pyroua/pyro-storefront-mcp.git
cd pyro-storefront-mcp

# Встановлення залежностей
npm install

# Збірка самодостатнього бандла
npm run bundle

# Локальний запуск
node dist/index.js

📄 Ліцензія

MIT License © 2026 IT1.TEAM / pyro.ua. Всі права захищені.

Available Tools

6 tools
check_stock_availabilityA

Пакетная проверка доступности товаров на складе и расчет итоговой суммы заказа перед чекаутом

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesМассив позиций для проверки

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only check/calculation, but it does not state whether stock is reserved, whether there are side effects, what error behavior exists, or what the response contains. The behavioral contract is under-specified for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence with no filler. It front-loads 'batch check' and immediately states the secondary calculation, making efficient use of space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, with one well-documented parameter array, and the description captures its core purpose. However, there is no output schema and the description does not describe the return format, which leaves some ambiguity about how availability and the total are represented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description confirms the batch context and that the tool computes an order total. It does not add much detail beyond the schema's own descriptions for 'items', 'product_id', and 'quantity', but the baseline of 3 is appropriate since the schema already documents the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource clearly: batch checking stock availability and calculating the order total before checkout. It uses specific action-like nouns ('проверка', 'расчет') and is distinct from siblings like search_fireworks or create_order, though it does not explicitly differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'перед чекаутом' ('before checkout') gives clear contextual timing and implies this is a pre-order validation step. It does not explicitly mention alternatives or exclusions, but the intended workflow is reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_orderC

Оформление заказа в pyro.ua с мгновенной ссылкой на оплату картой (Monobank) или наложенным платежом

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesГород доставки
emailNoEmail для квитанции и чека Checkbox
phoneYesКонтактный телефон в формате E.164 (например: +380971234567)
addressNoУлица и дом (для курьерской доставки)
last_nameYesФамилия получателя
cart_itemsYesСписок заказываемых товаров
first_nameYesИмя получателя
np_city_refNoRef города Новой Почты (из search_delivery_branches)
courier_flatNoНомер квартиры/офиса
delivery_typeNoТип доставкиnovaposhta
payment_methodYesСпособ оплаты: monobank (карты/Apple Pay) или cod (наложенный платёж)
idempotency_keyNoУникальный ключ запроса для предотвращения дублей
np_warehouse_refNoRef отделения/почтомата Новой Почты
confirmed_legal_ageYesПодтверждение достижения возраста 18+ лет (обязательно по закону Украины)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions an instant payment link but does not explain that a payment may be initiated, potential side effects (e.g., charges, order creation), idempotency usage, or confirmation steps. Critical behavioral context is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, very concise and front-loaded with the core purpose. However, it is under-specified, omitting critical usage and behavioral details, so the brevity comes at the cost of effectiveness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 14 parameters, no output schema, and no annotations, the description is far too minimal. It does not explain the required workflow (e.g., needing delivery refs), idempotency, legal age confirmation, or what the response contains. This is highly incomplete for a complex order creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100% for all 14 parameters, so the baseline is 3. The description adds no additional parameter meaning beyond what the schema already provides, so it stays at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Оформление) and resource (заказ в pyro.ua), and mentions the two payment methods (Monobank card link and cash on delivery). This clearly distinguishes it from sibling tools like search_fireworks or track_order, which handle other parts of the order lifecycle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives, nor on prerequisites like needing delivery references from search_delivery_branches. The description implies it's for order creation but does not specify conditions, exclusions, or required prior steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_firework_detailsA

Получить полные характеристики салюта (калибр, видео работы, время, безопасная дистанция, инструкция)

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesID товара в каталоге pyro.ua

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full transparency burden. 'Получить' implies a read-only retrieval and the field list clarifies what the agent will receive, but the description does not disclose response shape, video representation, authentication needs, or error behavior. It is not misleading, but it adds only basic behavioral context beyond the tool name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the action and resource, then lists the most relevant output fields without any filler. Every part of the sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter detail-fetch tool, the description is reasonably complete: it names the expected output fields and the schema fully covers the input. It lacks a bit of usage context and return-shape detail since there is no output schema, but nothing critical is missing for an agent to make a basic correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents product_id, including that it is an integer ID in the pyro.ua catalog, and schema coverage is 100%, so the baseline is 3. The description adds slight context by confirming the product is a firework and tying it to the returned characteristics, but it provides no additional parameter constraints or format guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Получить' / get) and a concrete resource ('полные характеристики салюта'), and it enumerates the returned characteristics: caliber, work video, time, safe distance, and instructions. It is unambiguous and easy for an agent to distinguish from sibling tools like create_order or track_order, though it does not explicitly differentiate itself from search_fireworks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool should be used when complete firework details are needed, but it provides no explicit when-to-use guidance, no mention of calling it after search_fireworks, and no exclusions versus alternatives like check_stock_availability. The usage context is only implied, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_delivery_branchesA

Поиск отделений и почтоматов Новой Почты в указанном городе для доставки заказа

ParametersJSON Schema
NameRequiredDescriptionDefault
city_nameYesНазвание населенного пункта (например: Киев, Одесса, Днепр)
branch_typeNoТип точки доставки: all (все), branch (отделения до 30+ кг), postomat (поштоматы до 20 кг)all

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of describing behavior. It only says 'search,' which implies a read-only operation, but it does not disclose whether results are returned as a list, how branch_type filtering behaves, what data is included, or any side effects. This is minimal transparency for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with the verb and object front-loaded. It contains no filler, redundant phrasing, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The operation is simple and the input schema fully documents all parameters)Skip. However, with no output schema and no annotations, the description does not explain the return format or any behavioral caveats (e.g., pagination, empty results, or availability). It is adequate for basic invocation but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both city_name and branch_type have descriptive text, including examples and enum meanings. The description adds the delivery context but no new parameter-level details beyond what the schema already provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('search'), the resource ('Nova Poshta branches and parcel lockers'), and the context ('in the specified city for order delivery'). This is specific enough to distinguish it from sibling tools like search_fireworks or create_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'для доставки заказа' gives useful context for when to use the tool, but the description does not provide explicit guidance on when not to use it or how it compares to alternatives. No exclusions or alternative tool references are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_fireworksB

Поиск пиротехники и салютов в каталоге pyro.ua по бюджету, калибру, количеству залпов и времени работы

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoТекстовый поисковый запрос (название, артикул)
pageNoНомер страницы пагинации
limitNoКоличество товаров в выдаче (до 50)
caliberNoКалибр в миллиметрах (например: 20, 25, 30, 50)
max_priceNoМаксимальная цена в гривнах (UAH)
max_shotsNoМаксимальное количество залпов/выстрелов
min_priceNoМинимальная цена в гривнах (UAH)
min_shotsNoМинимальное количество залпов/выстрелов
category_idNoID категории товаров

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It correctly implies a read-only catalog search, but it does not mention pagination, result format, or limits, and it claims search by 'operating time' (времени работы), which is not represented anywhere in the input schema. This is a misleading behavioral claim.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It states the tool's purpose and main filtering dimensions efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter search tool with no annotations and no output schema, the description is incomplete. It omits text querying, category_id, pagination parameters, default behavior, and result characteristics, while also claiming an unsupported time-based filter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds useful semantic grouping by mapping budget to price parameters, caliber to the caliber parameter, and volleys to shot counts, but it adds no syntax or format detail beyond the schema and introduces an unsupported 'operating time' criterion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: searching for pyrotechnics and fireworks in the pyro.ua catalog. It also names concrete filtering dimensions (budget, caliber, volleys), which makes it easy to distinguish from sibling tools like get_firework_details or check_stock_availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool versus alternatives such as get_firework_details or check_stock_availability. The search intent is implied by the name and description, but no when-to-use/when-not-to-use conditions or sibling comparisons are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_orderA

Отслеживание статуса готовности заказа и номера ТТН Новой Почты с защитой от перебора (DLP)

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesНомер заказа
phone_last4YesПоследние 4 цифры номера телефона получателя для верификации

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It communicates two important traits: the operation is a read-only tracking activity, and it includes 'защитой от перебора (DLP)' — protection against brute-force/attempt enumeration, signaling potential rate-limiting or verification lockouts. It doesn't specify thresholds or error modes, but the key safety behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the tool's purpose and includes the DLP caveat without redundant wording. Every element earns its place, and there is no unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with no output schema, the description sufficiently covers what the tool does (tracks readiness status) and what it provides (TTN number), while also flagging anti-brute-force behavior. An agent can correctly invoke it by passing the two required parameters and expect status and waybill information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the input schema: order_id with a positive integer constraint and phone_last4 with length 4 plus verification purpose. The description adds no additional parameter-level semantics beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Отслеживание' / tracking) and the specific resource: order readiness status and the Nova Poshta waybill number (TTN). This uniquely distinguishes it from sibling tools like get_firework_details or check_stock_availability, leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended context evident: use this tool when you need to check an order's readiness and its Nova Poshta delivery waybill. It doesn't explicitly name alternatives or exclude conditions, but none of the sibling tools overlap with this functionality, so the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedcheck_stock_availability
    • First observedcreate_order
    • First observedget_firework_details
    • First observedsearch_delivery_branches
    • First observedsearch_fireworks
    • First observedtrack_order

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool maps to a distinct stage or resource: catalogue search, item details, stock validation, delivery branch lookup, order creation, and order tracking. The only potential overlap is between search_fireworks and get_firework_details, but their purpose is clearly separated by list-level vs. detail-level access.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern: get_, search_, check_, track_, create_. This makes the toolset predictable and easy to reason about, with no mixed conventions or vague generic verbs.

Tool Count5/5

Six tools is well-scoped for a storefront server: search, details, stock, delivery, ordering, and tracking each earn their place. The surface is neither bloated nor too thin for the stated purpose.

Completeness4/5

The core customer journey is covered end-to-end: find products, inspect them, verify stock, choose a delivery branch, place an order, and track it. Minor gaps exist such as no explicit order details endpoint or cancellation flow, but agents can complete the main purchase workflow without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers