mcp-parasut

mcp
Guvenlik Denetimi
Basarisiz
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 8 GitHub stars
Code Basarisiz
  • child_process — Shell command execution capability in gulpfile.js
  • exec() — Shell command execution in gulpfile.js
  • rm -rf — Recursive force deletion command in package.json
  • process.env — Environment variable access in packages/parasut-mcp-server/dist/config.js
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

unofficial Paraşüt SDK and MCP server — Turkish accounting, invoices, e-fatura

README.md

Paraşüt MCP & Node.js SDK

Resmî olmayan (unofficial), tam tip güvenli (type-safe) TypeScript Node.js SDK ve Model Context Protocol (MCP) Sunucusu.

Paraşüt REST API V4 altyapısı üzerine inşa edilmiştir. Claude Desktop, Cursor, Claude Code, Windsurf veya herhangi bir MCP istemcisi üzerinden Türkçe doğal dil komutlarıyla cari hesapları, satış/alış faturalarını, kasa/banka hareketlerini, stokları ve GİB resmî e-belgelerini (e-Fatura, e-Arşiv, e-SMM) yönetmenizi sağlar.

# Node.js SDK Kurulumu
npm install @yigitkonur/parasut-node-sdk
# MCP Sunucusunu Doğrudan Çalıştırma
npx @yigitkonur/parasut-mcp-server

npm version
npm sdk
TypeScript
License: MIT


📦 Paket Mimarisi

Bu repo pnpm workspace tabanlı bir monorepo olup iki ana paketten oluşur:

  1. @yigitkonur/parasut-node-sdk
    • Paraşüt REST API V4'ü saran hafif ve sıfır çalışma zamanı bağımlılığına (zero runtime dependencies) sahip TypeScript SDK.
    • Yerel fetch API'si, JSON:API v1.0 standardı serileştirme/ayrıştırma, Token Bucket rate limiting (10 istek / 10 saniye), exponential backoff retry mekanizması ve otomatik 401 token yenileme (onUnauthorized) içerir.
  2. @yigitkonur/parasut-mcp-server
    • Claude Desktop, Cursor, Claude Code ve diğer MCP uyumlu yapay zeka istemcilerine stdio üzerinden 34 adet AI-optimize araç sunar.
    • Finansal işlemlerde kazara veri kaybını önlemek için Önizleme (Preview/Dry-run) ve GİB e-belgelerinde Çift Aşamalı Teyit (Double Confirmation) mekanizmasına sahiptir.

[!NOTE]
Bu proje Paraşüt Yazılım Teknolojileri A.Ş. ile resmî bir bağlantıya sahip değildir; açık kaynak topluluk projesidir.


🔐 Kimlik Doğrulama Yöntemleri (Authentication)

SDK ve MCP sunucusu iki farklı kimlik doğrulama yöntemini tam olarak destekler:

1. Kullanıcı Adı & Şifre (OAuth2 Resource Owner Password Flow)

Paraşüt API Client ID/Secret ve kullanıcı giriş bilgilerinizle doğrudan oturum açar:

PARASUT_CLIENT_ID="your-client-id"
PARASUT_CLIENT_SECRET="your-client-secret"
PARASUT_USERNAME="[email protected]"
PARASUT_PASSWORD="your-password"
PARASUT_COMPANY_ID="123456" # Opsiyonel: Verilmezse otomatik tespit edilir

2. Token Tabanlı Kimlik Doğrulama (Access & Refresh Token)

Önceden alınmış OAuth token'ları veya harici servislerle entegrasyon için kullanıcı adı/şifre gerekmeden çalışır:

PARASUT_ACCESS_TOKEN="your-access-token"
PARASUT_REFRESH_TOKEN="your-refresh-token" # Opsiyonel: 401 yenileme için önerilir
PARASUT_CLIENT_ID="your-client-id"         # Refresh token kullanıldığında gereklidir
PARASUT_CLIENT_SECRET="your-client-secret" # Refresh token kullanıldığında gereklidir
PARASUT_COMPANY_ID="123456"               # Opsiyonel: Otomatik tespit edilebilir

⚡ Öne Çıkan Kimlik Doğrulama Özellikleri

  • Otomatik Şirket (Company ID) Tespiti: PARASUT_COMPANY_ID belirtilmediğinde SDK ve MCP sunucusu GET /v4/me uç noktasına bağlanarak kullanıcının erişim yetkisi olan ilk şirket ID'sini otomatik olarak keşfeder ve isteklerde kullanır.
  • Otomatik 401 Token Yenileme (Transparent Refresh & Retry): Paraşüt API'sinde access token süresi (2 saat) dolup 401 Unauthorized döndüğünde, SDK arka planda refresh token ile yeni bir access token temin eder, authorization başlığını günceller ve başarısız olan isteği otomatik olarak yeniden dener.

🛠️ MCP Sunucusu Kurulumu

Claude Desktop Kurulumu

Aşağıdaki yapılandırmayı işletim sisteminize göre ilgili dosyaya ekleyin:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "parasut": {
      "command": "npx",
      "args": ["-y", "@yigitkonur/parasut-mcp-server"],
      "env": {
        "PARASUT_CLIENT_ID": "your-client-id",
        "PARASUT_CLIENT_SECRET": "your-client-secret",
        "PARASUT_USERNAME": "[email protected]",
        "PARASUT_PASSWORD": "your-password",
        "PARASUT_COMPANY_ID": "123456"
      }
    }
  }
}

Alternatif olarak Token tabanlı kurulum:

{
  "mcpServers": {
    "parasut": {
      "command": "npx",
      "args": ["-y", "@yigitkonur/parasut-mcp-server"],
      "env": {
        "PARASUT_ACCESS_TOKEN": "your-access-token",
        "PARASUT_REFRESH_TOKEN": "your-refresh-token",
        "PARASUT_CLIENT_ID": "your-client-id",
        "PARASUT_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Cursor Kurulumu

Cursor ayarlarında (Features > MCP Servers) veya .cursor/mcp.json dosyasında tanımlayabilirsiniz:

{
  "mcpServers": {
    "parasut": {
      "command": "npx",
      "args": ["-y", "@yigitkonur/parasut-mcp-server"],
      "env": {
        "PARASUT_CLIENT_ID": "your-client-id",
        "PARASUT_CLIENT_SECRET": "your-client-secret",
        "PARASUT_USERNAME": "[email protected]",
        "PARASUT_PASSWORD": "your-password"
      }
    }
  }
}

mcpc CLI ile Canlı Test ve Kullanım

# Sunucu bağlantısını test etme ve araçları listeleme
mcpc npx -y @yigitkonur/parasut-mcp-server tools-list

# Canlı araç çağrısı örneği
mcpc npx -y @yigitkonur/parasut-mcp-server tools-call get_financial_summary

🧰 MCP Araçları Kataloğu (34 Araç - Detaylı Türkçe Rehber)

MCP sunucusu 8 ana faaliyet alanında toplam 34 aracı kullanıma sunar. Tüm yazma/güncelleme araçları varsayılan olarak Önizleme (Preview/Dry-Run) modunda çalışarak yanlış işlem yapılmasını engeller.

Güvenlik Seviyeleri:
🔍 Salt Okunur   : Veri okur, sistemde değişiklik yapmaz. Doğrudan çalışır.
⚠️ Önizleme Korumalı: confirm=true verilmedikçe sadece yapılacak işlemin özetini sunar.
🚨 Çift Onay Korumalı: confirm=true VE i_understand_this_is_irreversible="YES" gerektirir (GİB e-Belge).

1. Cari Hesaplar & İletişim (Contacts - 4 Araç)

Müşteri ve tedarikçi kayıtlarını aramak, görüntülemek, yeni cari kart açmak ve güncellemek için kullanılır.

Araç Adı Güvenlik Ne İşe Yarar / Açıklama Temel Parametreler
search_contacts 🔍 İsim, vergi dairesi/numarası, e-posta veya şehre göre müşteri ve tedarikçileri arar ve listeler. query (arama metni), type (customer, supplier), page, per_page
get_contact 🔍 Belirtilen ID'ye sahip cari hesabın tüm detaylarını, adreslerini, bakiye ve iletişim bilgilerini getirir. id (Cari hesap ID'si)
create_contact ⚠️ Yeni bir müşteri veya tedarikçi kartı oluşturur. confirm=true verilmezse önizleme döner. name, contact_type (company, person), tax_number, tax_office, email, city, confirm
update_contact ⚠️ Mevcut bir cari kartın bilgilerini (adres, telefon, vergi no vb.) günceller (PUT /contacts/{id}). id, name, email, phone, address, confirm

2. Satış Faturaları (Sales Invoices - 7 Araç)

Satış faturalarını listeleme, filtreleme, yeni fatura kesme, iptal etme, arşivden çıkarma, PDF alma ve tahsilat ekleme işlemleri.

Araç Adı Güvenlik Ne İşe Yarar / Açıklama Temel Parametreler
search_invoices 🔍 Satış faturalarını müşteri, fatura numarası, tarih aralığı ve ödeme durumuna (paid, overdue, unpaid, not_due) göre filtreler. query, status, start_date, end_date, page, per_page
get_invoice 🔍 Fatura detaylarını, kalemlerini, KDV/vergi dağılımını ve varsa bağlı e-belge ilişkilerini getirir. id (Fatura ID'si)
create_invoice ⚠️ Yeni satış faturası oluşturur. Ürün kalemleri, KDV oranları, iskonto ve vade tarihi tanımlanabilir. contact_id, description, issue_date, due_date, details (ürün kalemleri), confirm
cancel_invoice ⚠️ Henüz resmîleşmemiş faturayı iptal durumuna çeker veya faturayı siler (DELETE /sales_invoices/{id}). id, confirm
recover_invoice ⚠️ İptal edilmiş bir faturayı yeniden aktif duruma getirir (PATCH /sales_invoices/{id}/recover). id, confirm
invoice_pdf 🔍 Faturanın resmî e-Arşiv veya e-Fatura PDF bağlantısını döner. API V4'e uygun olarak active_e_document üzerinden PDF URL'ini veya UBL dosyasını temin eder. id (Fatura ID'si)
record_invoice_payment ⚠️ Satış faturasına nakit, banka veya POS hesabı üzerinden tahsilat (ödeme) kaydeder. invoice_id, account_id, amount, date, description, confirm

3. Alış Faturaları & Gider Fişleri (Purchase Bills - 4 Araç)

Tedarikçilerden gelen faturaların ve işletme gider fişlerinin takibi, sisteme işlenmesi ve ödemelerinin kaydedilmesi.

Araç Adı Güvenlik Ne İşe Yarar / Açıklama Temel Parametreler
search_bills 🔍 Alış faturalarını ve gider fişlerini tedarikçi, tarih, fatura no ve ödeme durumuna göre sorgular. query, status, start_date, end_date, page, per_page
get_bill 🔍 Belirli bir alış faturasının veya gider fişinin detaylarını ve kalemlerini getirir. id (Fiş/Fatura ID'si)
create_bill ⚠️ Yeni bir alış faturası veya masraf fişi kaydeder (item_type: 'purchase_bill'). Vade tarihi girilmezse düzenleme tarihi esas alınır. contact_id, issue_date, due_date, details (kalemler), total_amount, confirm
record_bill_payment ⚠️ Alış faturasına istinaden kasa veya banka hesabından tedarikçiye yapılan ödemeyi kaydeder. bill_id, account_id, amount, date, description, confirm

4. Ürün & Hizmet Yönetimi (Products - 4 Araç)

Stok kartları, satılan mal ve hizmetlerin tanımlanması, birim fiyat ve KDV oranlarının yönetimi.

Araç Adı Güvenlik Ne İşe Yarar / Açıklama Temel Parametreler
search_products 🔍 Ürün ve hizmetleri isim, ürün kodu (barkod/stok kodu) veya kategoriye göre arar. query, page, per_page
get_product 🔍 Ürünün alış/satış fiyatı, stok takibi durumu, birimi (adet, kg, saat vb.) ve KDV oranını getirir. id (Ürün ID'si)
create_product ⚠️ Yeni bir ürün veya hizmet kartı açar. Alış/satış fiyatları, KDV ve stok takibi belirlenebilir. name, code, vat_rate, unit, list_price, inventory_tracking, confirm
update_product ⚠️ Mevcut ürünün fiyatını, adını veya vergi bilgilerini günceller (PUT /products/{id}). id, name, list_price, vat_rate, confirm

5. Resmî E-Belgeler & GİB Entegrasyonu (E-Documents - 4 Araç)

Gelir İdaresi Başkanlığı (GİB) e-Fatura mükellefiyet sorgulama ve e-Fatura / e-Arşiv / e-SMM düzenleme ve gönderme işlemleri.

[!CAUTION]
E-Belge gönderme araçları resmî mali mühür ile imzalanıp GİB portalına iletildiğinden kesinlikle geri alınamaz. Bu araçlar güvenliğiniz için Çift Aşamalı Teyit gerektirir.

Araç Adı Güvenlik Ne İşe Yarar / Açıklama Temel Parametreler
check_einvoice_inbox 🔍 Verilen VKN/TCKN numarasının GİB e-Fatura mükellefi olup olmadığını ve posta kutusu (PK/GB) adresini sorgular. vkn (Vergi / TC Kimlik No)
send_einvoice 🚨 Satış faturasını GİB e-Fatura olarak alıcının posta kutusuna gönderir ve asenkron işin sonucunu bekler. invoice_id, note, scenario (commercial, basic), confirm: true, i_understand_this_is_irreversible: "YES"
send_earchive 🚨 Satış faturasını resmî e-Arşiv Fatura olarak düzenler, GİB'e iletir ve PDF'ini hazır hale getirir. invoice_id, note, confirm: true, i_understand_this_is_irreversible: "YES"
send_esmm 🚨 Serbest Meslek Makbuzunu (e-SMM) elektronik ortamda GİB onayına sunar. invoice_id, note, confirm: true, i_understand_this_is_irreversible: "YES"

6. Finans, Kasa/Banka & Raporlar (Financial - 4 Araç)

Nakit akışı, banka hesapları, hesap hareketleri, banka masrafları ve anlık finansal durum özeti.

Araç Adı Güvenlik Ne İşe Yarar / Açıklama Temel Parametreler
list_accounts 🔍 Tanımlı tüm banka, kasa ve POS hesaplarını, döviz cinslerini ve güncel bakiyelerini listeler. —
search_transactions 🔍 Belirli bir banka/kasa hesabının hesap hareketlerini (gelen/giden ödemeler, transferler) listeler. account_id verilmezse varsayılan hesabı otomatik seçer. account_id, start_date, end_date, page, per_page
create_bank_fee ⚠️ Banka masrafı, EFT/havale komisyonu veya hesap işletim ücreti gibi giderleri ilgili hesaba kaydeder. account_id, amount, date, description, confirm
get_financial_summary 🔍 Şirketin anlık finansal röntgenini çeker: Kasa ve bankalardaki toplam nakit, vadesi gelmiş/geçecek alacaklar, ödenecek borçlar ve net finansal pozisyonu tek bir özet tabloda sunar. —

7. Stok & Depo Hareketleri (Inventory - 2 Araç)

Depolardaki anlık stok miktarları ve stok giriş/çıkış hareketlerinin incelenmesi.

Araç Adı Güvenlik Ne İşe Yarar / Açıklama Temel Parametreler
get_stock_levels 🔍 Belirtilen ürün veya depodaki anlık stok seviyesini (inventory_levels) listeler. product_id, warehouse_id
search_stock_movements 🔍 İrsaliye, fatura veya manuel düzeltmelerle gerçekleşen stok giriş/çıkış hareketlerini tarih sırasıyla gösterir. product_id, start_date, end_date, page, per_page

8. Şirket, Kategori & Bordro (Organization - 5 Araç)

Kategoriler, etiketler, çalışan listesi, maaş ödemeleri ve vergi/SGK tahakkuklarının kaydı.

Araç Adı Güvenlik Ne İşe Yarar / Açıklama Temel Parametreler
list_categories 🔍 Gelir ve giderlerde kullanılan ürün ve masraf kategorilerini ağaç yapısıyla listeler. category_type (product, contact, employee)
list_tags 🔍 Belgeleri ve cari hesapları gruplamak için tanımlanmış etiketleri listeler. —
list_employees 🔍 Şirkette kayıtlı personelleri, iletişim ve işe başlama bilgilerini listeler. —
create_salary ⚠️ Bir personele yapılan maaş ödemesini veya avansı ilgili kasa/banka hesabından düşerek işler. employee_id, account_id, amount, date, description, confirm
create_tax ⚠️ KDV, Muhtasar/Stopaj, SGK primi veya Kurumlar Vergisi gibi resmi vergi ödemelerini sisteme kaydeder. tax_type, account_id, amount, date, description, confirm

💻 SDK Doğrudan Kullanım Örnekleri

TypeScript projenizde doğrudan @yigitkonur/parasut-node-sdk kullanmak isterseniz:

import { ParasutClient } from '@yigitkonur/parasut-node-sdk';

// 1. İstemci Tanımlama (Token veya Kullanıcı Adı/Şifre ile)
const client = new ParasutClient({
  accessToken: process.env.PARASUT_ACCESS_TOKEN,
  refreshToken: process.env.PARASUT_REFRESH_TOKEN,
  credentials: {
    clientId: process.env.PARASUT_CLIENT_ID!,
    clientSecret: process.env.PARASUT_CLIENT_SECRET!,
  },
  // companyId verilmezse client.resolveCompanyId() ile otomatik keşfedilir
});

// 2. Müşteri Sorgulama
const contacts = await client.contacts.list({
  filter: { name: 'Acme' },
  page: { number: 1, size: 25 },
});

// 3. Fatura Oluşturma
const newInvoice = await client.salesInvoices.create({
  contact_id: 12345,
  description: 'Yazılım Danışmanlık Hizmeti',
  issue_date: '2026-09-25',
  due_date: '2026-10-25',
  details: [
    {
      product_id: 67890,
      quantity: 1,
      unit_price: 15000,
      vat_rate: 20,
    },
  ],
});

// 4. Otomatik Sayfalama (Async Iterator ile Bellek Dostu Tarama)
for await (const product of client.products.iterate()) {
  console.log(`Ürün: ${product.attributes.name} - Stok Kodu: ${product.attributes.code}`);
}

// 5. GİB e-Fatura Gönderme ve Asenkron Takip
const eInv = await client.eInvoices.submitAndWait(newInvoice.data.id, {
  scenario: 'commercial',
  to: 'urn:mail:[email protected]',
});
console.log('e-Fatura GİB Onayı Tamamlandı, Belge No:', eInv.data.attributes.invoice_number);

🔒 Güvenlik İlkeleri & Gizlilik Garantisi

  • Sıfır İstem Dışı Finansal İşlem: Bütün yazma işlemleri (create_invoice, record_bill_payment, create_salary vb.) varsayılan olarak confirm=false kabul eder ve kullanıcıya yalnızca işlem simülasyonu sunar. Kullanıcı onaylamadıkça veritabanına hiçbir kayıt yazılmaz.
  • Resmî Belge İptal Edilemezlik Güvencesi: GİB e-Fatura ve e-Arşiv bildirimlerinde yanlışlıkla resmî beyanda bulunmayı önlemek için iki aşamalı güvenlik sorusu (i_understand_this_is_irreversible="YES") uygulanır.
  • Sıfır Gizli Anahtar / Özel Veri Sızıntısı: Bu açık kaynak kod tabanında veya git geçmişinde hiçbir üçüncü taraf şirket bilgisi, staging ortamı veya gerçek gizli anahtar (secret) bulunmaz. .env yerel dosyası git tarafından tamamen yoksayılır.

🧪 Geliştirme ve Test

# Bağımlılıkları yükle
pnpm install

# Tüm paketleri derle (TypeScript tsc)
pnpm build

# Birim ve entegrasyon testlerini çalıştır
pnpm test

# mcpc CLI ile smoke check
mcpc packages/parasut-mcp-server/dist/index.js tools-list

📄 Lisans

Bu proje MIT lisansı ile dağıtılmaktadır. Detaylar için LICENSE dosyasına göz atabilirsiniz.

Yorumlar (0)

Sonuc bulunamadi