Skip to main content
Glama
RudrenduPaul

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.

CI PyPI version Python 3.10+ License: MIT OpenSSF Scorecard


Терминал, показывающий erfa --help со списком подкоманд quote и audit, а затем erfa audit, выводящий полный отчет о проценте заполнения для RFQ из пяти позиций с использованием мок-бэкенда ERP

Содержание

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.

Команда

Аргументы

Флаги

Что делает

erfa quote

rfq (путь, обязательно)

--mock, --margin <float> (по умолчанию 0.15), --output/-o <путь>

Разбирает файл RFQ и выводит проект котировки. Требуется ANTHROPIC_API_KEY; разбор всегда выполняется через Claude, --mock заменяет только ERP-бэкенд.

erfa audit

quote_file (путь, обязательно)

нет

Выводит полный отчет аудита (найдено / заменено / не найдено, процент заполнения) для JSON-файла котировки, сохраненного с помощью erfa quote --output. Читает только локальный файл, API-ключ не требуется.

erfa mcp

нет

нет

Запускает MCP stdio-сервер, предоставляющий quote_rfq, lookup_part и audit_quote в качестве типизированных инструментов, чтобы любой MCP-совместимый агент (Claude, GPT-4, Gemini) мог вызывать их напрямую, не обращаясь к CLI. Укажите в конфигурации вашего MCP-клиента команду erfa mcp.

# 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, а не предположительное:

Экспорт

Что это

QuoteAgent

Оркестрирует разбор + поиск в ERP + сборку котировки. run() (асинхронный) и run_sync().

EpicorMCP, SAPMCP, OracleMCP, DynamicsMCP

ERP-коннекторы, по одному на каждую поддерживаемую систему. Все реализуют один и тот же интерфейс search_parts / get_part / get_price / check_inventory.

MockERP (из electronics_rfq_agent.mcp.mock)

Внутрипроцессный бэкенд с 200 реалистичными позициями. Без учетных данных и сети.

Quote, QuoteLineItem, RFQLineItem, ERPPartResult, ERPConfig

Pydantic v2 модели для котировки, каждой позиции, разобранной строки RFQ, необработанных данных ERP и конфигурации коннектора.

ERPConnectionError, RFQParseError

Два исключения, которые может вызвать QuoteAgent: ошибки подключения/аутентификации и неразбираемые документы. Построчные ошибки ERP не вызывают исключений; вместо этого они попадают в line.notes.

TelemetryCollector, TelemetryEvent

Дополнительная локальная телеметрия (telemetry=True в QuoteAgent), только счетчики и тайминги, без содержимого RFQ.

Чем отличается от альтернатив

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 (встроенный)

pip install electronics-rfq-agent-cli

01-basic-quote

LangGraph

pip install 'electronics-rfq-agent-cli[langgraph]'

04-langgraph-agent

OpenAI Agents SDK

pip install electronics-rfq-agent-cli[agents]

05-openai-agents

CrewAI

pip install electronics-rfq-agent-cli[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

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
1dResponse time
0dRelease cycle
4Releases (12mo)
Commit activity

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Intelligently 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.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Agent-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
  • A
    license
    Not graded
    quality
    A
    maintenance
    This MCP server enables AI agents to understand and analyze electrical schematics from Cadence and Altium for comprehensive design reviews through natural conversations.
    596
    31
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    A 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

View all related MCP servers

Related MCP Connectors

  • Electronic component sourcing, BOM management, and PCB design workflows.

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.

View all MCP Connectors

Latest Blog Posts

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/RudrenduPaul/electronics-rfq-agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server