Pyro Storefront MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Pyro Storefront MCP ServerПідбери салют до 3500 грн, калібр від 30 мм, від 30 пострілів."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Pyro Storefront MCP Server 🎆
Офіційний клієнтський 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.jsonWindows:
%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)
Інструмент | Опис |
| Пошук піротехніки за бюджетом, калібром (мм), кількістю пострілів та ключовими словами |
| Детальні ТТХ товару: опис, фото, відео роботи, безпечна дистанція, інструкція |
| Пакетна перевірка залишків на складі та розрахунок підсумкової вартості |
| Пошук відділень і поштоматів Нової Пошти в обраному місті України |
| Оформлення роздрібного замовлення з генерацією захищеного посилання на оплату Monobank |
| Перевірка статусу замовлення та ТТН за номером замовлення та 4 останніми цифрами телефону |
💬 Приклади запитів для вашого AI-асистента
«Підбери салют на день народження до 3500 грн, від 30 мм калібру, не менше ніж на 30 пострілів. Покажи відео та ціну.»
«Знайди поштомати Нової Пошти у Києві біля станції метро Мінська.»
«Оформи замовлення на салют №508 на ім'я Ігор Шульга (+380501234567) з доставкою до поштомату №1263 у Києві. Мені є 18 років.»
«Який статус мого замовлення №72901? Мій номер закінчується на 4567.»
🛡️ Безпека та захист даних (Enterprise Gold Standard)
DLP & Нульовий витік комерційної таємниці: Сервер має сувору ізоляцію від внутрішніх систем. Собівартість, маржа та дані постачальників недоступні клієнтському MCP.
Захист від перебору (Anti-Enumeration): Метод
track_orderвимагає обов'язкового збігу останніх 4 цифр телефону. Номери телефонів у відповідях маскуються (+380 50 *** ** 67).Age Gate (18+): Замовлення створюються виключно за умови явної підтвердженої згоди клієнта про досягнення повноліття (
confirmed_legal_age: true).Ідемпотентність: Запобігання повторним списанням та дублюванню замовлень завдяки
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📄 Ліцензія
Available Tools
6 toolscheck_stock_availabilityA
Пакетная проверка доступности товаров на складе и расчет итоговой суммы заказа перед чекаутом
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Массив позиций для проверки |
TDQS
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.
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.
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.
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.
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.
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) или наложенным платежом
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | Город доставки | |
| No | Email для квитанции и чека Checkbox | ||
| phone | Yes | Контактный телефон в формате E.164 (например: +380971234567) | |
| address | No | Улица и дом (для курьерской доставки) | |
| last_name | Yes | Фамилия получателя | |
| cart_items | Yes | Список заказываемых товаров | |
| first_name | Yes | Имя получателя | |
| np_city_ref | No | Ref города Новой Почты (из search_delivery_branches) | |
| courier_flat | No | Номер квартиры/офиса | |
| delivery_type | No | Тип доставки | novaposhta |
| payment_method | Yes | Способ оплаты: monobank (карты/Apple Pay) или cod (наложенный платёж) | |
| idempotency_key | No | Уникальный ключ запроса для предотвращения дублей | |
| np_warehouse_ref | No | Ref отделения/почтомата Новой Почты | |
| confirmed_legal_age | Yes | Подтверждение достижения возраста 18+ лет (обязательно по закону Украины) |
TDQS
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.
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.
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.
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.
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.
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
Получить полные характеристики салюта (калибр, видео работы, время, безопасная дистанция, инструкция)
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | ID товара в каталоге pyro.ua |
TDQS
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.
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.
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.
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.
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.
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
Поиск отделений и почтоматов Новой Почты в указанном городе для доставки заказа
| Name | Required | Description | Default |
|---|---|---|---|
| city_name | Yes | Название населенного пункта (например: Киев, Одесса, Днепр) | |
| branch_type | No | Тип точки доставки: all (все), branch (отделения до 30+ кг), postomat (поштоматы до 20 кг) | all |
TDQS
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.
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.
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.
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.
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.
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 по бюджету, калибру, количеству залпов и времени работы
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Текстовый поисковый запрос (название, артикул) | |
| page | No | Номер страницы пагинации | |
| limit | No | Количество товаров в выдаче (до 50) | |
| caliber | No | Калибр в миллиметрах (например: 20, 25, 30, 50) | |
| max_price | No | Максимальная цена в гривнах (UAH) | |
| max_shots | No | Максимальное количество залпов/выстрелов | |
| min_price | No | Минимальная цена в гривнах (UAH) | |
| min_shots | No | Минимальное количество залпов/выстрелов | |
| category_id | No | ID категории товаров |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Номер заказа | |
| phone_last4 | Yes | Последние 4 цифры номера телефона получателя для верификации |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v1.0.0- First observed
check_stock_availability - First observed
create_order - First observed
get_firework_details - First observed
search_delivery_branches - First observed
search_fireworks - First observed
track_order
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Ukraine payments for AI agents — LiqPay cards / Apple Pay via LiqPay. Never holds funds.
AI-agent product catalog: search, lookup & purchase routing over verified merchant data.
Agentic commerce gateway: discovery, search, checkout across Shopify/Woo/Odoo/PrestaShop.
Product search for AI agents: Amazon + Shopify, cart-to-checkout buy path. Pay-per-call, no API key.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to accept payments in Ukraine via LiqPay (cards, Apple Pay, Google Pay). Provides tools to create hosted checkout links and query payment status.MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to browse product catalogs, search products with filters, and initiate checkouts, generating order summaries and checkout URLs.-
- AlicenseAqualityAmaintenanceEnables AI assistants to search real products, purchase with user approval, track deliveries, and run a seller business end to end via the Firestarter commerce platform.8987 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables product discovery, session-scoped carts, and confirmation-gated checkout through natural language, with deterministic routing and safety features.7 npmISC