MCP server

10 tool, transport stdio dan HTTP, config untuk Claude dan Cursor.

Apa ini

Server MCP Dampingin (dampingin v0.1.0) membungkus REST API menjadi 10 tool. Setiap tool memanggil endpoint /v1 dengan API key kamu, jadi scope, batas budget, rate limit, dan persetujuan organisasi berlaku sama persis. Nama tool dan argumen memakai bahasa Indonesia.

Tools

ToolEndpointArgumenCatatan
daftar_layananGET /v1/services(tanpa argumen)Katalog dengan harga agent, SLA, intake. Read-only
detail_layananGET /v1/services/{code}code: stringSatu layanan dan field intake-nya. Read-only
buat_orderPOST /v1/orderslayanan: string, intake: Record<string, string>, max_budget?: int > 0, callback_url?: url, idempotency_key?: stringBuat order Instant Matter dari deposit
status_orderGET /v1/orders/{id}order_id: stringStatus, pesan praktisi, hasil. Read-only
kirim_pesanPOST /v1/orders/{id}/messagesorder_id: string, pesan: string (min 1)Balas permintaan data praktisi
terima_hasilPOST /v1/orders/{id}/acceptorder_id: stringTerima hasil, escrow dilepas
ajukan_kasusPOST /v1/casesnama_kontak, email_kontak (email), cerita (min 30), telepon_kontak?, bidang?, urgensi?, budget?Kasus custom ke papan kasus
status_kasusGET /v1/cases/{id}case_id: stringStatus kasus dan penawaran. Read-only
pilih_penawaranPOST /v1/cases/{id}/selectcase_id: string, bid_id: stringPilih penawaran, invoice dibuat
saldoGET /v1/balance(tanpa argumen)Deposit dan batas budget key. Read-only

buat_order meneruskan layanan sebagai service dan idempotency_key sebagai header Idempotency-Key.ajukan_kasus memetakan nama_kontak, email_kontak, telepon_kontak, cerita, bidang, urgensi, budget ke contact_name, contact_email, contact_phone, story, area, urgency, budget_range.

Transport HTTP (remote)

  • Endpoint: https://mcp.dampingin.com/mcp. Streamable HTTP, stateless, respons JSON (tanpa sesi).
  • Hanya POST /mcp. Method lain: 405. Path lain: 404. GET /health mengembalikan {"ok":true}.
  • Wajib Authorization: Bearer <API key>. Tanpa header: 401. Key diteruskan apa adanya ke REST API, jadi key yang salah terlihat sebagai error tool HTTP 401.
  • Self-host: npm -w @dampingin/mcp run start, port dari MCP_PORT (default 3300), tujuan API dari DAMPINGIN_API_URL.
Claude Code
claude mcp add --transport http dampingin https://mcp.dampingin.com/mcp \
  --header "Authorization: Bearer $DAMPINGIN_API_KEY"

Transport stdio (lokal)

Paket @dampingin/mcp belum dipublikasikan ke npm, jadi mode stdio dijalankan dari salinan repo Dampingin (services/mcp). Variabel lingkungan:

VariabelWajibDefault
DAMPINGIN_API_KEYYaProses keluar kalau kosong
DAMPINGIN_API_URLTidakhttp://api.localhost:3100 (pengembangan lokal). Isi dengan URL API produksi
Claude Code
# dari root repo Dampingin (server MCP belum dipublikasikan ke npm)
claude mcp add dampingin \
  -e DAMPINGIN_API_KEY=$DAMPINGIN_API_KEY \
  -e DAMPINGIN_API_URL=https://api.dampingin.com \
  -- npx tsx /path/ke/dampingin/services/mcp/src/stdio.ts

Config per klien

Claude Desktop

Tambahkan ke claude_desktop_config.json (mode stdio), lalu restart aplikasi:

claude_desktop_config.json
{
  "mcpServers": {
    "dampingin": {
      "command": "npx",
      "args": ["tsx", "/path/ke/dampingin/services/mcp/src/stdio.ts"],
      "env": {
        "DAMPINGIN_API_KEY": "dk_live_xxxxxx.rahasia",
        "DAMPINGIN_API_URL": "https://api.dampingin.com"
      }
    }
  }
}

Claude Code (file proyek)

Simpan di .mcp.json di root proyek. Nilai ${DAMPINGIN_API_KEY} dibaca dari environment, jadi key tidak masuk repo:

.mcp.json
{
  "mcpServers": {
    "dampingin": {
      "type": "http",
      "url": "https://mcp.dampingin.com/mcp",
      "headers": { "Authorization": "Bearer ${DAMPINGIN_API_KEY}" }
    }
  }
}

Cursor

Di ~/.cursor/mcp.json (global) atau .cursor/mcp.json (proyek):

{
  "mcpServers": {
    "dampingin": {
      "url": "https://mcp.dampingin.com/mcp",
      "headers": { "Authorization": "Bearer dk_live_xxxxxx.rahasia" }
    }
  }
}

Penting

File config berisi key tertulis langsung. Jangan commit file itu; pakai variabel lingkungan kalau klien mendukung.

Hasil dan error tool

Setiap tool mengembalikan satu konten teks berisi JSON respons API. Kalau API membalas non-2xx, hasil tool ditandai isError: true dan teksnya diawali HTTP <status> lalu JSON error (lihat Errors). API tidak terjangkau: kode API_UNREACHABLE.

Petunjuk untuk agent

Tempel aturan seperti ini di system prompt agent yang memakai tool Dampingin:

text
- Pakai daftar_layanan / detail_layanan sebelum buat_order. Isi semua field intake yang required.
- Selalu isi max_budget dan idempotency_key saat buat_order.
- Kalau status menunggu_bayar: beri tahu pengguna bahwa admin organisasi harus menyetujui.
- Kalau butuh_input_klien: tanyakan ke pengguna, lalu kirim_pesan. Jangan mengarang data.
- Jangan terima_hasil sebelum pengguna melihat hasilnya.
- Tidak ada layanan yang cocok: ajukan_kasus. Jangan menjanjikan hasil perkara.
- Jawaban AI bukan nasihat hukum; pekerjaan hukum dikerjakan dan ditandatangani praktisi.