Electronics RFQ Agent
I'll now generate final output exactly
Electronics RFQ Agent
Tus ingenieros de ventas dedican de 2 a 4 horas a convertir documentos RFQ en presupuestos. Esto lo hace en segundos.
Electronics RFQ Agent es una biblioteca de Python y un CLI que lee documentos RFQ (PDF, Excel, Word), busca cada línea de pedido en el catálogo de tu ERP y genera un borrador de presupuesto. Se conecta a SAP, Epicor, Oracle y Microsoft Dynamics a través de servidores MCP, por lo que funciona con Claude, GPT-4 o cualquier framework de agentes que hable MCP.
[ Terminal recording showing erfa --help listing the quote and audit subcommands, then erfa audit printing a full fill-rate report for a five-line RFQ against the mock ERP backend ](docs/demo.gif)
Table of contents
Related MCP server: databid
Install
pip install electronics-rfq-agent-cli
# or
uv add electronics-rfq-agent-cliPara instalarlo desde el código fuente:
git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
pip install -e .
# or, with uv:
uv syncEl procesamiento de documentos RFQ (PDF, Excel, Word) llama a la API de Anthropic, así que establece ANTHROPIC_API_KEY antes de ejecutar cualquier cosa que toque un documento real:
export ANTHROPIC_API_KEY="sk-ant-..."No necesitas esta clave para ejecutar erfa audit sobre un archivo de presupuesto existente, ni para explorar el CLI con --help. Solo el procesamiento de documentos llama a Claude.
El problema que resuelve
Trabajábamos con distribuidores de electrónica que tenían de 3 a 5 ingenieros de ventas dedicando la mayor parte de su día a la introducción de presupuestos. Cada herramienta que probamos estaba atada a un ERP específico o requería un proyecto de integración de 6 meses. Queríamos algo que funcionara con lo que los distribuidores ya tenían, que pudiera alojarse en sus propias instalaciones (los datos de presupuestos son sensibles) y que fuera verdaderamente extensible.
La arquitectura MCP hace que añadir un nuevo ERP sea solo escribir un archivo. El analizador trata los formatos de documentos que realmente envían los distribuidores: PDF rellenados a mano, archivos Excel de varias hojas y alguna tabla escaneada ocasional.
Inicio rápido
No se requiere ningún sistema ERP para probarlo; el backend mock incluye 200 componentes electrónicos realistas. Sí necesitas ANTHROPIC_API_KEY definida, porque el procesamiento del documento RFQ sigue siendo una llamada real a 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 aplica automáticamente tarifas por cantidad: qty >= 1000 obtiene un 20 % de descuento, qty >= 100 obtiene un 10 % de descuento y qty >= 10 obtiene un 5 % de descuento. El precio de lista se aplica por debajo de qty 10. Esto refleja los descuentos por volumen reales, de modo que las pruebas comparativas y los tests de integración reflejan curvas de coste realistas.
Conecta con un ERP real:
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())Comandos
erfa incluye dos subcomandos. Todas las opciones siguientes están extraídas directamente de erfa --help.
Comando | Argumentos | Opciones | Qué hace |
Un comando |
|
| Analiza un archivo RFQ y imprime un borrador de presupuesto. Necesita |
|
| ninguna | Imprime un informe de auditoría completo (encontrado / sustituido / no encontrado, tasa de cobertura) para un archivo JSON de presupuesto guardado con |
| ninguna | ninguna | Lanza un servidor MCP stdio que expone |
# 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.jsonEjemplo de salida de audit (salida real generada al ejecutar erfa audit docs/example-quote.json, usando la lógica de precios del mock ERP sobre el RFQ de muestra en 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)Partes con precio cero: si una parte existe en el catálogo ERP pero tiene un precio unitario de $0.00, el agente presupuesta $0 en lugar de omitir la línea y añade un mensaje en
line.notesindicándote el precio cero para que lo detectes antes de presupuestar al cliente. Revisa enline.notescualquier línea encontrada o sustituida antes de enviar un presupuesto.
Referencia de la API
La referencia completa está en docs/api.md: cada parámetro de QuoteAgent, la interfaz común de los conectores ERP, Quote / QuoteLineItem campo a campo, y la jerarquía de excepciones. Las exportaciones siguientes son las que se obtienen de from electronics_rfq_agent import ... — tomadas de src/electronics_rfq_agent/__init__.py, no deducidas.
| Exportación | Qué es |
| --- | --- |
| `QuoteAgent` | Orquesta el procesamiento + la búsqueda en el ERP + ensamblaje del presupuesto. `run()` (async) y `run_sync()`. |
| `EpicorMCP`, `SAPMCP`, `OracleMCP`, `DynamicsMCP` | Conectores ERP, uno por cada sistema soportado. Todos implementan la misma interfaz `search_parts` / `get_part` / `get_price` / `check_inventory`. |
| `MockERP` (de `electronics_rfq_agent.mcp.mock`) | Backint en memoria con 200 partes realistas. Sin credenciales, sin red. |
| `Quote`, `QuoteLineItem`, `RFQLineItem`, `ERPPartResult`, `ERPConfig` | Modelos Pydantic v2 para el presupuesto, cada línea, la línea RFQ procesada, los datos ERP crudos y la configuración del conector. |
| `ERPConnectionError`, `RFQParseError` | Las dos excepciones que `QuoteAgent` puede lanzar: errores de conexión/autenticación y documentos ilegibles. Los errores por línea no se lanzan, sino que van en `line.notes`. |
| `TelemetryCollector`, `TelemetryEvent` | Telemetría local opcional (`telemetry=True` en `QuoteAgent`), solo cuentaos y tiempos, sin contenido RFQ. |Cómo se diferencia de las alternativas
| Electronics RFQ Agent | Proceso manual | SAP Joule | Generic AI (ChatGPT) |
| --- | --- | --- | --- |
| Soporte de múltiples ERP | SAP + Epicor + Oracle + Dynamics | N/D | Centrado en SAP (Joule Studio puede acceder a fuentes no SAP vía SAP Integration Suite) | Sin acceso a ERP |
| Tiempo de presupuesto (50 líneas) | \~15 s | 2-4 horas | No documentado públicamente | N/D |
| Alojable en su propio servidor | Sí | N/D | No (servicio en la nube SAP BTP) | No |
| Los datos permanecen locales | Sí | Sí | No | No |
| Código abierto | MIT | N/D | No | No |
| Backend mock de desarrollo | Sí | N/D | No documentado públicamente | N/D |
| Compatible con MCP | Sí | N/D | No documentado públicamente | No |Compatibilidad con ERP
ERP | Estado | Conexión | Documentación |
Epicor Kinetic | Compatible | REST API | |
SAP ECC / S/4HANA | Beta (instalación manual) | PyRFC (BAPI) | |
Oracle Cloud SCM | Compatible | REST API | |
Microsoft Dynamics 365 | Compatible | Graph API | |
Backend mock | Integrado | En memoria | No se necesita configuración |
Nota SAP: pyrfc requiere la biblioteca SAP NetWeaver RFC (SAP NW RFC) que no está en PyPI y debe descargarse manualmente desde el portal de soporte de SAP (se requiere una cuenta con usuario S). Consulta docs/erp-setup/sap.md para instrucciones paso a paso.
Benchmarks
Medido con el backend mock en memoria (200 componentes realistas, no se necesita sistema ERP). Puedes ejecutarlo con el comando:
git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
uv run python benchmarks/run.pyLatencia de búsqueda en ERP (100 búsquedas individuales, backend mock):
P50 | P99 | Media |
0.00025 ms | 0.0023 ms | 0.00032 ms |
Tiempo de ensamblaje de un presupuesto por tamaño de RFQ (parser simulado, sin llamada a la API Anthropic):
Tamaño RFQ | Tiempo de ensamblaje |
10 líneas | 0.004 s |
25 líneas | 0.001 s |
50 líneas | 0.001 s |
Estos valores cubren solo la búsqueda en el ERP y el ensamblaje del presupuesto. El analizador RFQ está simulado. En producción, el procesamiento inteligente del documento añade 5–15 s por documento y las búsquedas reales en el ERP añaden 100–500 ms por línea (paralelizadas con el límite max_concurrent=10), lo que da un total realista de aproximadamente 15 s para un RFQ de 50 líneas. Línea base manual: 2–4 horas.
Integración con cualquier framework
Electronics RFQ Agent funciona con cualquier framework de agentes que soporte MCP:
Framework | Instalación | Ejemplo |
Claude (integrado) |
| |
LangGraph |
| |
OpenAI Agents SDK |
| |
CrewAI |
| n/a |
Pruébalo en 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 -dTus datos de cotización nunca salen de tu entorno.
Seguridad
Escaneo de vulnerabilidades: Trivy escanea cada ejecución de CI (gravedad ALTA/CRÍTICA, la compilación falla si hay hallazgos sin corregir), los resultados se suben a la pestaña de Seguridad de GitHub.
Firma de versiones: el flujo de trabajo de versiones firma las ruedas y sdists compiladas con Sigstore y adjunta un SBOM CycloneDX a cada versión de GitHub una vez que se etiqueta una versión.
Fijación de dependencias: Dependabot mantiene actualizadas las dependencias de GitHub Actions y Python (actualizaciones de parches semanales, actualizaciones mensuales de Actions).
Divulgación: SECURITY.md. Informa de vulnerabilidades de forma privada mediante correo electrónico o avisos de seguridad de GitHub; acuse de recibo en 48 horas, divulgación responsable en 90 días.
Preguntas frecuentes
¿Qué hace realmente Electronics RFQ Agent? Toma un documento de RFQ (PDF, Excel o Word) de un cliente, extrae cada línea de pedido con Claude, busca cada pieza en tu catálogo de ERP a través de un conector MCP y devuelve un borrador de cotización con precio y margen aplicado. Un ingeniero de ventas lo revisa y lo envía en lugar de crearlo desde cero.
¿Está listo para producción? Está en Beta (v0.2.x). La biblioteca principal y los conectores de Epicor, Oracle y Dynamics están cubiertos por CI (lint, mypy estricto, pytest con un umbral de cobertura del 80 %, escaneo de Trivy) en Python 3.10-3.12. El soporte de SAP está marcado explícitamente como Beta y requiere un paso de instalación manual (la biblioteca SAP NetWeaver RFC no está en PyPI).
¿Necesito un sistema ERP para probarlo?
No. MockERP incluye 200 piezas electrónicas realistas y aplica niveles de precios basados en la cantidad, por lo que puedes ejecutar el flujo completo de análisis, búsqueda y cotización sin credenciales de ERP. Aún así necesitas ANTHROPIC_API_KEY, ya que el análisis de documentos es una llamada real a Claude. Solo erfa audit (leer un archivo de cotización ya guardado) funciona sin ninguna clave.
¿En qué se diferencia de pedirle a ChatGPT que lea la RFQ? Un modelo de chat genérico puede leer un documento e incluso adivinar precios, pero no tiene conexión con tu catálogo de ERP real, tu inventario ni tus precios de contrato, por lo que se inventa los números. Electronics RFQ Agent busca cada línea de pedido en tus datos de catálogo reales y solo cotiza lo que realmente está en stock al precio de coste real más tu margen configurado.
¿En qué se diferencia de SAP Joule? Joule es el conjunto de asistentes de IA propietario de SAP, integrado en la plataforma en la nube de SAP (SAP BTP) y centrado en los datos de SAP. Electronics RFQ Agent tiene licencia MIT, se autoalojeda y funciona con SAP, Epicor, Oracle y Dynamics a través de la misma interfaz MCP. Tus datos de cotización nunca tienen que salir de tu entorno y no estás atado a un único proveedor de ERP.
¿Cómo llamo a esto desde un agente en lugar de desde la CLI?
Ejecuta erfa mcp para lanzar un servidor MCP stdio que expone quote_rfq, lookup_part y audit_quote como herramientas tipadas. Apunta cualquier cliente compatible con MCP (Claude, GPT-4, Gemini o un framework de agentes personalizado) a erfa mcp como comando de lanzamiento, y podrá llamar a esas herramientas directamente con JSON estructurado de entrada y salida, sin necesidad de analizar la salida de la CLI.
¿Qué formatos de documento analiza?
PDF (incluidas tablas escaneadas, mediante la capacidad de visión de Claude), Excel (.xlsx/.xls, busca en todas las hojas de cálculo la fila de encabezado de las líneas de pedido) y Word (.docx, lee todas las tablas). Las RFQ en texto plano también funcionan.
¿Qué ocurre con una línea de pedido que no está en el catálogo de ERP?
Se marca como not_found con una nota que explica el motivo (en lugar de descartarse silenciosamente o adivinarse) y se excluye del total de la cotización. Ejecuta erfa audit sobre el JSON de la cotización guardada para ver exactamente qué líneas se encontraron, se sustituyeron o faltan, y por qué.
¿Puedo usarlo comercialmente? Sí. Tiene licencia MIT, por lo que puedes usarlo, modificarlo y distribuirlo comercialmente sin regalías ni obligación de abrir tu código. Solo se requiere la atribución mediante el archivo de licencia.
¿Se envían mis datos de RFQ y precios a algún lugar además de Anthropic? Solo el contenido del documento de RFQ se envía a la API de Anthropic para su análisis. Las búsquedas en el ERP van directamente desde tu máquina a tu sistema de ERP a través del conector que configures: no hay ningún servicio intermediario y no se almacena nada fuera de tu propio entorno, salvo que decidas guardar el JSON de la cotización tú mismo.
¿Está publicado en PyPI?
Sí, como electronics-rfq-agent-cli (pip install electronics-rfq-agent-cli). El pipeline de publicación (compilación, firma de Sigstore, SBOM, carga de editor de confianza) vive en .github/workflows/release.yml y se ejecuta en cada push de etiqueta v*. La ruta de importación de Python (electronics_rfq_agent) y el comando CLI erfa no cambian; solo el nombre del paquete orientado al registro lleva el sufijo -cli, siguiendo la convención de nombres de este mantenedor para herramientas CLI.
Contribuciones
Lee CONTRIBUTING.md antes de abrir una PR
Los primeros problemas buenos están etiquetados en GitHub
Los adaptadores de ERP viven en
electronics_rfq_agent/mcp/; cada uno es un archivo autocontenido sin cambios en el núcleoTodas las PR requieren un 80 % de cobertura de pruebas
Discusiones de GitHub: Haz preguntas, comparte ideas Discord: próximamente
Documentación completa: Primeros pasos · Referencia de API · Configuración de ERP: Epicor · SAP · Oracle · Dynamics 365 · Registro de cambios
MIT. Las contribuciones son bienvenidas.
Licencia
MIT. Consulta LICENSE.
Cita este trabajo
Si utilizas Electronics RFQ Agent en investigación, cítalo por favor:
@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}
}Creado por Rudrendu Paul y Sourav Nandy
This server cannot be installed
Maintenance
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 gradedqualityAmaintenanceThis MCP server enables AI agents to understand and analyze electrical schematics from Cadence and Altium for comprehensive design reviews through natural conversations.59631Apache 2.0
- AlicenseNot gradedqualityBmaintenanceA 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
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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