ksef-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ksef-mcprozpocznij sesję KSeF dla NIP 1234567890"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ksef-mcp
Pierwszy publiczny MCP server do Krajowego Systemu e-Faktur (KSeF) — API v2.
Uwierzytelnianie (JWT), wystawianie, walidacja i pobieranie e-faktur przez AI. Kompatybilny z Claude Desktop, Claude Code i ChatGPT.
KSeF API v2 (2026) — nowe endpointy, JWT Bearer auth, osobne sesje online/batch. Dokumentacja API: api.ksef.mf.gov.pl/docs/v2 | Dokumentacja integracji: github.com/CIRFMF/ksef-docs
Funkcje
Narzedzia (30 toolow)
Narzedzie | Opis | Sprint | Typ |
| Srodowisko, NIP, status sesji | 1 | odczyt |
| Rozpocznij sesje KSeF (token) | 1 | akcja |
| Status aktywnej sesji | 1 | odczyt |
| Zakoncz sesje | 1 | akcja |
| Wyszukaj faktury po datach | 1 | odczyt |
| Pobierz metadane faktury | 1 | odczyt |
| Status przetwarzania faktury | 1 | odczyt |
| Pobierz XML faktury FA(3) | 1 | odczyt |
| Pobierz UPO sesji | 1 | odczyt |
| Utworz szkic faktury | 2 | akcja |
| Pobierz szkic faktury | 2 | odczyt |
| Lista szkicow | 2 | odczyt |
| Aktualizuj szkic | 2 | akcja |
| Usun szkic | 2 | akcja |
| Waliduj szkic wg FA(3) | 2 | odczyt |
| Podglad XML faktury | 2 | odczyt |
| Zablokuj draft do wysylki | 3 | akcja |
| Zadanie zatwierdzenia | 3 | akcja |
| Potwierdz zatwierdzenie | 3 | akcja |
| Wyslij fakture do KSeF | 3 | akcja |
| Log audytowy operacji | 3 | odczyt |
| Utworz korekte faktury | 4 | akcja |
| Otworz sesje batch | 4 | akcja |
| Wyslij czesc batch (ZIP) | 4 | akcja |
| Zamknij sesje batch | 4 | akcja |
| Status przetwarzania batch | 4 | odczyt |
| Wygeneruj nowy token KSeF | 4 | akcja |
| Lista tokenow (metadata) | 4 | odczyt |
| Szczegoly tokena | 4 | odczyt |
| Uniewnij token | 4 | akcja |
Related MCP server: inFakt MCP Server
Instalacja
Z repozytorium (development)
git clone https://github.com/gacabartosz/ksef-mcp.git
cd ksef-mcp
npm install
npm run buildZ npm (po publikacji)
npm install -g ksef-mcpKonfiguracja
Skopiuj .env.example do .env i uzupelnij:
cp .env.example .envZmienne srodowiskowe
Zmienna | Opis | Wymagana | Domyslnie |
| Srodowisko: | Nie |
|
| NIP podmiotu (10 cyfr) | Tak | - |
| Token autoryzacyjny KSeF | Tak | - |
| Sciezka do klucza prywatnego RSA | Nie | - |
| Sciezka do certyfikatu | Nie | - |
| Tryb zatwierdzania: | Nie |
|
| Katalog danych (drafty, sesja, audit) | Nie |
|
| Poziom logow: | Nie |
|
| Limit zapytan na sekunde | Nie |
|
| Limit zapytan na minute | Nie |
|
| Limit zapytan na godzine | Nie |
|
Token KSeF — jak uzyskac
To jest najwazniejsza sekcja jesli chcesz przetestowac integracje z KSeF.
Srodowiska KSeF 2.0
Srodowisko | Aplikacja Podatnika | API | API docs |
PROD |
| ||
TEST |
| ||
DEMO |
|
Portal informacyjny: ksef.podatki.gov.pl
Jak uzyskac token KSeF
Token KSeF mozna wygenerowac w Aplikacji Podatnika lub przez API.
Sposob 1: Przez Aplikacje Podatnika (najlatwiejszy)
Wejdz na Aplikacje Podatnika:
Produkcja: ap.ksef.mf.gov.pl
Test: ap-test.ksef.mf.gov.pl
Demo: ap-demo.ksef.mf.gov.pl
Zaloguj sie Profilem Zaufanym, podpisem kwalifikowanym lub e-dowodem
Przejdz do sekcji Tokeny i wygeneruj nowy token:
Wybierz uprawnienia: odczyt faktur, wystawianie faktur, itp.
Skopiuj token (wyswietlany tylko raz!)
Wklej token do konfiguracji MCP (
KSEF_TOKEN)
Generowanie tokenow w Aplikacji Podatnika dostepne do 31 grudnia 2026 r.
Sposob 2: Przez API (po uwierzytelnieniu XAdES)
Uwierzytelnij sie podpisem elektronicznym: uwierzytelnianie.md
Wywolaj
POST /tokensz uprawnieniami i opisemDostepne uprawnienia:
InvoiceRead,InvoiceWrite,CredentialsRead,CredentialsManage,SubunitManage,EnforcementOperations,Introspection
Dokumentacja tokenow: tokeny-ksef.md
Przeplyw uwierzytelniania (API v2)
Gdy masz token, ksef-mcp automatycznie wykonuje caly flow:
1. POST /auth/challenge → { challenge, timestamp, timestampMs }
2. POST /auth/ksef-token → zaszyfruj token|timestampMs kluczem RSA-OAEP
→ { authenticationToken (JWT), referenceNumber }
3. GET /auth/{referenceNumber} → sprawdz status (polling)
4. POST /auth/token/redeem → Bearer: authToken → { accessToken, refreshToken }
5. Uzyj: Authorization: Bearer {accessToken} do wszystkich wywolan API
6. POST /auth/token/refresh → Bearer: refreshToken → nowy accessTokenSzczegoly: Proces uwierzytelniania KSeF 2.0
Przyklad konfiguracji
KSEF_ENV=prod
KSEF_NIP=5993112591
KSEF_TOKEN=twoj-wygenerowany-token-ksefWazne uwagi
Wymagany polski IP — srodowiska KSeF sa chronione przez WAF i wymagaja polskiego adresu IP
Produkcja vs Test — na produkcji faktury maja moc prawna! Do testow uzywaj srodowiska TEST
Test — mozna uzyc fikcyjnych danych, dane sa okresowo usuwane
Demo — logowanie prawdziwymi danymi (NIP z rejestru), ale faktury bez skutkow prawnych
Klucze publiczne MF — pobierane automatycznie z
GET /security/public-key-certificatesMozesz przelaczac srodowisko w runtime toolem
ksef_env_set(bez restartu MCP)
Praca bez dostepu do KSeF (tryb offline)
Wiele narzedzi dziala bez polaczenia z API KSeF:
Narzedzie | Wymaga KSeF? | Opis |
| Nie | Tworzenie szkicow faktur |
| Nie | Walidacja wg regul FA(3) |
| Nie | Podglad XML |
| Nie | Zarzadzanie szkicami |
| Nie | Tworzenie korekty (klonowanie lokalne) |
| Nie | Informacje o konfiguracji |
| Nie | Odczyt lokalnego logu audytowego |
| Tak | Wymaga polaczenia z KSeF |
| Tak | Wymaga aktywnej sesji |
| Tak | Wymaga aktywnej sesji |
| Tak | Wymaga aktywnej sesji |
| Tak | Wymaga aktywnej sesji |
Mozesz wiec tworzyc, walidowac i przegladac faktury bez tokena i dostepu do API.
Uzycie z Claude Desktop
Dodaj do ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) lub %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"ksef": {
"command": "node",
"args": ["/sciezka/do/ksef-mcp/dist/index.js"],
"env": {
"KSEF_ENV": "test",
"KSEF_NIP": "0000000001",
"KSEF_TOKEN": "twoj-token-ksef"
}
}
}
}Po zapisaniu pliku zrestartuj Claude Desktop. Narzedzia KSeF pojawia sie w panelu bocznym.
Uzycie z Claude Code
Dodaj do ~/.claude.json (scope: user):
{
"mcpServers": {
"ksef": {
"command": "node",
"args": ["/sciezka/do/ksef-mcp/dist/index.js"],
"env": {
"KSEF_ENV": "test",
"KSEF_NIP": "0000000001",
"KSEF_TOKEN": "twoj-token-ksef"
}
}
}
}Lub w .mcp.json w katalogu projektu (scope: project):
{
"mcpServers": {
"ksef": {
"command": "node",
"args": ["/sciezka/do/ksef-mcp/dist/index.js"],
"env": {
"KSEF_ENV": "test",
"KSEF_NIP": "0000000001",
"KSEF_TOKEN": "twoj-token-ksef"
}
}
}
}Uzycie z claude.ai (Remote Connector)
ksef-mcp mozna podlaczyc jako remote MCP connector w claude.ai:
Wejdz na claude.ai → Settings → Connectors → Add custom connector
Wpisz:
Name:
KSeFRemote MCP server URL:
https://bartoszgaca.pl/ksef/mcp
Kliknij Add
Serwer odpowiada na Streamable HTTP transport (POST/GET/DELETE na /mcp).
Uwaga: Tokeny KSeF sa przechowywane server-side — claude.ai nie ma dostepu do sekretow.
Self-hosting HTTP transport
Mozesz postawic wlasna instancje:
git clone https://github.com/gacabartosz/ksef-mcp.git
cd ksef-mcp && npm install && npm run build
# Uruchom HTTP server
MCP_PORT=3400 KSEF_ENV=test node dist/http.jsNginx reverse proxy:
location /ksef/ {
proxy_pass http://127.0.0.1:3400/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 300s;
}Przeplyw wysylki faktury
Pelny przeplyw od szkicu do wysylki:
1. ksef_auth_init → Uwierzytelnij (challenge → ksef-token → redeem → JWT)
2. ksef_draft_create → Utworz szkic faktury
3. ksef_draft_validate → Zwaliduj wg regul FA(3)
4. ksef_draft_lock → Zablokuj i oblicz hash XML
5. ksef_approval_request → Zadaj zatwierdzenia
6. ksef_approval_confirm → Potwierdz (lub auto jesli KSEF_APPROVAL_MODE=auto)
7. ksef_send_invoice → Auto-otwiera sesje online, szyfruje AES-256-CBC, wysyla
8. ksef_invoice_status → Sprawdz status przetwarzania (sessionRef + invoiceRef)
9. ksef_audit_log → Przejrzyj log audytowyPrzeplyw korekty faktury
1. ksef_correction_create → Sklonuj wyslana fakture jako korekte (z powodem)
2. ksef_draft_update → Zmodyfikuj pozycje korekty
3. (dalej standardowy przeplyw: validate → lock → approval → send)Przeplyw batch (wysylka zbiorcza, API v2)
1. ksef_batch_open → Otworz sesje batch (podaj file hash + parts) → pre-signed URLs
2. ksef_batch_send_part → Upload czesci na pre-signed URLs
3. ksef_batch_close → Zamknij sesje batch
4. ksef_batch_status → Sprawdz status przetwarzania (GET /sessions/{ref})Tryb automatycznego zatwierdzania
Ustaw KSEF_APPROVAL_MODE=auto aby pominac reczne zatwierdzanie. W tym trybie ksef_approval_request automatycznie potwierdza approval.
Uwaga: Tryb automatyczny jest wygodny do testow, ale w produkcji zalecany jest tryb
manualdla pelnej kontroli.
Testowanie narzedzi (stdio)
Mozesz testowac narzedzia bezposrednio przez stdin/stdout:
Lista narzedzi
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
KSEF_NIP=0000000001 node dist/index.js 2>/dev/null | jq .Informacje o srodowisku
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ksef_env_info","arguments":{}}}' | \
KSEF_NIP=0000000001 KSEF_ENV=test node dist/index.js 2>/dev/null | jq .Utworzenie szkicu faktury
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ksef_draft_create","arguments":{"sellerNip":"0000000001","sellerName":"Firma Test Sp. z o.o.","sellerAddress":"ul. Testowa 1, 00-001 Warszawa","buyerNip":"9999999999","buyerName":"Klient Test S.A.","buyerAddress":"ul. Przykladowa 10, 00-002 Krakow","invoiceNumber":"FV/2026/001","issueDate":"2026-03-08","sellDate":"2026-03-08","currency":"PLN","items":[{"name":"Usluga programistyczna","quantity":1,"unitPrice":10000,"vatRate":23,"unit":"szt"}]}}}' | \
KSEF_NIP=0000000001 node dist/index.js 2>/dev/null | jq .Walidacja szkicu
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ksef_draft_validate","arguments":{"id":"ID-DRAFTU-Z-KROKU-WYZEJ"}}}' | \
KSEF_NIP=0000000001 node dist/index.js 2>/dev/null | jq .Rate limiting
Wbudowany rate limiter chroni przed przekroczeniem limitow API KSeF:
5 zapytan/sekunde (domyslnie)
200 zapytan/minute (domyslnie)
1000 zapytan/godzine (domyslnie)
Limity mozna dostosowac zmiennymi srodowiskowymi:
KSEF_RATE_LIMIT_PER_SECOND=10
KSEF_RATE_LIMIT_PER_MINUTE=300
KSEF_RATE_LIMIT_PER_HOUR=2000Dodatkowo:
Odpowiedz 429 (Too Many Requests) — automatyczne odczekanie wg naglowka
Retry-Afteri ponowienieBledy 500/502/503 — automatyczne ponowienie z exponential backoff (max 3 proby)
Bledy 400/401/403/440 — brak ponowien (bledy klienta)
Bezpieczenstwo
Tokeny i klucze nigdy nie sa przekazywane do modelu AI — pozostaja w srodowisku serwera MCP
NIP-y sa maskowane w logach (
123***90)NIP-y w audit logu sa hashowane SHA-256
Wszystkie logi ida na stderr (stdout zarezerwowany dla protokolu MCP)
Sesja zapisywana z uprawnieniami
0600Dwufazowa wysylka — faktura musi byc zwalidowana, zablokowana i zatwierdzona przed wyslaniem
Hash XML — weryfikowany na kazdym etapie (lock → approval → send)
Approval TTL — zatwierdzenie wygasa po 15 minutach
Audit trail — kazda operacja jest logowana w formacie JSONL
Srodowiska KSeF 2.0
Srodowisko | Aplikacja Podatnika | API | Docs | Logowanie | Dane |
|
| Prawdziwe dane | Moc prawna! | ||
|
| Fikcyjne dane | Okresowo usuwane | ||
|
| Prawdziwy NIP | Bez skutkow prawnych |
Portal informacyjny: ksef.podatki.gov.pl | Infolinia: 22 330 03 30 (pn-pt 8:00-18:00)
Roadmap
Sprint 1: Uwierzytelnianie + odczyt faktur (auth, query, session)
Sprint 2: Kryptografia + szkice faktur + walidacja FA(3)
Sprint 3: Dwufazowa wysylka + audit trail
Sprint 4: Korekty + batch + zarzadzanie tokenami
Sprint 5: Rate limiting + dokumentacja + token testowy
Sprint 6: Migracja na KSeF API v2 — nowe endpointy, JWT auth, sesje online/batch
Architektura
src/
index.ts — Punkt wejscia MCP (Server + StdioTransport)
mcp/
registry.ts — Rejestr narzedzi (registerTool, collectAll, dispatch)
auth-tools.ts — Narzedzia auth (4)
query-tools.ts — Narzedzia query (5)
draft-tools.ts — Narzedzia draft (7)
send-tools.ts — Narzedzia send (5)
correction-tools.ts — Narzedzia korekt (1)
batch-tools.ts — Narzedzia batch (4)
token-tools.ts — Narzedzia tokenow (4)
domain/
draft.ts — CRUD szkicow, obliczanie sum (+ pola korekcyjne)
validator.ts — Walidacja FA(3): NIP, daty, stawki VAT, sumy
xml-builder.ts — Generator XML FA(3) (fast-xml-parser)
approval.ts — Dwufazowe zatwierdzanie (TTL 15min)
audit.ts — Append-only JSONL audit log
correction.ts — Faktury korygujace (klonowanie wyslanej faktury)
infra/ksef/
client.ts — HTTP client (fetch + rate limit + retry + backoff)
auth.ts — Auth v2 (challenge → ksef-token → redeem → JWT + refresh)
crypto.ts — RSA-OAEP, AES-256-CBC, SHA-256, public key certs
session.ts — Sesja online (open, send encrypted, close, status, UPO)
batch.ts — Sesja batch (open → pre-signed URLs, upload, close, status)
token-client.ts — Zarzadzanie tokenami KSeF (POST/GET/DELETE /tokens)
rate-limiter.ts — Token-bucket rate limiter
utils/
config.ts — Zmienne srodowiskowe, URL-e, katalogi
logger.ts — Logi JSON na stderr z maskowaniem sekretow
errors.ts — toolResult/toolError, KsefApiErrorLicencja
MIT -- zobacz LICENSE
Autor
Bartosz Gaca — bartoszgaca.pl | GitHub
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gacabartosz/ksef-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server