Apa yang diberikan oleh outputSchema
Section titled “Apa yang diberikan oleh outputSchema”Ketika alat mendeklarasikan skema keluaran, klien mengetahui bentuk respons sebelum dipanggil. Agen tidak menebak - ia melihat bahwa chart.houses.ascendant ada dan memiliki tipe ‘angka, bujur ekliptik dalam derajat’. Lebih sedikit halusinasi tentang struktur, rantai panggilan yang lebih akurat, kemampuan untuk memvalidasi respons di sisi klien.
Katalog berkembang secara bertahap: 285 alat di awal, kemudian 624, sekarang lebih dari 630 - dan keluaran yang terketik hampir mencakup seluruhnya (lebih dari 600 dari 630+). Skema tidak ditulis secara manual: generator membaca /v1/openapi.json yang live saat build, sehingga drift antara REST dan MCP tidak mungkin secara desain.
Bug yang terungkap melalui pengetikan ketat
Section titled “Bug yang terungkap melalui pengetikan ketat”Ketekatan memiliki harganya. Ketika alat mendeklarasikan skema tertutup (tidak ada bidang di luar yang terdaftar), dan respons berisi metadata tambahan, klien mode strict menolaknya. Pada keluarga alat chart, kami tepatnya menangkap ini:
McpError: MCP error -32602: Structured content does not matchthe tool's output schema: data must NOT have additional propertiesAlasannya: skema Zod yang dihasilkan dalam bentuk tertutup, tetapi respons backend sebenarnya berisi beberapa bidang metadata layanan yang tidak dideklarasikan dalam skema. Klien memvalidasi structuredContent terhadap skema dalam mode strict dan melempar -32602.
Nuansa menarik: Claude Desktop dan Cursor tidak menunjukkan bug - mereka dalam mode longgar dan melewatkan bidang tambahan. Itulah klien SDK mode strict yang jatuh, yang memvalidasi secara ketat. Artinya, masalahnya tidak terlihat di klien paling populer dan hanya muncul di integrasi kustom di atas MCP SDK.
Perbaikan: skema terbuka menggantikan skema tertutup
Section titled “Perbaikan: skema terbuka menggantikan skema tertutup”Solusinya bukan membuang pengetikan, tetapi membuat skema terbuka. Di generator alat, skema ZodObject keluaran dikonversi ke bentuk passthrough: bidang yang dideklarasikan tetap wajib dan terketik, sementara bidang layanan tambahan lolos validasi tanpa memutuskan panggilan.
Untuk katalog yang dihosting, fallback terpisah diterapkan - menghapus outputSchema dari pendaftaran untuk alat-alat di mana validasi sudah rusak, sehingga klien strict tidak jatuh sementara skema belum sepenuhnya terbuka. Kompromisis sadar: lebih baik panggilan yang benar tanpa validasi klien daripada crash keras.
Pelajarannya sederhana: keluaran MCP yang terketik berguna, tetapi skema respons harus terbuka untuk bidang tambahan. API berevolusi, metadata muncul, dan skema tertutup mengubah setiap penambahan tersebut menjadi perubahan yang merusak untuk klien strict.
Cara terhubung
Section titled “Cara terhubung”Katalog yang terketik tersedia melalui kedua cara:
// hosted, без установки{ "mcpServers": { "astroway": { "url": "https://mcp.astroway.info/mcp", "headers": { "Authorization": "Bearer aw_live_..." } } }}Atau paket stdio npx -y @astroway/mcp dengan kunci di ASTROWAY_API_KEY. Keduanya menyajikan katalog yang sama terketik; panduan lengkap klien ada di /agent-setup/.
Swiss Ephemeris yang sama dengan Solar Fire - dalam 4 baris kode.
Kunci gratis tanpa kartu. 5.000 panggilan per bulan sebelum pembayaran pertama.