mcp服务器acube
](https://www.npmjs.com/package/mcp-server-acube)  
A. 模型上下文协议(MCP) 提供以下功能的服务器 38工具 用于与 A-卡套管API --意大利SDI(Sistema di Interscambio)、FatturaPA、智能收据、公司验证等电子发票平台。
将此服务器连接到Claude Desktop、Claude Code或任何兼容MCP的客户端,以通过自然语言管理意大利电子发票。
特性
- 电子发票 --通过SDI发送、列出和检索FatturaPA发票,支持JSON、XML、PDF和HTML格式
- AI驱动的PDF提取 --使用A-Cube的AI提取管道将PDF发票转换为FatturaPA格式
- 智能收据 --签发、作废和管理电子收据(scontrini elettronici)
- 公司验证 --通过P.IVA或codice fiscale查找意大利公司,验证财务ID,并检查拆分付款状态
- SDI通知 --监控收货、拒收和所有其他SDI通知类型
- 税务抽屉 --从Agenzia delle Entate税务抽屉安排定期或一次性批量下载
- 网络钩子 --为13种不同的事件类型配置实时事件回调
- 商业登记处和ADE任命人 --管理公司简介和财务中介配置
- 令牌优化响应 --紧凑的JSON输出,具有空剥离和字段选择功能,可最大限度地减少LLM令牌消耗
- 自动身份验证 --JWT令牌管理,自动刷新(24小时令牌生命周期)
- 沙箱和生产 --在A-Cube沙盒和生产环境之间无缝切换
快速开始
先决条件
你需要一个 A-卡套管API 账户注册地址: acubeapi.com 以获取您的凭据。
克劳德桌面
将以下内容添加到您的Claude Desktop配置文件中(claude_desktop_config.json):
{
"mcpServers": {
"acube": {
"command": "npx",
"args": ["-y", "mcp-server-acube"],
"env": {
"ACUBE_EMAIL": "your-email@example.com",
"ACUBE_PASSWORD": "your-password",
"ACUBE_ENVIRONMENT": "sandbox"
}
}
}
}克劳德代码
claude mcp add acube -- npx -y mcp-server-acube \
-e ACUBE_EMAIL=your-email@example.com \
-e ACUBE_PASSWORD=your-password \
-e ACUBE_ENVIRONMENT=sandbox或手动添加到 .mcp.json 在项目根目录中:
{
"mcpServers": {
"acube": {
"command": "npx",
"args": ["-y", "mcp-server-acube"],
"env": {
"ACUBE_EMAIL": "your-email@example.com",
"ACUBE_PASSWORD": "your-password",
"ACUBE_ENVIRONMENT": "sandbox"
}
}
}
}配置
服务器是通过环境变量配置的:
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
ACUBE_EMAIL | 是 | -- | 您的A-Cube帐户电子邮件 |
ACUBE_PASSWORD | 是 | -- | 您的A-Cube帐户密码 |
ACUBE_ENVIRONMENT | 没有 | sandbox | API环境: sandbox 或 production |
可用工具
发票(4个工具)
| 工具 | 说明 |
|---|---|
send_invoice | 向SDI发送FatturaPA电子发票。接受完整的FatturaPA JSON对象。返回SDI(HTTP 202)分配的UUID。支持可选的数字签名。 |
send_simplified_invoice | 发送金额不超过400欧元的简化FatturaPA发票(fattura semplificata) |
list_invoices | 使用20多个过滤器(发件人/收件人姓名、增值税、状态、日期范围、发票系列等)列出和过滤发票。返回a 紧凑默认视图 --看 响应优化. |
get_invoice | 通过UUID检索特定发票。输出格式:JSON、XML(FatturaPA)、PDF(base64)或HTML。支持字段选择。 |
发票提取(3个工具)
| 工具 | 说明 |
|---|---|
extract_invoice_from_pdf | 上传PDF发票(base64编码),以便人工智能转换为FatturaPA格式。返回作业UUID。 |
get_extraction_status | 按UUID轮询PDF提取作业的状态。 |
get_extraction_result | 从已完成的提取作业中检索已转换的FatturaPA发票。提供JSON或XML格式。 |
通知(3个工具)
| 工具 | 说明 |
|---|---|
list_notifications | 列出SDI通知,并按类型(NS、MT、RC、MC、EC、SE、NE、DT、AT)和下载状态进行过滤。 |
get_notification | 通过JSON或原始XML格式的UUID获取特定的SDI通知。 |
mark_notifications_downloaded | 通过提供一个或多个通知的UUID,将其标记为已下载。 |
验证(4个工具)
| 工具 | 说明 |
|---|---|
verify_fiscal_id 验证意大利税务代码或P.IVA对Agenzia delle Entrate。 | |
verify_company | P.IVA或codice fiscale提供完整的公司查询。返回姓名、PEC、SDI代码、地址、ATECO代码、股东等。 |
verify_simple_company | 基本公司信息查找——一种轻量级的替代方案 verify_company. |
verify_split_payment | 检查公司是否具有公共行政发票的分期付款(scissione dei pagamenti)状态。 |
智能收据(4个工具)
| 工具 | 说明 |
|---|---|
send_receipt | 签发包含项目、付款金额和会计ID的电子收据(scontrino elettronico) |
get_receipt_details | 获取收据交易详细信息,包括文件编号。 |
void_receipt | 作废/取消电子收据(annualamento)。 |
return_receipt_items | 根据现有收据处理项目退货。 |
Webhooks(5个工具)
| 工具 | 说明 |
|---|---|
list_webhook_configs | 列出所有webhook配置。 |
create_webhook_config | 通过指定事件类型和目标URL订阅事件。支持13种事件类型,包括供应商发票、客户发票、收据等。 |
get_webhook_config | 按ID获取特定的webhook配置 |
update_webhook_config | 更新webhook设置(事件类型、URL、身份验证)。 |
delete_webhook_config | 删除webhook配置。 |
商业登记处和ADE任命人(8个工具)
| 工具 | 说明 |
|---|---|
list_business_registries 列出所有业务注册表配置。 | |
create_business_registry | 为电子发票创建新的公司配置文件,包括会计ID、签名和合法存储设置。 |
get_business_registry | 按ID获取特定的业务注册表配置 |
update_business_registry | 更新现有公司简介。 |
list_appointees | 列出所有ADE税务任命人(intermediari fiscali)。 |
create_appointee | 在Agenzia delle Entrate注册一个新的授权经营的财政中介机构。 |
get_appointee | 通过ID获得特定的ADE任命者 |
update_appointee | 更新现有的财政中介机构。 |
卡式发票和拒收发票(7个工具)
| 工具 | 说明 |
|---|---|
schedule_invoice_download | 在03:00 UTC从Cassetto Fiscale(税务抽屉)设置定期每日发票下载。 |
get_download_schedule | 检查发票下载计划的状态(活动、自动续订、上次执行)。 |
update_download_schedule | 修改下载计划选项。 |
delete_download_schedule | 停止定期发票下载。 |
download_invoices_once | 从Agenzia delle Entrate按日期范围触发一次性批量发票下载。 |
count_rejected_invoices | 清点在Cassetto Fiscale处理过程中被拒绝的发票。 |
recover_rejected_invoices | 重新处理给定会计ID和日期范围的以前被拒绝的发票。 |
响应优化
此服务器旨在最大限度地减少LLM令牌的消耗。每个响应都经过三个优化:
1.有效载荷解析
A-Cube API在 payload 现场。服务器会自动将此字符串解析为结构化对象,这使得空剥离可以在其中的~60个空字段上工作。这消除了双重编码开销(\" escapes),通常将有效载荷令牌的使用量减少约50%。
2.零剥离
全部 null 和 undefined 值会从响应中递归删除,包括在解析的有效载荷中。典型发票 sender 对象有大约40个字段,其中大约30个为空。剥离后,只剩下5-8个有人居住的油田。
3.压缩JSON
响应是序列化的,没有缩进(JSON.stringify(data) 而不是 JSON.stringify(data, null, 2)).这消除了不向LLM提供信息的空白标记。
4.默认字段选择打开 list_invoices
这 list_invoices 工具返回a 紧凑默认视图 (每页10个项目)而不是完整的A-Cube响应。原始API响应包括整个FatturaPA有效负载(每张发票约2000个令牌)和完整的发件人/收件人对象。紧凑视图仅提取基本字段:
| 默认字段 | 说明 |
|---|---|
uuid | 发票UUID |
created_at | A-Cube上的创建时间戳 |
document_type | FatturaPA类型代码(TD01、TD04等) |
marking | SDI状态(已交付、已拒绝、已发送等) |
notice | 来自SDI的错误消息(如果被拒绝) |
invoice_number | 发票号码(从有效载荷中提取) |
invoice_date | 发票日期(从有效载荷中提取) |
total_amount | 文档总量(从有效载荷中提取) |
currency | 货币代码(从有效载荷中提取) |
sender.business_name | 发件人公司名称 |
sender.business_vat_number_code | 发件人P.IVA |
recipient.business_name | 收件人公司名称 |
recipient.business_vat_number_code | 收件人P.IVA |
notifications | SDI通知数组(类型+日期) |
这 invoice_number, invoice_date, total_amount,以及 currency 字段为 计算 通过在服务器端解析FatturaPA有效载荷JSON,因此它们可以在不传输整个有效载荷的情况下使用。
按发票系列筛选
意大利发票号码通常包含一系列后缀(例如。 1/Servizi, 2026/100/CI, 3/cipay).API的 invoice_number 过滤器进行部分匹配,可以返回不相关的序列。这 invoice_series 参数通过后过滤结果来解决这个问题,仅匹配编号以精确系列后缀结尾的发票:
# Only returns "1/Servizi", "2/Servizi", etc. -- not "2026/100/CI"
list_invoices(sender_vat: "01234567890", invoice_series: "Servizi")
# Only returns invoices in the /CI series
list_invoices(sender_vat: "01234567890", invoice_series: "CI")这场比赛在最后一场之后的部分是精确的 / 在发票号码中。
使用 fields 参数
两者 list_invoices 和 get_invoice 接受可选 fields 用于控制返回哪些字段的参数:
# Default compact view (no fields parameter needed)
list_invoices(marking: "rejected")
# Request specific fields
list_invoices(marking: "rejected", fields: ["uuid", "notice", "recipient.business_name"])
# Request all fields (payload parsed + nulls stripped)
list_invoices(marking: "rejected", fields: ["*"])
# Get specific fields from a single invoice
get_invoice(uuid: "...", fields: ["payload", "sender", "recipient"])这 fields 参数支持 点标记法 对于嵌套对象(例如。, sender.business_name).
提示: 更喜欢默认的紧凑视图或特定字段["*"].即使有["*"],服务器解析有效载荷并删除空值,但完整的FatturaPA结构仍然很大。使用["*"]只有当你真正需要完整的发票数据时。
分页
list_invoices 默认为 每页10个项目 (items_per_page,最多30)。使用 page 参数来浏览结果。
预计代币节省
对于典型 list_invoices 呼叫返回10张发票:
| 场景 | 无优化 | 有优化 |
|---|---|---|
| 默认视图 (紧凑字段) | ~25000个令牌 | 约1500个代币 |
**fields: ["*"]** (完整数据) | ~25000个代币 | 约10000个代币 |
关键削减 fields: ["*"]:
| 度量 | 之前 | 之后 |
|---|---|---|
| 每张发票的字段为空 | ~60 | 0(已删除) |
| 有效载荷编码 | 双重编码字符串(\") | 解析对象(无转义) |
| 有效载荷空字段 | ~60(隐藏在字符串中) | 0(已剥离) |
用法示例
服务器连接后,您可以向Claude询问以下问题:
开具发票
“将客户ACME Srl的发票连同P.IVA 01234567890发送给SDI” “列出我从2025年1月起被拒绝的所有发票” “显示XML格式的发票abc-123-def”
PDF提取
“将此PDF发票转换为FatturaPA格式” “检查我的PDF提取工作是否已完成”
公司验证
“用P.IVA 01234567890查找公司——我需要他们的PEC和SDI代码” “此财政法典有效吗:RSSMRA85M01H501Z?” “这家公司使用分期付款吗?”
智能收据
“为3个项目开具电子收据,总计45.50欧元,通过卡支付” “无效收据编号12345”
通知
“显示所有未下载的SDI通知” “上周是否有任何被拒绝的通知(NS类型)?”
税务抽屉
“为会计ID 01234567890设置每日发票下载” “下载我公司2025年第一季度的所有发票” “我有多少张被拒绝的发票?”
配置
“列出我的所有webhook配置” “为指向的新供应商发票设置webhookhttps://my-app.com/webhooks/acube" “显示我的所有企业注册档案”
发展
设置
git clone https://github.com/nick-preda/mcp-server-acube.git
cd mcp-server-acube
npm install构建
npm run build以开发模式运行
ACUBE_EMAIL=you@example.com ACUBE_PASSWORD=secret npm run dev测试
npm test
npm run test:watch # watch mode项目结构
src/
index.ts # MCP server entry point, env validation, tool registration
client.ts # A-Cube HTTP client with JWT authentication
response.ts # Response utilities: field picking, null stripping, formatting
tools/
invoices.ts # send_invoice, send_simplified_invoice, list_invoices, get_invoice
invoice-extract.ts # extract_invoice_from_pdf, get_extraction_status, get_extraction_result
notifications.ts # list_notifications, get_notification, mark_notifications_downloaded
verify.ts # verify_fiscal_id, verify_company, verify_simple_company, verify_split_payment
receipts.ts # send_receipt, get_receipt_details, void_receipt, return_receipt_items
webhooks.ts # list/create/get/update/delete_webhook_config
configurations.ts # business registries + ADE appointees (list/create/get/update)
cassetto-fiscale.ts # download schedules, one-time downloads, rejected invoices
tests/
client.test.ts # API client tests
tools/ # Tool-specific tests参考
A-Cube API环境
| 环境 | 基本URL(Gov.it) | 基本URL | |
|---|---|---|---|
sandbox | https://api-sandbox.acubeapi.com | https://common-sandbox.api.acubeapi.com | 测试和开发 |
production | https://api.acubeapi.com | https://common.api.acubeapi.com | 通过SDI实时开票 |
默认情况下使用沙盒环境。集 ACUBE_ENVIRONMENT=production 只有当您准备通过SDI发送真实发票时。
FatturaPA文件类型
| 代码 | 描述 |
|---|---|
TD01 发票(Invoice) | |
TD04 信用证(Credit Note) | |
TD05 借记(debit note) | |
TD06 | Parcella(专业费) |
TD07 | Fattura semplificata(简化发票) |
TD08 简化的信用卡。 | |
TD09 简化的债券。 | |
TD16 内部Reverse Charge发票 | |
TD17 | 集成/自动发票购买海外服务 |
TD18 | 整合购买欧盟内部资产 |
TD19 | 整合/自动发票购买资产第17条第2款 |
TD20 自动发票/定期化 | |
TD24 推迟发票(第21条第4款(a)项) | |
TD25 推迟发票(第21条第4款第三段(b)项) | |
TD26 | 可折旧资产的转让/内部步骤 |
TD27 | 无与伦比的自用发票/免费转让 |
SDI通知类型
| 代码 | 名称 | 描述 |
|---|---|---|
NS | Notifica di Scarto | 由于验证错误,发票被SDI拒绝 |
MT | Metadati | 来自SDI的元数据文件 |
RC | Ricevuta di Consegna | 收货收据——发票已成功送达收件人 |
MC | Mancata Consegna | 未送达通知——收件人的SDI通道无法访问 |
EC | Esito Committee | 收件人结果(收件人接受/拒绝) |
SE | Scarto Esito | SDI拒绝结果 |
NE | 结果通知 | 结果通知 |
DT | 下延萨特米尼 | 截止日期已过——15天未收到回复,发票被视为已接受 |
AT | 传输证明 | Transmission Attestation |
SDI发票状态(标记)
| 状态 | 描述 |
|---|---|
waiting | 发票排队等待提交给SDI |
quarantena | 发票被隔离以供审查 |
sent | 发票已提交至SDI,等待通知 |
invoice-error | 发票处理错误 |
received | 收到SDI的发票 |
rejected | SDI拒绝发票(NS通知) |
delivered | 发票已送达收件人(RC通知) |
not-delivered | 发票无法送达(MC通知) |
Webhook事件类型
以下活动可以通过以下方式订阅 create_webhook_config:
| 事件 | 描述 |
|---|---|
supplier-invoice | 通过SDI收到的新供应商发票 |
customer-invoice | 通过SDI发送的客户发票 |
customer-notification | 收到客户发票的SDI通知 |
invoice-status-quarantena | 发票已进入隔离状态 |
invoice-status-invoice-error | 发票处理错误 |
legal-storage-missing-vat | 合法存储:缺少增值税号码 |
legal-storage-receipt | 已生成合法存储收据 |
receipt | 已处理电子收据 |
receipt-retry | 电子回执重试 |
receipt-error | 电子收据错误 |
appointee | ADE任命活动 |
sistemats-receipt-ready | 系统已准备好接收 |
job | 异步作业已完成 |
链接
许可证
麻省理工学院——见 许可证 了解详情。
版权所有(c)2026 Cipay有限公司
