InvoiceXML について
InvoiceXML は、電子インボイスの作成、検証、変換、データ抽出を行う AI エージェント向け MCP サーバーです。セルフホストの API キー方式と、ホスト型の OAuth 方式を選べます。
主な機能
- 01電子インボイスの作成と検証
- 02インボイスの変換とデータ抽出
- 03Factur-X、ZUGFeRD、XRechnung に対応
- 04UBL、CII、Peppol BIS Billing 3.0 に対応
- 05API キーまたは OAuth 認証
活用シーン
- 01指定形式の電子インボイス生成
- 02インボイスのコンプライアンス検証
- 03インボイスの変換やデータ抽出
MCP 対応
インボイス関連ツールを通じて、MCP クライアントに InvoiceXML API を提供します。API キーまたは OAuth による認証に対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.invoicexml.comclaude mcp add --transport http com-invoicexml-invoicexml https://mcp.invoicexml.com{"mcpServers":{"com-invoicexml-invoicexml":{"type":"http","url":"https://mcp.invoicexml.com"}}}Cursor で開く{"servers":{"com-invoicexml-invoicexml":{"type":"http","url":"https://mcp.invoicexml.com"}}}VS Code で開く{"mcpServers":{"com-invoicexml-invoicexml":{"type":"http","url":"https://mcp.invoicexml.com"}}}{"mcpServers":{"com-invoicexml-invoicexml":{"serverUrl":"https://mcp.invoicexml.com"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
InvoiceXML MCP Server
InvoiceXML API を AI エージェントに公開する Model Context Protocol サーバーです。Factur-X、ZUGFeRD、XRechnung、UBL / CII、Peppol BIS Billing 3.0 に対応しています。
同じコードベースを、起動時に 1 つの環境変数で選択する 2 種類のデプロイ形態で実行できます。
| モード | 実行者 | 認証 |
|---|---|---|
| セルフホスト | 独自のマシンまたはサーバー上で実行 | 環境変数または appsettings.json に設定する単一の API キー |
| ホスト型 | InvoiceXML 独自のインフラストラクチャ上で実行 | invoicexml.com に対する OAuth 2.1 + Dynamic Client Registration |
どちらも同じバイナリを実行し、異なるのは構成だけです。このリポジトリはプラットフォームに依存せず、ホスティングの場所や方法については関知しません。
アーキテクチャ
+----------------------+ ProjectReference +----------------------+
| InvoiceXml.Mcp.Core | -------------------> | InvoiceXml.Mcp.Host |
| (SDK: client+tools) | | (the deployable) |
+----------------------+ +----------------------+
InvoiceXml.Mcp.Core は、トランスポートに依存しない小規模な SDK です。
IInvoiceXmlClient— 公開 REST API を利用する型付きクライアントHttpInvoiceXmlClient— 唯一の実装。IHttpClientFactoryからHttpClientを受け取りますInvoiceXmlClientOptions— ベース URL、タイムアウト(認証なし)AddInvoiceXmlMcpCore(IServiceCollection, IConfiguration)— DI エントリーポイント。IHttpClientBuilderを返すため、ホストはDelegatingHandlerとして認証を追加できます
SDK が認証情報を扱うことはありません。ホストが HTTP パイプラインを通じて認証情報を適用します。この分離により、同じコードベースで両方のデプロイモードに対応できます。
InvoiceXml.Mcp.Host は ASP.NET Core 10 アプリです。
- 起動時に
Mcp:AuthMode(ApiKeyまたはOAuth)を読み込みます AddHostAuth(...)を通じて、対応するDelegatingHandlerを Core の HTTP クライアントに接続しますPOST /に MCP エンドポイント、GET /にユーザー向けのウェルカムページ、/healthにヘルスチェックを提供します
認証モードの追加は、AuthExtensions.cs に分岐を 1 つ追加し、Auth/<Mode>/ に小さなフォルダーを作成するだけです。ツールの追加は、[McpServerTool] クラスを 1 つ作成するだけです。それ以外に変更はありません。
リポジトリの構成
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
ローカルでの実行
.NET 10 SDK と InvoiceXML API キーが必要です。
# 1. Provide your API key (pick one):
# A. dotnet user-secrets (recommended — kept outside the repo)
dotnet user-secrets --project src/InvoiceXml.Mcp.Host set "Mcp:ApiKey:Value" "your-key"
# B. environment variable
$env:INVOICEXML_API_KEY = "your-key"
# 2. Run
dotnet run --project src/InvoiceXml.Mcp.Host
ブラウザーで GET http://localhost:5004/ にアクセスするとウェルカムページが表示されます。MCP エンドポイントは POST http://localhost:5004/、GET /health は { "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"
}
}
}
環境変数での指定方法(ネストには二重アンダースコアを使用):
| 変数 | 対応する設定 |
|---|---|
INVOICEXML_API_KEY | Mcp:ApiKey:Value(簡易エイリアス) |
Mcp__ApiKey__Value | Mcp:ApiKey:Value |
Mcp__AuthMode | Mcp:AuthMode(ApiKey または OAuth) |
Mcp__OAuth__AuthorizationServer | Mcp:OAuth:AuthorizationServer |
McpUri | McpUri(ルートレベル) |
InvoiceXml__BaseUrl | InvoiceXml:BaseUrl |
OAuth モード
Mcp:AuthMode=OAuth の場合、ホストは静的 API キーの受け付けを停止し、代わりに以下を行います。
- Bearer トークンのない
POST /に対して、WWW-Authenticate: Bearer resource_metadata="…"を含む 401 を返します。 - MCP クライアントに認可サーバーとして
invoicexml.comを示すGET /.well-known/oauth-protected-resourceを提供します。 - 受信した Bearer トークンを、すべての送信 InvoiceXML API 呼び出しにそのまま転送します(トークンの有効性の正本は API です。MCP サーバーはトークンをローカルで検証しません)。
MCP クライアントが行う一連の処理:
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
デプロイ
ホストは標準的な ASP.NET Core アプリです。.NET サービスを実行する方法(systemd、コンテナー、PaaS など)で実行できます(このリポジトリでは特定の方法を指定していません)。
dotnet publish src/InvoiceXml.Mcp.Host -c Release -o ./publish
# then run ./publish/InvoiceXml.Mcp.Host on your host
ホスト上で環境変数を使って構成します(シークレットは決してコミットしないでください)。
ASPNETCORE_ENVIRONMENT=ProductionMcp__AuthMode=ApiKey(またはOAuth)Mcp__ApiKey__Value=…/INVOICEXML_API_KEY=…(ApiKey モード)McpUri=https://your-public-urlおよびMcp__OAuth__AuthorizationServer=https://invoicexml.com(OAuth モード)
リバースプロキシまたはロードバランサーで TLS を終端し、ホストの HTTP ポートに転送します。サーバーはステートレスなので、ロードバランサーの背後で複数のインスタンスを実行できます。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。