原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

BeeL

作者:beel-es版本 0.10.0i★ –i电脑或云端
注册名称es.beel/mcp

安装

概览

作者提供的说明(英文原文)

Spanish e-invoicing with VeriFactu (AEAT): issue invoices, manage customers, validate NIFs.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 电脑或云端
  • 传输方式: stdio, Streamable HTTP
  • 分类: 其他
  • 你需要填写:BEEL_API_KEY

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。

你需要

  • 在云端运行无需安装任何东西,通过互联网连接
  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

适用于网页版、桌面版和手机版 Claude:

  1. 打开 Settings → Connectors
  2. 点击 Add custom connector
  3. 粘贴下面的地址,然后点击 Add
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Add2https://…3
https://mcp.beel.es/mcp

或者在你的电脑上运行

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "beel": {
      "command": "npx",
      "args": [
        "-y",
        "@beel_es/mcp"
      ],
      "env": {
        "BEEL_API_KEY": "your-value",
        "BEEL_ENV": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add --transport http beel https://mcp.beel.es/mcp

或者在你的电脑上运行

claude mcp add beel --env BEEL_API_KEY=your-value --env BEEL_ENV=your-value -- npx -y @beel_es/mcp

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "beel": {
      "url": "https://mcp.beel.es/mcp"
    }
  }
}

或者在你的电脑上运行

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "beel": {
      "command": "npx",
      "args": [
        "-y",
        "@beel_es/mcp"
      ],
      "env": {
        "BEEL_API_KEY": "your-value",
        "BEEL_ENV": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "beel": {
      "type": "http",
      "url": "https://mcp.beel.es/mcp"
    }
  }
}

或者在你的电脑上运行

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "beel": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@beel_es/mcp"
      ],
      "env": {
        "BEEL_API_KEY": "your-value",
        "BEEL_ENV": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

ChatGPT 只能连接互联网上的服务器:

  1. 打开网页版 ChatGPT → Settings → Connectors (Apps)
  2. 点击 Create 或 Add(部分套餐需要先在 Advanced 中开启 Developer mode)
  3. 粘贴下面的地址,起个名字,然后保存
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Create2https://…3
https://mcp.beel.es/mcp

菜单名称可能因套餐和版本不同而略有差异。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • BEEL_API_KEY 机密 必填 env
    BeeL API key. The prefix selects the environment: beel_sk_test_ for Test, beel_sk_live_ for Live. It may be omitted on a machine where the BeeL CLI has been signed in (`beel login`), whose credential…
  • BEEL_ENV env
    Which stored CLI credential to use when BEEL_API_KEY is not set: test (default) or live. Ignored when BEEL_API_KEY is set, since the key's prefix already says which environment it belongs to.

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

服务器要求先登录,才会列出它的工具。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过域名 beel.es 验证(注册中心会核实域名所有权)

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • ✓ 通过

    端点有响应

    在 1074 毫秒内响应(HTTP 401)

  • ✓ 通过

    使用 OAuth 登录

    声明支持 OAuth 登录,你的 AI 应用可以带你去登录

  • … 尚未检查

    工具描述中没有隐藏指令

    尚未检查;我们会在检查端点时读取工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32678 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32678 个服务器的 90% 更新
  • 基础检查结果等于或优于此分类中其他 32678 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

BeeL 安全吗?

它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:BEEL_API_KEY

它在我的电脑上运行还是在云端?

两种方式都可以:安装在你的电脑上,或者连接云端版本。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.10.0)于4天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Starreel

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211前天更新
安装

Starreel

作者:starreel

Turn a script into a finished, downloadable short-drama episode — via MCP or REST.

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

BeeL MCP server — VeriFactu e-invoicing for AI agents

Servidor MCP de facturación electrónica española con VeriFactu (AEAT): crea, emite y rectifica facturas desde Claude, ChatGPT, Cursor o VS Code .

MCP server for Spanish e-invoicing with VeriFactu compliance — issue, correct and register invoices with AEAT straight from your AI agent.

beel.es · API docs · MCP guide · npm


An MCP (Model Context Protocol) server that lets an AI agent issue legally compliant Spanish electronic invoices — VeriFactu registration with AEAT, F1/F2 invoice types, R1–R5 correctives, NIF validation against the census, and the regime keys the regulation requires. Connect it to Claude, ChatGPT, Cursor or VS Code and your agent can handle Spanish invoicing — *facturación electrónica* and *factura electrónica VeriFactu* — end to end, without you writing a single API call.

It is not a generated wrapper around an API. Three things make it usable by a model:

  • Tools are derived from the public OpenAPI contract, so each tool's input schema is the operation's real schema — enums, line items, regime keys and all. The surface cannot drift from the API.
  • A tool-inclusion policy decides what an agent should actually be given. Binary downloads, multipart uploads, webhook plumbing, operations only a browser session can authenticate, and deprecated ones are excluded by rule, not by hand.
  • Fiscal guardrails travel with the tools: the invariants a generated wrapper would miss, both as documentation the model reads and as pre-flight checks that stop a non-compliant request before it becomes a fiscal document.

One codebase, two transports: the hosted remote server at https://mcp.beel.es/mcp (Streamable HTTP + OAuth — one login per user, nothing to install), and a local stdio server built from this repository for headless use, where an API key works and a browser-based login does not.

Quick start

Add `https://mcp.beel.es/mcp` as a connector in Claude, ChatGPT, Cursor or VS Code and log in with your BeeL account. Nothing to install and no API key to handle: the server acts with your own credentials, and the OAuth flow is discovered from the URL.

# Claude Code

claude mcp add --transport http beel https://mcp.beel.es/mcp

That is the whole setup for interactive use. Read on only if you need the local server.

Running it locally

Use the local server when OAuth cannot: a scheduled job that issues invoices, a CI pipeline, or any headless process where no one is present to complete a browser login. It authenticates with an API key instead.

Requires Node ≥ 20.

// Claude Desktop / Claude Code MCP config

{ "mcpServers": { "beel": { "command": "npx", "args": ["-y", "@beel_es/mcp"], "env": { "BEEL_API_KEY": "beel_sk_test_xxx" } } } }

# Claude Code

claude mcp add beel --env BEEL_API_KEY=beel_sk_test_xxx -- npx -y @beel_es/mcp

Keys prefixed beel_sk_test_ are safe to experiment with; beel_sk_live_ issues real fiscal documents.

Releases are published from CI through npm trusted publishing, so they carry provenance: npm records the exact commit and workflow each build came from. Verify it with npm audit signatures.

Each release is also announced to the MCP Registry as `es.beel/mcp`, listing both transports, so clients that browse the registry find the server without being pointed at it. The name is authenticated by a DNS record on beel.es, so it says the server comes from us and not merely from some repository.

An earlier listing under io.github.beel-es/beel-mcp (v0.2.2) was retired when the name moved. Registry names are identities rather than labels, so a rename is a new entry rather than a redirect; both point at the same npm package and the same hosted server.

What it provides

  • 129 API tools derived from openapi/public-api.yaml — invoices, customers, products, recurring invoices, series and tax configuration, NIF validation, companies.
  • 7 synthetic tools the API has no single endpoint for: beel_docs_search, beel_docs_get, beel_docs_list over the documentation (the docs site's search endpoint and one page's Markdown at a time, or some of its sections in one call: a long page answers with its outline); beel_rules_list and beel_rules_get over the fiscal rules catalogue (by id, several ids at once, domain, keyword or error code); beel_schema_get, the fields of request and response schemas as compact TypeScript-like declarations from the bundled contract (by schema name, or by tool name for its query, body and return type); and beel_get_setup_status, which reports per NIF exactly what is missing before it can issue, the one next action to take, and the ids an integration starts from (company, default series per document type, VeriFactu status and tax defaults).
  • Guardrail resources under beel://guardrails/* — the fiscal rules, one resource per domain, the API usage guides, and beel://guardrails/errors, a catalogue of every error code with the action it calls for. The domains and guides that apply are named in the description of every tool they constrain.
  • 9 workflow prompts encoding the safe order of operations for the flows where the order is what makes them safe: issue-invoice (validate NIF → choose F1/F2 → check the VeriFactu gates → issue), fix-invoice (void vs correct), fix-rejection (act on an AEAT rejection by code family), onboard-nif, go-live-checklist, setup-representation, invite-member, connect-payments and upgrade-integration.
  • Inline invoice PDF viewer (MCP Apps): generating an invoice PDF opens it in a side panel in hosts that support it.

A generated catalogue of every tool, with the scopes each requires, lives at docs.beel.es/mcp/tools (npm run tools:catalog).

What is deliberately not a tool

Binary downloads (PDF preview, bulk ZIP, Excel/CSV export), binary uploads (Holded import, signed-PDF submission, logo), webhook infrastructure, operations that only a browser session can authenticate, and every deprecated operation. An agent cannot drive them, and each one costs context that a usable tool needs. The CSV imports of managed accounts and customers are tools: the agent passes the CSV as text and the server sends the file. The rules are in src/policy/tool-policy.ts.

The fiscal guardrails

Spanish e-invoicing has invariants an LLM will get wrong from the schema alone — voiding an invoice that should have been corrected, using R1 on a simplified invoice, editing one AEAT has already registered. The server addresses that in three layers, and the difference between them matters:

1. Advisory — two sources, kept apart on purpose:

  • The fiscal rules are the catalogue the documentation site publishes at docs.beel.es/api/rules.json: each rule has an id (COR-002), a statement, why it exists, its legal basis, the error codes that enforce it and examples. The server reads it at runtime (cached, like the other docs files) and serves it through beel_rules_list / beel_rules_get and one resource per domain (beel://guardrails/corrective, …). Nothing fiscal is re-typed here. A snapshot of the catalogue ships in the package as a fallback for when the docs host is unreachable; npm run sync:rules is its only writer, and a test fails if it was edited by hand. The former beel://guardrails/cancel-vs-rectify, invoice-types and regime-keys URIs still resolve, to the domains that replaced them.
  • The API usage guides — src/guardrails/rules/*.md — cover what is not a fiscal rule but still trips an agent: how a line states its price, how a series is configured, which company an operation acts on, how to read NIF validation and issuing readiness, and which tool performs each invoice operation. They link to rule ids rather than restating them.

The domains and guides that apply are named in the description of every tool they constrain, so the constraint travels with the call.

2. Enforced — src/guardrails/validate.ts, checked before the request is sent, so a bad payload never even consumes an idempotency key:

CheckCode
Exactly one pricing field per lineLINE_UNIT_PRICE_XOR_DECLARED_TOTAL
No discount on a declared totalLINE_DECLARED_TOTAL_FORBIDS_DISCOUNT
No IRPF withholding on a simplified (F2) invoiceSIMPLIFICADA_FORBIDS_IRPF
No nif or alternative_id on a simplified (F2) invoice's recipientSIMPLIFIED_INVOICE_FORBIDS_IDENTIFIED_RECIPIENT
Equivalence surcharge only under regime 18, and 18 only with oneSURCHARGE_REQUIRES_REGIME / REGIME_REQUIRES_SURCHARGE
Series format can tell its reset periods apartSERIES_ANNUAL_REQUIRES_YEAR / SERIES_MONTHLY_REQUIRES_MONTH_AND_YEAR
Numbering is only seeded in the call that activates the companyNUMBERING_REQUIRES_ACTIVATION
SUPLIDO lines carry their source referencechecked locally
Exemption text only under reason OTROchecked locally
Correctives go through their own operation, not type: CORRECTIVEchecked locally

3. Explained — the BeeL API already answers well: its message is written for a human in the caller's language, error.details carries the specifics, and the RFC 7807 type field links to a documentation page for that exact code. The server relays all of that untouched, and adds only the two things a response cannot carry: the remedy as a tool call — the docs address someone with the dashboard open ("create a series in settings"), an agent needs beel_set_default_series — and whether retrying can possibly help, which is what stops an agent looping on a 403 that needs an administrator. When the code is one a published rule cites, the error also names that rule (id, title, link). src/guardrails/catalog.ts holds only codes where one of those applies; anything else passes through, because a paraphrase would be worse than the original and would drift from it. The nested blockers[] of EMISSION_NOT_READY are the clearest case: they arrive as bare strings with no message and no link, and each comes back out naming the tool that clears it.

The BeeL API is the authority on all of it. Every enforced rule mirrors a rejection the contract documents, so the pre-flight

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx