Stackin について
Stackinは、ブラジルのNF-eとNFS-eを扱う事業者向けのホスト型MCPサーバーです。AIクライアントから税務書類を発行・管理でき、コード検索や却下理由の診断にも対応します。
主な機能
- 01NF-eとNFS-eの発行・照会・取消
- 02税務当局の却下コード診断
- 03NF-eの訂正書提出
- 04受領した請求書の確認と応答
- 05未使用のNF-e番号範囲の無効化
- 06税務コードと納税者の検索
活用シーン
- 01AIクライアントから請求書を発行
- 02却下されたNF-eを調べて対応方法を選択
- 03他社が発行した請求書を確認
- 04NCM、CFOP、CEST、CNPJの情報確認
MCP 対応
ホスト型サーバーはstreamable HTTP経由で、税務書類と検索のツールをMCPクライアントに提供します。OAuth 2.1または静的Bearerキーに対応しています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.stackin.io/mcpclaude mcp add --transport http stackin-io-stackin https://mcp.stackin.io/mcp{"mcpServers":{"stackin-io-stackin":{"type":"http","url":"https://mcp.stackin.io/mcp"}}}Cursor で開く{"servers":{"stackin-io-stackin":{"type":"http","url":"https://mcp.stackin.io/mcp"}}}VS Code で開く{"mcpServers":{"stackin-io-stackin":{"type":"http","url":"https://mcp.stackin.io/mcp"}}}{"mcpServers":{"stackin-io-stackin":{"serverUrl":"https://mcp.stackin.io/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
16| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| items | array | はい | |
| number | any | いいえ | |
| series | any | いいえ | |
| tax_id | string | はい | |
| client_name | string | はい | |
| document_type | enum | はい | nfse | nfe |
| idempotency_key | any | いいえ | |
| recipient_address | any | いいえ |
詳細
Stackin MCP プラグイン — ChatGPT、Claude Code、Codex、Cursor 向け NF-e と NFS-e
Model Context Protocol に対応するあらゆる AI クライアントから、ブラジルの電子請求書(nota fiscal eletrônica)を発行、照会、訂正、キャンセルできます。
自然な言葉で質問するだけです――「このサービスの NFS-e を発行して」、「前回の NF-e が却下された理由は?」、 「請求書 1042 をキャンセルして、理由コードを教えて」――するとモデルが Stackin を通じて、 SEFAZ および自治体の NFS-e ウェブサービスに対して処理します。
16 個のツール、9 個のスキル、ホステッドサーバー 1 台。 SDK のインストールも、XML への署名も、クライアントでの証明書管理も不要です。
- 🧾 NF-e(商品)と NFS-e(サービス)— 発行、照会、キャンセル
- 🔎 税務当局独自のコードから却下の原因を診断し、再発行と訂正のどちらにするか選択
- ✉️ 認可済み NF-e の訂正通知書(CC-e)
- 📥 受領した請求書 — 他社が自社宛てに発行した書類を読み取り、申告
- 🔢 予約済みで未使用の NF-e 範囲の番号無効化
- 📄 会話から直接 DANFE / DANFSe PDF を取得
- 🔎 税務コードの検索 — 推測せずに NCM、CFOP、CEST を特定し、CNPJ の帰属先を確認
目次
- Claude Code へのインストール
- ChatGPT と Codex へのインストール
- Cursor または任意の MCP クライアントから接続
- 認証:OAuth または API キー
- スキル
- このリポジトリの内容
- 1 つのプラグイン、3 つのクライアント
- MCP Registry
- FAQ
- メンテナー向けメモ
Claude Code へのインストール
このリポジトリ自体がマーケットプレイスなので、GitHub から直接インストールできます。
claude plugin marketplace add stackin-io/stackin-mcp-plugin
claude plugin install stackin@stackin
このプラグインには 9 個のスキルが含まれ、Claude Code の接続先として https://mcp.stackin.io/mcp が設定されています。
設定は一切不要です:最初のツール呼び出しで WWW-Authenticate を含む 401 が返され、Claude Code がその認証フローを進めます。セッション内で /mcp を実行し、開いたブラウザーで認証すると、トークンが保存されます。クライアントは /oauth/register を通じて自身を登録するため、誰かから client_id を発行してもらう必要はありません。
固定キーを使いたい場合は、プラグインをインストールせずにヘッダーを指定してサーバーを手動で追加してください。詳しくは認証を参照してください。
ChatGPT と Codex へのインストール
同じサーバーが Developer Mode 経由で ChatGPT アプリとして公開されています。開発者モードを有効にし、https://mcp.stackin.io/mcp をコネクターとして登録して認証します。動画を含む詳しい手順はdocs.stackin.io/mcpをご覧ください。
Cursor または任意の MCP クライアントから接続する
任意の MCP クライアントから、このプラグインを使わずにサーバーを直接利用できます。Cursor は、プロジェクト内の
.cursor/mcp.json または ~/.cursor/mcp.json を読み込みます。変数の展開構文は Claude Code のものとは異なります。Cursor では ${env:VAR} を使用します。
{
"mcpServers": {
"stackin": {
"url": "https://mcp.stackin.io/mcp",
"headers": { "Authorization": "Bearer ${env:STACKIN_API_KEY}" }
}
}
}
Claude Code で手動設定する場合 — ${VAR} は環境変数から展開されます。
claude mcp add --transport http stackin https://mcp.stackin.io/mcp \
--header "Authorization: Bearer ${STACKIN_API_KEY}"
| プロパティ | 値 |
|---|---|
| エンドポイント | https://mcp.stackin.io/mcp |
| トランスポート | streamable-http |
| 認証 | PKCE と動的クライアント登録による OAuth 2.1、または静的 Bearer キー |
| 環境 | 検証環境と本番環境。キーまたは認可済みの接続に固定されます |
認証:OAuth または API キー
接続方法は 2 つあり、それぞれ挙動が異なります。
API キーを使う場合。 app.stackin.io で生成します。キーには環境がすでに設定されているため、クライアント側で選択する必要はありません。Authorization: Bearer <key> として送信します。
キーを使わず OAuth を利用する場合。 ヘッダーを省略します。ツール呼び出しに対して WWW-Authenticate を含む 401 が返され、/.well-known/oauth-protected-resource を示します。これにより、/mcp を実行したときに Claude Code でログインが促されます。サーバーは動的クライアント登録(/oauth/register)に対応しているため、自動登録するクライアントには、誰の操作も必要なく client_id が付与されます。Cursor では、動的に登録せず、auth キーの下に静的なクライアント認証情報を設定することもできます。
2026-09-09 にブラウザーまで動作確認済みです。ヘッダーなしでサーバーに接続でき、ツール呼び出しに対して resource_metadata チャレンジを含む 401 が返され、保護リソースのドキュメントが解決され、/oauth/register は 201 を返し、/oauth/authorize は同意画面にリダイレクトされます。Claude Code または Cursor からブラウザーを介したフロー自体は、まだ最後まで確認していません — ChatGPT では実際に同意まで完了しましたが、これら 2 つでは未確認です。途中で止まった場合は、使用されている redirect_uri を確認してください。/oauth/authorize が受け付けるのは、クライアントが登録した URI のみです。
スキル
スキルは、ツールの説明だけでは伝えられない操作の順序や税務ルールがある場合にのみ用意されています。
| スキル | 内容 |
|---|---|
issue-invoice | 状況に応じて必要な書類と、発行前の検証 |
consult-invoice | 書類の検索方法と、各操作で使用する識別子 |
cancel-invoice | 取り消せない操作の前の確認と、代わりに訂正書が適切な場合 |
diagnose-invoice | 税務当局独自の却下コードの読み方と、再発行と訂正のどちらを選ぶか |
correct-invoice | 認可済み NF-e に対する訂正書の提出と、CC-e で変更できない内容 |
invalidate-numbering | 予約済みで未使用の NF-e 番号範囲を無効として申告する方法 |
received-invoices | 他社がこの事業者宛てに発行した書類の確認と、それらへの回答 |
fiscal-lookup | 推測で選ぶのではなく、発行前に NCM、CFOP、CEST を特定する方法 |
taxpayer-lookup | 納税者番号の名義人の確認と、404 が CNPJ 無効を意味しない理由 |
このリポジトリの内容
このリポジトリは配布レイヤーです。マニフェスト、スキル、アセットが含まれます。
サーバー本体は https://mcp.stackin.io/mcp にあり、Model Context Protocol を使用します。
| パス | 内容 |
|---|---|
.codex-plugin/plugin.json | プラグインの識別情報、バージョン、カテゴリ、法的情報へのリンク |
.app.json | プラグインを登録済みの MCP 接続に対応付けます |
.agents/plugins/marketplace.json | 公開前のインストールに使用するローカルマーケットプレイス |
.claude-plugin/plugin.json | Claude Code 用のプラグイン識別情報 |
.claude-plugin/marketplace.json | Claude Code が追加できる、このリポジトリのマーケットプレイス |
.mcp.json | Claude Code 用のホスト型 MCP サーバー |
server.json | MCP Registry のエントリー |
skills/ | ツールの説明だけでは不十分な 9 つのワークフロー |
assets/ | アイコンとロゴ |
1 つのプラグイン、3 つのクライアント
リポジトリに 3 つのマニフェストがあるのは、3 つのエコシステムで参照先が異なり、ファイルが見つからない場合はいずれもエラーを表示せずに失敗するためです。
| クライアント | 参照先 | 読み込む内容 |
|---|---|---|
| ChatGPT / Codex | .codex-plugin/plugin.json + .app.json | アプリ ID とホストされた MCP |
| Codex marketplace | .agents/plugins/marketplace.json | ソースとしてのこのリポジトリ |
| Claude Code | .claude-plugin/marketplace.json、.claude-plugin/plugin.json、.mcp.json | スキルと https://mcp.stackin.io/mcp |
Claude Code にフォルダーを追加すると、3 行目が存在するまでは "No marketplace manifest found …
(expected .cursor-plugin/marketplace.json or .claude-plugin/marketplace.json)" というエラーが発生していました。スキルは共通です。3 つのクライアントすべてが skills/ を参照するため、スキルを一度作成すれば、どのクライアントからも読み込まれます。
MCP Registry
server.json は、official MCP Registry 向けにホストされたサーバーをリモートエントリとして記述します。io.github.stackin-io/stackin、streamable-http で、インストールするパッケージはありません。
公開は自動化されています。v* タグをプッシュすると .github/workflows/publish-mcp.yml が実行され、タグからバージョンを設定し、GitHub OIDC で認証して公開します。保存されたトークンは不要です。io.github.stackin-io/* 名前空間の使用を許可するのは、ワークフロー自体の ID です。
git tag v1.0.0 && git push origin v1.0.0
Registry に掲載されるのは 公開 リポジトリであるため、エントリはサーバーのソースコードの隣ではなく、ここにあります。
よくある質問
クライアントにデジタル証明書(A1/A3)が必要ですか? いいえ。app.stackin.io に証明書を一度アップロードすれば、サーバー側に保持されます。
本番環境でも使えますか? それとも検証環境のみですか? どちらでも使えます。環境は API キー、または OAuth で認証した接続によって固定されるため、呼び出しごとに選択する必要はありません。
NFS-e はどの自治体に対応していますか? Stackin が対応している自治体です。docs.stackin.io をご確認ください。NF-e は SEFAZ を通じて全国に対応しています。
このプラグインなしでサーバーを使えますか? はい。これは通常の MCP サーバーです。プラグインはスキルを追加し、手動設定の手間を省くだけです。
無料ですか? 発行には Stackin アカウントのクレジットを消費します。照会とキャンセルは消費しません。
コード検索で 403 が返されていましたが、今は返されません。何が変わったのですか? 2026-09-10 までは、この 4 つのルートに OAuth スコープがなかったため、認証済みアプリでも付与された権限にかかわらず拒否されていました。現在は invoice:read が必要です。どの接続にもすでに付与されているため、その日より前に作成した接続も、再作成せずに使えます。
有効だと分かっている CNPJ を lookup_taxpayer で検索すると 404 が返されます。問題がありますか? おそらくありません。このレジストリは Receita Federal のデータをもとに毎月更新されるため、ここ数週間に登録された会社はまだ含まれていない可能性があります。有効性を確認するものではないため、これを理由に請求書をブロックするべきではありません。
メンテナーノート
.app.json の app_id は、mcp.stackin.io が OpenAI Developer Mode に登録され、実際のコネクターで OAuth 認証が完了した 2026-09-06 に入力されました。それまでは意図的に空欄のままでした。これは事前に準備できない唯一の値だからです。
古いツール一覧は、再スキャンではなく新しいアプリを作成して修正しました。 最初のアプリ(asdk_app_6a9d458d…)は NFS-e の制限前にスキャンされており、以前のツール構成を公開し続けていました。.app.json には現在、2つ目のアプリが記載されています。3つ目を作成する場合は、このファイルを更新してください。値が誤っていても警告は表示されません。
NF-e は 2026-09-07 に 2段階で復活しました。 まず、既存の8つのツールで document_type が nfe も受け入れるように拡張されました。これはツール数からは分からない変更でした。その後、NF-e 専用の4つの操作、correct_invoice、invalidate_numbering、list_received_invoices、manifest_received_invoice が復活しました。これでツールは12個、スキルは7個です。
4つの検索ツールは 2026-09-10 に追加されました。lookup_fiscal_code、search_fiscal_codes、list_fiscal_kinds、lookup_taxpayer と、fiscal-lookup、taxpayer-lookup の各スキルです。現在、ツールは16個、スキルは9個です。 これらはすべての OAuth トークンを拒否する状態でリリースされました。各ルートにスコープがまったく設定されていなかったためです。同日、invoice:read が付与されたので、再接続は不要です。
コネクターは、スキャンした時点のツール一覧をキャッシュします。 アプリは 2026-09-06 10:48 に認可され、NFS-e の制限は 12:00 に有効になったため、ChatGPT はサーバーに存在しない3つを含む11個のツールを引き続き公開していました。ツール一覧を更新するには、新しいプラグインバージョンを公開して Scan Tools を実行します。修正が必要なのはサーバー側ではありません。サーバーはすでに正しい状態でした。テストする前にツール数を確認してください。正しい情報はサーバーにあり、scripts/check_skills.py はサーバーをリアルタイムで読み取ります。
識別子は URL ではなく、コネクターページから取得してください。 アドレスは chatgpt.com/plugins/plugin_asdk_app_… で、ここでの plugin_ はルートの一部であり、ID の一部ではありません。ここに設定する値は、ページ上の「App ID」フィールドに表示される値、つまり asdk_app_… です。誤っていてもすぐには分かりません。送信に失敗するまで検証されないためです。
mcp.authentication は、サーバーが OAuth に対応する前に bearer に設定されていました。コネクターページには現在、Authorization used: OAuth と表示されているので、oauth としています。このフィールドの列挙値は OpenAI の公開ドキュメントに記載されていません。developers.openai.com/codex/plugins/apps.md は 404 にリダイレクトされるため、これは検証済みの値ではなく、実態に即した説明です。送信時に拒否された場合は、まずここを確認してください。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。