Lompat ke konten
Rahman FakhruDiskusi proyek

Pelajaran 06 / 09

6. Result, Error, Files, Pagination, dan Operational Safety

Membuat output yang machine-friendly, error yang actionable, file handling yang aman, serta kill switch dan audit untuk production.

Visual

Result, Error, Files, Pagination, dan Operational Safety

Normalized Result

Jangan return payload random. Gunakan envelope yang konsisten agar model dan client dapat melakukan follow-up.

Get:  { found, item }
List: { items, nextCursor, total }
Write:{ ok, id, changedFields }
Scalar:{ result }

Jika memakai structuredContent, sediakan outputSchema yang sesuai.

Error Semantics

Protocol error dan tool execution error harus dipisahkan.

Gunakan JSON-RPC error untuk malformed request, unknown tool, invalid params, atau unsupported protocol. Untuk operasi tool yang ditemukan tetapi gagal, return tool result dengan isError: true.

Kategori useful: AUTHENTICATION_REQUIRED, INSUFFICIENT_SCOPE, APPROVAL_REQUIRED, POLICY_DENIED, VALIDATION_ERROR, RATE_LIMITED, TIMEOUT, UPSTREAM_ERROR.

Bound Everything

  • pagination limit + cursor
  • max request/result bytes
  • timeouts + cancellation
  • read/write/destructive rate limits
  • explicit truncation metadata

Jangan silently truncate.

Files dan URL

File/URL adalah threat surface sendiri: authorize sebelum fetch, HTTPS, SSRF protection, block localhost/private/metadata networks, redirect limit, MIME allowlist, size limit, timeout, safe filename, short-lived signed URL, dan jangan bocorkan local absolute path.

Production Controls

  • deployment kill switch
  • maximum scope ceiling
  • catalog/toolset version + hash
  • immediate revocation
  • audit logging + redaction
  • timeout/error metrics
  • restart-storm suppression untuk supervised runtimes

Gunakan Security Checklist

Buat MCP kamu sendiri

Gunakan MCP Builder Kit sebagai starter/reference production-grade.

Buka MCP Builder Kit di GitHub →

Baca: Kenapa MCP Penting →