npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ksefnik/mcp

v0.5.0

Published

Model Context Protocol server for Ksefnik — exposes KSeF reconciliation tools to Claude, Cursor and other MCP clients

Readme

@ksefnik/mcp — KSeF MCP server dla Claude, Cursor i agentów AI

Model Context Protocol server do Krajowego Systemu e-Faktur (KSeF 2.0) w TypeScript / Node.js. Podpina polskie e-faktury bezpośrednio pod Claude Desktop, Cursor, Continue i każdego innego klienta MCP. 9 narzędzi pokrywa pełny workflow: pobieranie faktur z KSeF, import wyciągów bankowych (MT940, mBank, ING, PKO BP, Santander), reconcyliacja faktur z przelewami, walidacja przed wysłaniem i wysyłka do KSeF — wszystko wywoływalne z poziomu zwykłego czatu z AI.

Szukasz KSeF MCP server, KSeF Claude AI integration, e-faktura AI agent albo Polish e-Invoice MCP? Jesteś we właściwym miejscu. Ksefnik to jeden z pierwszych produkcyjnych serwerów Model Context Protocol do polskiej e-faktury.

MCP (specyfikacja) to otwarty protokół stworzony przez Anthropic, który pozwala modelom językowym bezpiecznie wywoływać narzędzia na Twoim komputerze albo na serwerze. Ten pakiet opakowuje @ksefnik/core (silnik Ksefnika) w serwer MCP — dzięki czemu Claude Desktop (albo dowolny inny klient MCP) może:

  • pobrać faktury z KSeF za podany zakres dat
  • zaimportować wyciąg bankowy
  • odpalić reconcyliację
  • wyświetlić listę niedopasowanych faktur i przelewów
  • zatwierdzić ręczne dopasowanie
  • zwalidować fakturę przed wysłaniem
  • wysłać fakturę do KSeF

…a wszystko z poziomu zwykłego czatu z AI. "Claude, pobierz mi faktury kosztowe za marzec i pokaż, które z nich nie mają odpowiednika na wyciągu ING" — i masz raport w 30 sekund zamiast dwóch godzin w Excelu.

Instalacja

pnpm add @ksefnik/mcp @ksefnik/core

Do produkcji dochodzi adapter KSeF:

pnpm add @ksefnik/http

Konfiguracja Claude Desktop

Pelna instrukcja konfiguracji MCP: docs.ksefnik.pl/mcp/konfiguracja

Najprostsza ścieżka — przez @ksefnik/cli, który zawiera komendę mcp:

{
  "mcpServers": {
    "ksefnik": {
      "command": "npx",
      "args": ["-y", "@ksefnik/cli", "mcp"],
      "env": {
        "KSEF_NIP": "7010002137",
        "KSEF_TOKEN": "twój-token-z-portalu-MF",
        "KSEF_ENVIRONMENT": "production",
        "KSEF_PUBLIC_KEY_PATH": "/absolute/path/do/klucza/mf-public.pem"
      }
    }
  }
}

Restart Claude Desktop → przy ikonie kłódki zobaczysz nowy serwer z 9 narzędziami.

Na Windows (PowerShell)

{
  "mcpServers": {
    "ksefnik": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@ksefnik/cli", "mcp"],
      "env": {
        "KSEF_NIP": "7010002137",
        "KSEF_TOKEN": "...",
        "KSEF_ENVIRONMENT": "production",
        "KSEF_PUBLIC_KEY_PATH": "C:\\ksef\\mf-public.pem"
      }
    }
  }
}

Programatyczne użycie

Jeżeli chcesz wystawić własny MCP server (np. wpięty w istniejącą aplikację albo z custom storage), pomiń CLI i użyj createMcpServer() bezpośrednio:

import { createKsefnik } from '@ksefnik/core'
import { createHttpAdapter } from '@ksefnik/http'
import { createMcpServer } from '@ksefnik/mcp'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
import { readFileSync } from 'node:fs'

const adapter = createHttpAdapter({
  nip: process.env.KSEF_NIP!,
  token: process.env.KSEF_TOKEN!,
  environment: 'production',
  publicKeyPem: readFileSync(process.env.KSEF_PUBLIC_KEY_PATH!, 'utf8'),
})

const ksef = createKsefnik({
  config: { nip: process.env.KSEF_NIP!, environment: 'production', token: process.env.KSEF_TOKEN! },
  adapter,
})

await adapter.initSession?.()

const server = createMcpServer(ksef)
await server.connect(new StdioServerTransport())

Narzędzia MCP

Opis wszystkich narzedzi i przykladowe prompty: docs.ksefnik.pl/mcp/konfiguracja

Wszystkie 9 narzędzi rejestrowanych przez createMcpServer():

| Narzędzie | Opis | Input (kluczowe pola) | |---|---|---| | sync-invoices | Pobiera faktury z KSeF za zakres dat, zapisuje do storage | dateFrom, dateTo, nip?, subject: 'sales' \| 'cost' | | query-invoices | Zwraca faktury już zapisane w storage, z opcjonalnymi filtrami | nip?, from?, to?, invoiceNumber? | | import-bank | Importuje treść wyciągu bankowego (auto-detekcja formatu: MT940 / mBank / ING / PKO / Santander) | content (string) | | reconcile | Odpala 6-stopniowy pipeline reconcyliacji na aktualnym stanie storage | — | | get-unmatched | Zwraca listy niedopasowanych faktur i transakcji z ostatniego runa | — | | confirm-match | Ręcznie zatwierdza parę invoiceIdtransactionId (np. kiedy user widzi dopasowanie, którego pipeline nie znalazł) | invoiceId, transactionId | | validate-invoice | Odpala reguły walidacyjne na pojedynczej fakturze (NIP, stawki VAT, kwoty, daty, struktura) | invoice | | send-invoice | Wysyła zbudowaną fakturę do KSeF (wymaga adaptera z zaimplementowanym sendInvoice) | xml, nip |

Dlaczego podział na sync-invoices i query-invoices

  • sync-invoices woła KSeF. Wolno, podlega rate limitom, wymaga aktywnej sesji.
  • query-invoices czyta lokalny storage. Szybkie, bezpieczne, bez I/O do MF.

Agent LLM nie musi tego odróżniać ręcznie — w opisie narzędzia jest wyraźnie powiedziane, kiedy użyć którego. Claude z reguły sam wybiera poprawnie: jeżeli potrzebuje świeżych danych — odpala sync-invoices, jeżeli chce coś wyfiltrować z tego, co już pobrał — query-invoices.

subject: 'sales' | 'cost'

Mapuje się na subjectType w FetchInvoicesOpts:

  • salesSubject1 (faktury sprzedażowe, firma = wystawca)
  • costSubject2 (faktury kosztowe, firma = nabywca)

Domyślnie cost, bo to zdecydowanie częstszy use case dla reconcyliacji z wyciągami bankowymi.

Przykładowe prompty do Claude

Po poprawnej konfiguracji możesz pisać w czacie:

"Pobierz faktury kosztowe za luty 2026 i sprawdź, które z nich mają duplikaty w numerze faktury."

"Zaimportuj ten wyciąg z mBank [wklejasz plik] i odpal reconcyliację. Pokaż mi wszystkie przelewy powyżej 5000 zł, które nie zostały dopasowane."

"Zwaliduj tę fakturę przed wysłaniem — zwróć uwagę na sumę VAT." [załącznik z XML]

"Porównaj listy faktur kosztowych z lutego i marca 2026, znajdź kontrahentów, którzy pojawili się w obu miesiącach, i policz łączną wartość."

Claude potrafi łączyć kilka wywołań — np. sync-invoicesimport-bankreconcileget-unmatched → analiza wyników — w jednej odpowiedzi, bez potrzeby ręcznego sterowania pipelinem.

Bezpieczeństwo

  • Token KSeF i klucz publiczny MF trafiają do serwera MCP przez zmienne środowiskowe (env w konfiguracji klienta MCP) — nigdy do logów, nigdy do prompta.
  • Storage jest lokalny. Domyślnie in-memory, w trybie CLI można wskazać SqliteStorage — plik zostaje na Twoim dysku, nie jest wysyłany do modelu.
  • Narzędzia modyfikujące stan (sync-invoices, import-bank, send-invoice, confirm-match) wymagają zgody użytkownika w kliencie MCP. Claude Desktop pyta przy każdym wywołaniu, dopóki nie zaznaczysz "zawsze zezwalaj".
  • send-invoice jest w MVP stubem w @ksefnik/http (rzuca "not implemented"). Nie da się wysłać faktury na produkcję bez świadomej decyzji.

Rozszerzanie

Własne narzędzia MCP możesz dorzucić przez plugin system z @ksefnik/core. Plugin implementujący KsefPlugin.mcpTools() zostanie automatycznie zarejestrowany przy starcie serwera.

Powiązane pakiety

Licencja

MIT. Część monorepo ksefnik rozwijanego przez CodeFormers.it. Budujemy agentowe integracje KSeF, MCP serwery pod wewnętrzne systemy firm i dedykowane narzędzia AI do automatyzacji backoffice. Potrzebujesz agenta, który co poniedziałek ściąga faktury kosztowe, robi reconcyliację i wysyła raport na Slack? Zróbmy to razem.