Server data from the Official MCP Registry
Korea POPBiLL e-tax-invoice: AI agents issue, query & transmit e-invoices, stateless BYO.
Korea POPBiLL e-tax-invoice: AI agents issue, query & transmit e-invoices, stateless BYO.
Remote endpoints: streamable-http: https://inv-kr.wishpool.app/mcp
Korea Invoice MCP is a stateless forwarding layer for Korean e-tax invoices with well-designed security practices. Credentials are processed per-request via headers and never stored; VAT computation is deterministic and server-side. Code is clean with proper input validation, error handling, and comprehensive testing. No malicious patterns or dangerous operations detected. The server appropriately delegates authentication to the merchant's own POPBiLL/Linkhub accounts, avoiding ISV-managed credential intermediation. Minor code quality observations do not impact the security posture.
5 files analyzed ยท 4 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Available as Local & Remote
This plugin can run on your machine or connect to a hosted endpoint. during install.
From the project's GitHub README.
Remote MCP server that lets any AI agent issue, query and transmit Korean ์ ์์ธ๊ธ๊ณ์ฐ์ (electronic tax invoices) through POPBiLL / Linkhub โ Korea's national-scale e-tax-invoice ASP that issues the invoice to the buyer and reports it to ๊ตญ์ธ์ฒญ (NTS / National Tax Service). It mints a Linkhub session token (HMAC-SHA256) per request, computes ๋ถ๊ฐ์ธ (VAT), issues in one step (registIssue / ์ฆ์๋ฐํ), and returns the ๋ฌธ์๊ด๋ฆฌ๋ฒํธ and ๊ตญ์ธ์ฒญ ์น์ธ๋ฒํธ. Stateless, bring-your-own credentials, never stores anything.
Pure BYO โ we are not an authentication intermediary. You self-issue your own Linkhub
LinkID+SecretKey(free at linkhub.co.kr, ํํธ๋ ์ ์ฒญ, ~20 min), join popbill.co.kr (์ฐ๋ํ์๊ฐ์ ), and register your ๊ณต๋์ธ์ฆ์ (certificate) on your own POPBiLL account. This server never holds a LinkID and never issues invoices on a shared identity. See Why no ISV-managed mode.
Live endpoint: https://inv-kr.wishpool.app/mcp ยท Registry: app.wishpool/korea-invoice-mcp
{
"mcpServers": {
"korea-invoice": {
"type": "http",
"url": "https://inv-kr.wishpool.app/mcp",
"headers": {
"x-popbill-linkid": "your-linkhub-linkid",
"x-popbill-secretkey": "your-linkhub-secretkey",
"x-popbill-corpnum": "1234567890",
"x-popbill-mode": "prod"
}
}
}
}
x-popbill-corpnum is your 10-digit ์ฌ์
์๋ฒํธ โ the invoicer/seller; invoices are issued from this business. Omit x-popbill-mode to stay in POPBILL_TEST (no fiscal effect). Your keys and certificate stay with you โ this server never stores them.
LinkID + SecretKey (issued in ~20 minutes).| Tool | What it does |
|---|---|
create_invoice | Issue a ์ ์์ธ๊ธ๊ณ์ฐ์ in one step (registIssue = ์ฆ์๋ฐํ) โ invoicer_corp_name, invoicer_ceo_name, invoicee_corp_name (+ invoicee_corp_num for ์ฌ์
์ buyers), items (item_name, qty, unit_cost KRW/NET), tax_type (๊ณผ์ธ/์์ธ/๋ฉด์ธ), purpose_type (์์/์ฒญ๊ตฌ) in; mgt_key + ntsConfirmNum out. The seller ์ฌ์
์๋ฒํธ comes from the header; ๋ถ๊ฐ์ธ is computed for you. mgt_key auto-generated if omitted. |
query_invoice | Look up one invoice by mgt_key + mgt_key_type (SELL default / BUY / TRUSTEE) โ returns the stateCode (200 ๋ฐํ์๋ฃ, 300 ๊ตญ์ธ์ฒญ ์ ์ก๋๊ธฐ, 320 ๊ตญ์ธ์ฒญ ์ ์ก์๋ฃ, 330 ์ ์ก์คํจ, 400 ๋ฐํ์ทจ์), ntsConfirmNum, timestamps and totals. |
send_to_nts | Force immediate ๊ตญ์ธ์ฒญ (NTS) transmission of an already-issued invoice. Normally transmission is automatic the next day (์ต์ผ์ ์ก); this only sends it now instead of waiting for the batch. |
Owner policy guardrails ride optional headers (x-agentpay-max-amount, x-agentpay-approval-above, x-agentpay-allowed-tools) โ set by the human owner in client config; the agent cannot relax them. The cap applies to the invoice total (KRW).
POPBiLL does not compute VAT; this server does, deterministically:
tax = floor(supplyCost ร 0.10) โ ์ ๋จ์ ์ ์ฌ (integer truncation).tax = 0.Each line carries a NET unit_cost in whole won; the server sums supplyCostTotal, taxTotal and totalAmount and stringifies the amounts as POPBiLL expects.
POST auth.linkhub.co.kr/{POPBILL|POPBILL_TEST}/Token with body {"access_id": "<์ฌ์
์๋ฒํธ>", "scope": ["member", "110"]} (110 = ์ธ๊ธ๊ณ์ฐ์ scope). The request is signed:
signature = base64( HMAC_SHA256( base64_decode(SecretKey), "POST\n" + base64(sha256(body)) + "\n" + callDT + "\n2.0\n/{ServiceID}/Token" ) ),
with headers x-lh-date, x-lh-version: 2.0, Authorization: LINKHUB {LinkID} {signature}. Returns session_token.POST /Taxinvoice with header X-HTTP-Method-Override: ISSUE and the Taxinvoice JSON (forceIssue set for ์ฆ์๋ฐํ). Business host popbill-test.linkhub.co.kr (test) / popbill.linkhub.co.kr (prod), Authorization: Bearer {session_token}, x-pb-version: 1.0. Returns the ๊ตญ์ธ์ฒญ ์น์ธ๋ฒํธ.POST /Taxinvoice/{MgtKeyType}/{MgtKey} (override NTS) forces transmission; GET /Taxinvoice/{MgtKeyType}/{MgtKey} reads the stateCode.The token signing and forwarding happen in memory per-request; nothing is embedded or stored.
An ASP integrator could hold one master LinkID/SecretKey and issue invoices for many merchants on that shared identity (an "ISV-managed" or ๋ํ model). This server deliberately does not do that: it would make us an authentication intermediary holding other businesses' issuing power and, in Korea, the ๊ณต๋์ธ์ฆ์ that legally binds a ์ ์์ธ๊ธ๊ณ์ฐ์. Pure BYO keeps issuing authority โ and liability โ entirely with the merchant, and keeps this server a stateless forwarder that stores nothing. It costs the merchant one free 20-minute signup; we think that is the right trade.
create_invoice issues to the buyer immediately and gets a ์น์ธ๋ฒํธ; the actual ๊ตญ์ธ์ฒญ ์ ์ก defaults to next-day (์ต์ผ์ ์ก). send_to_nts forces it now. There is no way to make issuance itself skip the buyer โ issuing is delivering to the buyer.node test/serve.js # local server on :3244
node test/e2e.js # protocol + validation + ๋ถ๊ฐ์ธ-math + HMAC-SHA256 test vectors + LIVE probes
The e2e suite asserts the Linkhub signature algorithm against a fixed test vector (fixed input โ fixed HMAC-SHA256 base64), the VAT math (๊ณผ์ธ floor / ์์ธ / ๋ฉด์ธ), and makes two real calls to the government-facing POPBiLL/Linkhub test infrastructure:
LinkID โ auth.linkhub.co.kr/POPBILL_TEST/Token returns -99004021 ("๋งํฌ์์ด๋๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค.") โ the auth endpoint is alive and the full HMAC signing path is exercised.Bearer โ popbill-test.linkhub.co.kr/Taxinvoice/SELL/... returns -99910004 ("Token decryption failed.") โ the business endpoint is alive.These are the deepest live proofs possible without a portal-minted LinkID and a registered ๊ณต๋์ธ์ฆ์.
Pure stateless translation layer to the POPBiLL / Linkhub API. Credentials travel per-request in headers; the session token is minted (HMAC-SHA256) and used in memory only, then discarded; the ๊ณต๋์ธ์ฆ์ stays on the merchant's own POPBiLL account. Nothing is stored or logged. Privacy policy.
National e-invoices: Mexico CFDI 4.0 inv-mx ยท Brazil NFS-e inv-br ยท Chile DTE inv-cl ยท Poland KSeF inv-pl ยท Hungary NAV inv-hu ยท Malaysia MyInvois inv-my. Korea payments (card / KakaoPay / NaverPay / ๊ฐ์๊ณ์ข via Toss) mcp-kr ยท Shipping for AI agents logi-tw ยท Local payments in 81+ countries, one family: mcp.wishpool.app (Taiwan e-invoice ้ปๅญ็ผ็ฅจ included).
MIT licensed.
Be the first to review this server!
by Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace ยท Developer Tools
Create, build, and publish Python MCP servers to PyPI โ conversationally.
by Microsoft ยท Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace ยท Developer Tools
Search and install MCP servers from inside your AI client.
by mcp-marketplace ยท Finance
Free stock data and market news for any MCP-compatible AI assistant.
by mcp-marketplace ยท Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm โ conversationally