Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Create, validate, convert & extract compliant e-invoices (UBL, Factur-X, ZUGFeRD, XRechnung)
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://mcp.invoicexml.com在终端中运行这条命令
claude mcp add --transport http invoicexml https://mcp.invoicexml.com粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"invoicexml": {
"url": "https://mcp.invoicexml.com"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"invoicexml": {
"type": "http",
"url": "https://mcp.invoicexml.com"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://mcp.invoicexml.com菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过域名 invoicexml.com 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
尚未检查;我们会轮流检查各个端点
尚未检查;我们会轮流检查各个端点
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。
GitHub 仓库最后更新于–,最新版本(1.0.0)于5个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Spec Driven Development, Remote Desktop Commander, DepTime
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
What changed in a Python library, in which release, and what replaces it. Answered locally.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
A Model Context Protocol server that exposes the InvoiceXML API to AI agents. Covers Factur-X, ZUGFeRD, XRechnung, UBL / CII, and Peppol BIS Billing 3.0.
The same codebase runs in two deployment shapes, selected at startup by one environment variable:
| Mode | Who runs it | Auth |
|---|---|---|
| Self-hosted | You, on your own machine or server | A single API key in env or appsettings.json |
| Hosted | InvoiceXML, on its own infrastructure | OAuth 2.1 + Dynamic Client Registration against invoicexml.com |
Both run the same binary; only the configuration differs. The repository is platform-independent — it knows nothing about where or how you host it.
+----------------------+ ProjectReference +----------------------+
| InvoiceXml.Mcp.Core | -------------------> | InvoiceXml.Mcp.Host | | (SDK: client+tools) | | (the deployable) | +----------------------+ +----------------------+
`InvoiceXml.Mcp.Core` is a small, transport-agnostic SDK:
IInvoiceXmlClient — typed client over the public REST APIHttpInvoiceXmlClient — the only implementation; consumes an HttpClient from IHttpClientFactoryInvoiceXmlClientOptions — base URL, timeout (no auth)AddInvoiceXmlMcpCore(IServiceCollection, IConfiguration) — DI entry point; returns the IHttpClientBuilder so the host attaches auth as a DelegatingHandlerThe SDK never sees credentials. The host applies them through the HTTP pipeline. That seam is what lets one codebase serve both deployment modes.
`InvoiceXml.Mcp.Host` is an ASP.NET Core 10 app:
Mcp:AuthMode (ApiKey or OAuth) at startupDelegatingHandler onto the Core HTTP client via AddHostAuth(...)POST /, a human-friendly welcome page at GET /, and /healthAdding a new auth mode = one arm in AuthExtensions.cs plus a small folder under Auth/ /. Adding a new tool = one [McpServerTool] class. Nothing else changes.
invoicexml-mcp/
├── src/ │ ├── InvoiceXml.Mcp.Core/ # the SDK: client, models, tools │ │ ├── Enums/ Interfaces/ Models/ Options/ Services/ Tools/ Extensions/ │ └── InvoiceXml.Mcp.Host/ # the deployable host │ ├── Auth/{ApiKey,OAuth}/ # the two auth modes │ ├── Configuration/ │ ├── Program.cs │ └── appsettings.json # safe defaults, no secrets ├── tests/ │ ├── InvoiceXml.Mcp.Core.Tests/ │ └── InvoiceXml.Mcp.Host.Tests/ ├── Directory.Build.props # repo-wide MSBuild defaults ├── Directory.Packages.props # Central Package Management ├── global.json # pins the .NET SDK └── InvoiceXml.Mcp.slnx
You need a .NET 10 SDK and an InvoiceXML API key.
# 1. Provide your API key (pick one):
dotnet user-secrets --project src/InvoiceXml.Mcp.Host set "Mcp:ApiKey:Value" "your-key"
$env:INVOICEXML_API_KEY = "your-key"
dotnet run --project src/InvoiceXml.Mcp.Host
GET http://localhost:5004/ shows a welcome page in a browser; the MCP endpoint is POST http://localhost:5004/; GET /health returns { "status": "ok" }.
{
// Required in OAuth mode. The public origin where this MCP server is reachable. // Used in the protected-resource metadata response. "McpUri": "https://mcp.example.com",
"InvoiceXml": { "BaseUrl": "https://api.invoicexml.com", // override for staging / local "Timeout": "00:01:40" },
"Mcp": { "AuthMode": "ApiKey", // "ApiKey" | "OAuth" "ApiKey": { "Value": "" // ApiKey mode: NEVER commit a real key }, "OAuth": { "AuthorizationServer": "https://invoicexml.com", "ScopesSupported": [ "api_token.read" ] }, "FileInput": { // limits for the URL-fetch input mode "MaxFileSizeBytes": 5242880, "FetchTimeout": "00:00:30" } } }
Environment variable equivalents (double underscore = nesting):
| Variable | Maps to |
|---|---|
INVOICEXML_API_KEY | Mcp:ApiKey:Value (friendly alias) |
Mcp__ApiKey__Value | Mcp:ApiKey:Value |
Mcp__AuthMode | Mcp:AuthMode (ApiKey or OAuth) |
Mcp__OAuth__AuthorizationServer | Mcp:OAuth:AuthorizationServer |
McpUri | McpUri (root-level) |
InvoiceXml__BaseUrl | InvoiceXml:BaseUrl |
When Mcp:AuthMode=OAuth the host stops accepting a static API key and instead:
WWW-Authenticate: Bearer resource_metadata="…" for any POST / that has no Bearer token.GET /.well-known/oauth-protected-resource pointing MCP clients at invoicexml.com as the authorization server.The dance an MCP client performs:
client → MCP POST / → 401 + resource_metadata
client → /.well-known/oauth-protected-resource → { authorization_servers: [invoicexml.com] } client → invoicexml.com/.well-known/oauth-authorization-server → { authorize, token, register endpoints } client → invoicexml.com/oauth/register → client_id + client_secret (DCR) client → invoicexml.com/oauth/authorize → user consents, gets code client → invoicexml.com/oauth/token → access_token (= user's API key) client → MCP POST / + Authorization: Bearer → 200, tool call flows through
The host is a standard ASP.NET Core app — run it however you run .NET services (systemd, a container, a PaaS, etc.; the repo doesn't prescribe one):
dotnet publish src/InvoiceXml.Mcp.Host -c Release -o ./publish
Set configuration via environment variables on the host (never commit secrets):
ASPNETCORE_ENVIRONMENT=ProductionMcp__AuthMode=ApiKey (or OAuth)Mcp__ApiKey__Value=… / INVOICEXML_API_KEY=… (ApiKey mode)McpUri=https://your-public-url and Mcp__OAuth__AuthorizationServer=https://invoicexml.com (OAuth mode)Terminate TLS at your reverse proxy / load balancer and forward to the host's HTTP port. The server is stateless, so you can run multiple instances behind a load balancer.
MIT — see LICENSE.