Electronics RFQ Agent
Electronics RFQ Agent
Ваши инженеры по продажам тратят 2–4 часа на превращение документов RFQ в котировки. Этот инструмент делает это за секунды.
Electronics RFQ Agent — это библиотека Python и CLI, которая читает документы RFQ (PDF, Excel, Word), сопоставляет каждую позицию с вашим каталогом ERP и формирует проект котировки. Он подключается к SAP, Epicor, Oracle и Microsoft Dynamics через MCP-серверы, поэтому работает с Claude, GPT-4 или любой агентной средой, поддерживающей MCP.

Содержание
Related MCP server: databid
Установка
pip install electronics-rfq-agent-cli
# or
uv add electronics-rfq-agent-cliЧтобы установить из исходного кода:
git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
pip install -e .
# or, with uv:
uv syncРазбор документов RFQ (PDF, Excel, Word) требует вызова Anthropic API, поэтому установите ANTHROPIC_API_KEY перед запуском любых операций с реальными документами:
export ANTHROPIC_API_KEY="sk-ant-..."Этот ключ не нужен для запуска erfa audit с существующим файлом котировки или для изучения CLI с помощью --help. Только разбор документов обращается к Claude.
Какую проблему это решает
Мы работали с дистрибьюторами электроники, у которых 3–5 инженеров по продажам проводили большую часть дня за вводом котировок. Каждый инструмент, который мы находили, был либо привязан к конкретной ERP, либо требовал шестимесячного проекта по интеграции. Мы хотели решение, которое работает с тем, что уже есть у дистрибьюторов, может быть развернуто на собственном сервере (данные котировок чувствительны) и действительно расширяемо.
Архитектура MCP означает, что добавление новой ERP — это написание одного файла. Парсер обрабатывает те форматы документов, которые дистрибьюторы действительно отправляют: заполненные вручную PDF, многостраничные Excel-файлы и иногда отсканированные таблицы.
Быстрый старт
Для тестирования не требуется ERP-система; мок-бэкенд поставляется с 200 реалистичными позициями электроники. Вам нужно установить ANTHROPIC_API_KEY, так как разбор документа RFQ по-прежнему выполняется через реальный вызов Claude:
from electronics_rfq_agent import QuoteAgent
from electronics_rfq_agent.mcp.mock import MockERP
agent = QuoteAgent(erp=MockERP())
quote = agent.run_sync("path/to/rfq.xlsx")
for line in quote.lines:
print(f"{line.rfq_line.part_number}: {line.status} @ {line.unit_price}")
print(quote.summary())MockERP автоматически применяет уровни ценообразования в зависимости от количества: кол-во >= 1000 дает скидку 20%, кол-во >= 100 — 10%, кол-во >= 10 — 5%. Для количества менее 10 применяется цена из прайс-листа. Это отражает реальное оптовое ценообразование, чтобы бенчмарки и интеграционные тесты отражали реалистичные кривые затрат.
Подключение к реальной ERP:
from electronics_rfq_agent import QuoteAgent
from electronics_rfq_agent.mcp import EpicorMCP
agent = QuoteAgent(
erp=EpicorMCP(base_url="https://your-epicor.company.com", api_key="..."),
max_concurrent=10, # parallel ERP lookups (default: 10)
)
quote = agent.run_sync("rfq_2026_0619.xlsx")
print(quote.summary())Команды
erfa поставляется с двумя подкомандами. Все флаги ниже взяты из erfa --help.
Команда | Аргументы | Флаги | Что делает |
|
|
| Разбирает файл RFQ и выводит проект котировки. Требуется |
|
| нет | Выводит полный отчет аудита (найдено / заменено / не найдено, процент заполнения) для JSON-файла котировки, сохраненного с помощью |
| нет | нет | Запускает MCP stdio-сервер, предоставляющий |
# Generate a quote from an RFQ file against the mock ERP
export ANTHROPIC_API_KEY="sk-ant-..."
erfa quote rfq.xlsx --mock
# Save the quote as JSON for later inspection
erfa quote rfq.xlsx --mock --output quote.json
# Audit what happened: what was found, substituted, or missing and why
erfa audit quote.jsonПример вывода аудита (реальный вывод erfa audit docs/example-quote.json, сгенерированный применением логики ценообразования мок-бэкенда к образцу RFQ из tests/fixtures/sample_rfq.txt):
Audit Report - Quote df9fd083
RFQ Source : tests/fixtures/sample_rfq.txt
Lines : 5
Total : USD 64.04
FOUND (4)
------------------------------------------------------------
L 1 RES-0402-10K-1PCT qty=1000 unit=0.0064 ext=6.40
L 2 CAP-100NF-50V-X7R-0402 qty=500 unit=0.0104 ext=5.20
L 3 IC-LM358-SOIC8 qty=50 unit=0.7101 ext=35.50
L 4 XTAL-16MHZ-SMD qty=25 unit=0.6774 ext=16.94
NOT FOUND (1)
------------------------------------------------------------
L 5 MOSFET-NMOS-20V-3A-SOT23 Part 'MOSFET-NMOS-20V-3A-SOT23' not found in ERP catalog
Fill rate: 80% (4 found / 0 substituted / 1 not found)Позиции с нулевой ценой: Если позиция существует в каталоге ERP, но имеет цену за единицу $0.00, агент укажет цену $0, а не пропустит позицию, и установит
line.notesв сообщение, указывающее на нулевую цену, чтобы вы заметили это до отправки котировки клиенту. Проверяйтеline.notesдля любой найденной или замененной позиции перед отправкой котировки.
Справочник по API
Полная документация находится в docs/api.md: все параметры QuoteAgent, общий интерфейс ERP-коннектора, детальное описание полей Quote/QuoteLineItem и иерархия исключений. Экспорты ниже — это то, что на самом деле дает from electronics_rfq_agent import ..., взятое из src/electronics_rfq_agent/__init__.py, а не предположительное:
Экспорт | Что это |
| Оркестрирует разбор + поиск в ERP + сборку котировки. |
| ERP-коннекторы, по одному на каждую поддерживаемую систему. Все реализуют один и тот же интерфейс |
| Внутрипроцессный бэкенд с 200 реалистичными позициями. Без учетных данных и сети. |
| Pydantic v2 модели для котировки, каждой позиции, разобранной строки RFQ, необработанных данных ERP и конфигурации коннектора. |
| Два исключения, которые может вызвать |
| Дополнительная локальная телеметрия ( |
Чем отличается от альтернатив
Electronics RFQ Agent | Ручной процесс | SAP Joule | Универсальный ИИ (ChatGPT) | |
Поддержка нескольких ERP | SAP + Epicor + Oracle + Dynamics | Н/Д | Ориентирован на SAP (Joule Studio может получать доступ к не-SAP источникам через SAP Integration Suite) | Нет доступа к ERP |
Время формирования котировки (50 позиций) | ~15 сек | 2-4 часа | Публично не задокументировано | Н/Д |
Возможность саморазмещения | Да | Н/Д | Нет (облачный сервис SAP BTP) | Нет |
Данные остаются локальными | Да | Да | Нет | Нет |
Открытый исходный код | MIT | Н/Д | Нет | Нет |
Мок-бэкенд для разработки | Да | Н/Д | Публично не задокументировано | Н/Д |
MCP-совместимость | Да | Н/Д | Публично не задокументировано | Нет |
Поддержка ERP
ERP | Статус | Подключение | Документация |
Epicor Kinetic | Поддерживается | REST API | |
SAP ECC / S/4HANA | Бета (ручная установка) | PyRFC (BAPI) | |
Oracle Cloud SCM | Поддерживается | REST API | |
Microsoft Dynamics 365 | Поддерживается | Graph API | |
Мок-бэкенд | Встроенный | In-memory | Конфигурация не требуется |
Примечание по SAP: для pyrfc требуется SAP NetWeaver RFC Library, которой нет на PyPI, и ее необходимо загрузить вручную с портала поддержки SAP (требуется S-пользователь). См. docs/erp-setup/sap.md для пошаговых инструкций.
Бенчмарки
Измерено с использованием внутрипроцессного мок-бэкенда (200 реалистичных позиций, ERP-система не требуется). Запустите сами:
git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
uv run python benchmarks/run.pyЗадержка поиска в ERP (100 отдельных запросов, мок-бэкенд):
P50 | P99 | Среднее |
0.00025мс | 0.0023мс | 0.00032мс |
Время сборки котировки в зависимости от размера RFQ (парсер замокан, вызовов Anthropic API нет):
Размер RFQ | Время сборки |
10 позиций | 0.004с |
25 позиций | 0.001с |
50 позиций | 0.001с |
Эти цифры покрывают только поиск в ERP и сборку котировки. Парсер RFQ замокан, и вызовов Anthropic API не выполняется. В производственной среде ИИ-разбор документов добавляет 5–15 секунд на документ, а реальные ERP-запросы — 100–500 мс на позицию (распараллеливание до max_concurrent=10), что в сумме дает реалистичные ~15 секунд для RFQ из 50 позиций. Базовый ручной процесс: 2–4 часа.
Матрица интеграций
Electronics RFQ Agent работает с любой агентной средой, поддерживающей MCP:
Framework | Install | Example |
Claude (встроенный) |
| |
LangGraph |
| |
OpenAI Agents SDK |
| |
CrewAI |
| n/a |
Попробуйте в Docker
git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
cp .env.example .env # add your ERP credentials and Anthropic API key
docker compose up -dВаши данные котировок никогда не покидают вашу среду.
Безопасность
Сканирование уязвимостей: Trivy сканирует каждый запуск CI (уровень серьезности HIGH/CRITICAL, сборка завершается ошибкой при неисправленных находках), результаты загружаются на вкладку GitHub Security.
Подпись релизов: рабочий процесс релиза подписывает собранные wheels и sdists с помощью Sigstore и прикрепляет CycloneDX SBOM к каждому GitHub Release после создания тега версии.
Фиксация зависимостей: Dependabot поддерживает актуальность GitHub Actions и зависимостей Python (еженедельные обновления патчей, ежемесячные обновления Actions).
Раскрытие информации: SECURITY.md. Сообщайте об уязвимостях конфиденциально по электронной почте или через GitHub Security Advisories; подтверждение в течение 48 часов, ответственное раскрытие в течение 90 дней.
FAQ
Что именно делает Electronics RFQ Agent? Он принимает документ RFQ (PDF, Excel или Word) от клиента, извлекает каждую позицию с помощью Claude, ищет каждую деталь в вашем каталоге ERP через коннектор MCP и возвращает черновую котировку с примененной наценкой. Инженер по продажам проверяет и отправляет её вместо того, чтобы создавать с нуля.
Готов ли он к производственному использованию? Он находится в статусе Beta (v0.2.x). Основная библиотека, коннекторы Epicor, Oracle и Dynamics покрыты CI (lint, mypy strict, pytest с порогом покрытия 80%, сканирование Trivy) для Python 3.10–3.12. Поддержка SAP явно помечена как Beta и требует ручного шага установки (библиотека SAP NetWeaver RFC недоступна на PyPI).
Нужна ли мне ERP-система, чтобы попробовать его?
Нет. MockERP поставляется с 200 реалистичными электронными компонентами и применяет ценовые уровни на основе количества, так что вы можете запустить полный цикл «разбор-поиск-котировка» без учетных данных ERP. Вам всё равно понадобится ANTHROPIC_API_KEY, поскольку разбор документов — это реальный вызов Claude. Только erfa audit (чтение уже сохраненного файла котировки) работает вообще без ключа.
Чем это отличается от того, чтобы просто попросить ChatGPT прочитать RFQ? Обычная чат-модель может прочитать документ и даже предположить цены, но у неё нет подключения к вашему фактическому каталогу ERP, складским остаткам или контрактным ценам, поэтому она просто выдумывает цифры. Electronics RFQ Agent ищет каждую позицию в ваших реальных данных каталога и котирует только то, что действительно есть на складе, по фактической себестоимости плюс ваша настроенная наценка.
Чем это отличается от SAP Joule? Joule — это проприетарный ИИ-ассистент SAP, встроенный в облачную платформу SAP (SAP BTP) и ориентированный на данные SAP. Electronics RFQ Agent имеет лицензию MIT, размещается самостоятельно и работает с SAP, Epicor, Oracle и Dynamics через один и тот же интерфейс MCP. Ваши данные котировок никогда не покидают вашу среду, и вы не привязаны к одному вендору ERP.
Как мне вызвать это из агента вместо CLI?
Запустите erfa mcp, чтобы поднять MCP-сервер stdio, предоставляющий quote_rfq, lookup_part и audit_quote как типизированные инструменты. Укажите любого MCP-совместимого клиента (Claude, GPT-4, Gemini или пользовательский агентский фреймворк) на erfa mcp как команду запуска, и он сможет вызывать эти инструменты напрямую со структурированным JSON на входе и выходе, без необходимости разбирать вывод CLI.
Какие форматы документов он разбирает?
PDF (включая отсканированные таблицы, через возможности зрения Claude), Excel (.xlsx/.xls, ищет по всем листам строку заголовка позиций) и Word (.docx, читает все таблицы). Обычные текстовые RFQ тоже работают.
Что происходит с позицией, которой нет в каталоге ERP?
Она помечается как not_found с пояснением причины (а не молча отбрасывается или угадывается), и она исключается из итоговой суммы котировки. Запустите erfa audit на сохранённом JSON котировки, чтобы увидеть, какие именно позиции были найдены, заменены или отсутствуют, и почему.
Могу ли я использовать это в коммерческих целях? Да. Лицензия MIT, поэтому вы можете использовать, модифицировать и распространять его в коммерческих целях без роялти и без обязательства открывать исходный код ваших изменений. Атрибуция требуется только через файл лицензии.
Отправляются ли мои данные RFQ и ценообразования куда-либо помимо Anthropic? Только содержимое документа RFQ отправляется в API Anthropic для разбора. Поиск в ERP идёт напрямую с вашей машины в вашу ERP-систему через настроенный вами коннектор: никакого промежуточного сервиса нет, и ничего не хранится за пределами вашей среды, если вы сами не решите сохранить JSON котировки.
Опубликован ли он на PyPI?
Да, как electronics-rfq-agent-cli (pip install electronics-rfq-agent-cli). Конвейер публикации (сборка, подпись Sigstore, SBOM, загрузка через trusted publisher) находится в .github/workflows/release.yml и запускается при каждом push тега v*. Путь импорта Python (electronics_rfq_agent) и команда CLI (erfa) не изменились; только имя пакета для реестра несёт суффикс -cli, что соответствует соглашению об именовании CLI-инструментов этого мейнтейнера.
Участие в разработке
Прочтите CONTRIBUTING.md перед открытием PR
Хорошие первые задачи помечены в GitHub
Адаптеры ERP находятся в
electronics_rfq_agent/mcp/; каждый представляет собой самодостаточный файл без изменений в ядреВсе PR требуют покрытия тестами 80%
GitHub Discussions: Задавайте вопросы, делитесь идеями Discord: скоро
Полная документация: Начало работы · Справочник API · Настройка ERP: Epicor · SAP · Oracle · Dynamics 365 · Журнал изменений
Лицензия MIT. Вклад приветствуется.
Лицензия
MIT. См. LICENSE.
Цитирование
Если вы используете Electronics RFQ Agent в исследованиях, пожалуйста, цитируйте:
@software{paul2026electronicsrfq,
author = {Paul, Rudrendu and Nandy, Sourav},
title = {Electronics RFQ Agent: AI Quoting Agent for Electronics Distributors},
year = {2026},
url = {https://github.com/RudrenduPaul/electronics-rfq-agent},
license = {MIT}
}Создано Rudrendu Paul и Sourav Nandy
This server cannot be deployed
Maintenance
Related MCP Connectors
Let AI agents query data and act across all your business apps via MCP.
AI agent platform: manage leads, conversations, bots, calendar and CRM via MCP.
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
Agent-native supply network for components, fabrication, industrial RFQs, offers, and fulfillment.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceIntelligently generates cost estimates and lead times for manufacturing RFPs by parsing requests, matching against historical quotes, and calculating activity-based costs with confidence scoring and human approval workflows.-
- AlicenseNot gradedqualityDmaintenanceAgent-native company intelligence. AI agents search and retrieve structured, verified company context (certifications, capabilities, capacity, lead times) for manufacturing & supply chain via 5 MCP tools.MIT
- AlicenseNot gradedqualityDmaintenanceA FastMCP runtime that lets AI tools search electronic components, prices, and availability across the Distrify distributor network through one connection, federating queries across accessible distributors.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that automates the procurement workflow, including RFQ generation, quote parsing, ERP item loading, and purchase requisition submission with human-in-the-loop approval gates.MIT