Electronics RFQ Agent
Electronics RFQ Agent
您的销售工程师需要花费 2-4 小时将 RFQ 文档转化为报价。这个工具只需几秒钟。
Electronics RFQ Agent 是一个 Python 库和 CLI 工具,可读取 RFQ 文档(PDF、Excel、Word),将每个行项目与您的 ERP 目录进行匹配,并输出报价草稿。它通过 MCP 服务器连接 SAP、Epicor、Oracle 和 Microsoft Dynamics,因此可以与 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 检查现有报价文件,或使用 --help 浏览 CLI 时,不需要此密钥。只有文档解析才会调用 Claude。
此工具解决的问题
我们曾与电子元器件分销商合作,他们有 3-5 名销售工程师,大部分时间都花在报价录入上。我们找到的每个工具要么绑定特定 ERP,要么需要 6 个月的集成项目。我们想要一个能与分销商现有系统配合、可自托管(报价数据很敏感)且真正可扩展的工具。
MCP 架构意味着新增一个 ERP 只需编写一个文件。解析器能处理分销商实际发送的文档格式:手填 PDF、多工作表 Excel 文件,以及偶尔出现的扫描表格。
快速上手
试用无需任何 ERP 系统;mock 后端自带 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 文件并打印报价草稿。需要 |
|
| 无 | 针对使用 |
| 无 | 无 | 启动一个 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 的真实输出,通过对 tests/fixtures/sample_rfq.txt 中的示例 RFQ 运行 mock ERP 的定价逻辑生成):
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 个真实零件。无需凭据,无需网络。 |
| 用于报价、每个行项目、解析后的 RFQ 行、原始 ERP 数据和连接器配置的 Pydantic v2 模型。 |
|
|
| 可选的本机遥测(在 |
与替代方案的区别
Electronics RFQ Agent | 人工流程 | SAP Joule | 通用 AI(ChatGPT) | |
多 ERP 支持 | SAP + Epicor + Oracle + Dynamics | 不适用 | 以 SAP 为中心(Joule Studio 可通过 SAP Integration Suite 访问非 SAP 源) | 无 ERP 访问 |
报价时间(50 行) | ~15 秒 | 2-4 小时 | 未公开文档化 | 不适用 |
可自托管 | 是 | 不适用 | 否(SAP BTP 云服务) | 否 |
数据保留在本地 | 是 | 是 | 否 | 否 |
开源 | MIT | 不适用 | 否 | 否 |
开发用 mock 后端 | 是 | 不适用 | 未公开文档化 | 不适用 |
兼容 MCP | 是 | 不适用 | 未公开文档化 | 否 |
ERP 支持
ERP | 状态 | 连接方式 | 文档 |
Epicor Kinetic | 受支持 | REST API | |
SAP ECC / S/4HANA | 测试版(手动安装) | PyRFC (BAPI) | |
Oracle Cloud SCM | 受支持 | REST API | |
Microsoft Dynamics 365 | 受支持 | Graph API | |
Mock 后端 | 内置 | 内存 | 无需配置 |
SAP 说明: pyrfc 需要 SAP NetWeaver RFC Library,该库不在 PyPI 上,必须从 SAP 支持门户手动下载(需要 S 用户)。分步说明请参阅 docs/erp-setup/sap.md。
基准测试
使用内存 mock 后端(200 个真实零件,无需 ERP 系统)测量。您可以自行运行:
git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
uv run python benchmarks/run.pyERP 查找延迟(100 次单独查找,mock 后端):
P50 | P99 | 平均值 |
0.00025ms | 0.0023ms | 0.00032ms |
按 RFQ 规模统计的报价组装时间(解析器已 mock,不调用 Anthropic API):
RFQ 规模 | 组装时间 |
10 行 | 0.004s |
25 行 | 0.001s |
50 行 | 0.001s |
这些数字仅涵盖 ERP 查找和报价组装。RFQ 解析器已 mock,且未进行任何 Anthropic API 调用。在生产环境中,AI 文档解析每个文档增加 5-15 秒,真实 ERP 查找每行增加 100-500ms(以 max_concurrent=10 并行化),因此 50 行 RFQ 的实际总时间约为 ~15 秒。人工基线:2-4 小时。
集成矩阵
Electronics RFQ Agent 可与任何支持 MCP 的代理框架配合使用:
框架 | 安装 | 示例 |
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 选项卡。
发布签名: 发布工作流使用 Sigstore 对构建的 wheel 和 sdist 进行签名,并在版本打标签后为每个 GitHub Release 附加 CycloneDX SBOM。
依赖固定: Dependabot 使 GitHub Actions 和 Python 依赖保持最新(每周补丁更新,每月 Actions 更新)。
披露: SECURITY.md。请通过电子邮件或 GitHub Security Advisories 私下报告漏洞;48 小时内确认,90 天负责任披露。
常见问题
Electronics RFQ Agent 到底做什么? 它接收客户的 RFQ 文档(PDF、Excel 或 Word),使用 Claude 提取每个行项目,通过 MCP 连接器在您的 ERP 目录中查找每个零件,并返回一份应用了利润率的带价格报价草稿。销售工程师进行审核并发送,而不是从头开始构建。
它可以用于生产环境吗? 它处于 Beta 阶段(v0.2.x)。核心库、Epicor、Oracle 和 Dynamics 连接器在 Python 3.10-3.12 上均受 CI 覆盖(lint、mypy strict、pytest 附带 80% 覆盖率门槛、Trivy 扫描)。SAP 支持明确标记为 Beta,需要手动安装步骤(SAP NetWeaver RFC Library 不在 PyPI 上)。
试用它需要 ERP 系统吗?
不需要。MockERP 附带 200 个逼真的电子零件,并应用基于数量的定价层级,因此您可以在零 ERP 凭据的情况下运行完整的解析-查找-报价流程。您仍然需要 ANTHROPIC_API_KEY,因为文档解析是真实的 Claude 调用。只有 erfa audit(读取已保存的报价文件)可以在完全没有密钥的情况下工作。
这与让 ChatGPT 读取 RFQ 有何不同? 通用聊天模型可以读取文档,甚至猜测价格,但它与您实际的 ERP 目录、库存或合同定价没有连接,因此它是在编造数字。Electronics RFQ Agent 会根据您的真实目录数据查找每个行项目,并且只对实际有库存的零件按实际成本价加上您配置的利润率进行报价。
这与 SAP Joule 有何不同? Joule 是 SAP 的专有 AI 助手套件,内置于 SAP 的云平台(SAP BTP)中,并以 SAP 数据为中心。Electronics RFQ Agent 采用 MIT 许可证,可自托管,并通过相同的 MCP 接口与 SAP、Epicor、Oracle 和 Dynamics 配合使用。您的报价数据不必离开您的环境,也不会被绑定到单一 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,并附上说明原因(而不是被静默丢弃或猜测),并且会被排除在报价总额之外。对保存的报价 JSON 运行 erfa audit,可以准确查看哪些行被找到、被替换或缺失,以及原因。
我可以将其用于商业用途吗? 可以。它采用 MIT 许可证,因此您可以将其用于商业用途、修改并发布,无需支付版税,也没有义务开源您的更改。只需通过许可证文件注明出处即可。
我的 RFQ 和定价数据除了发送给 Anthropic 之外,还会发送到其他地方吗? 只有 RFQ 文档内容会发送到 Anthropic API 进行解析。ERP 查找通过您配置的连接器直接从您的机器发送到您的 ERP 系统:没有中间服务,除非您选择自行持久化报价 JSON,否则不会在您自己的环境之外存储任何内容。
这个发布到 PyPI 了吗?
是的,作为 electronics-rfq-agent-cli(pip install electronics-rfq-agent-cli)。发布流水线(构建、Sigstore 签名、SBOM、可信发布者上传)位于 .github/workflows/release.yml 中,并在每次推送 v* 标签时运行。Python 导入路径(electronics_rfq_agent)和 erfa CLI 命令保持不变;只有面向注册表的包名带有 -cli 后缀,这与该维护者针对 CLI 工具的命名约定一致。
贡献
在打开 PR 之前阅读 CONTRIBUTING.md
适合新手的问题在 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