AstroWay/api v2.190.0 · vi
tất cả hệ thống hoạt động bình thường

MCP typed output: why 600+ tools have outputSchema

Most MCP servers return untyped JSON to the agent - the model has to guess the response format. We publish strict outputSchema for 600+ tools. We analyze how this works, what bug this opened in strict-mode clients and how we fixed it through open schemas.

MCP-інструмент може повернути що завгодно - протокол не вимагає описувати форму відповіді. Тому більшість серверів віддають агенту голий JSON, а модель вгадує структуру з тексту. Це працює, поки не ламається: агент бере поле, якого немає, або неправильно інтерпретує вкладеність.

Ми пішли строгим шляхом: понад 600 з наших MCP-інструментів публікують outputSchema - машинну схему відповіді, згенеровану з того самого OpenAPI-контракту, що й REST API.

Khi công cụ công bố sơ đồ đầu ra, client biết dạng phản hồi trước khi gọi. Agent không đoán - nó thấy rằng chart.houses.ascendant tồn tại và có kiểu «số, kinh độ ecliptic tính bằng độ». Ít ảo tưởng về cấu trúc hơn, chuỗi gọi chính xác hơn, khả năng xác thực phản hồi ở phía client.

Danh mục đã phát triển theo giai đoạn: 285 công cụ lúc bắt đầu, sau đó 624, hiện nay hơn 630 - và đầu ra có kiểu gần như phủ toàn bộ (hơn 600 trong hơn 630). Các sơ đồ không được viết bằng tay: trình tạo đọc live /v1/openapi.json trên build, vì vậy sự lệch giữa REST và MCP là không thể xảy ra.

Lỗi mà việc kiểu nghiêm ngặt phát hiện

Phần tiêu đề “Lỗi mà việc kiểu nghiêm ngặt phát hiện”

Sự nghiêm ngặt có cái giá của nó. Khi công cụ công bố closed-scheme (không có trường nào ngoài những đã liệt kê), và phản hồi chứa thêm metadata, client ở chế độ strict sẽ từ chối. Trên các công cụ chart-family chúng tôi đã bắt gặp điều này:

McpError: MCP error -32602: Structured content does not match
the tool's output schema: data must NOT have additional properties

Nguyên nhân: các Zod-scheme được tạo ra ở dạng closed, nhưng phản hồi thực tế của backend mang một vài trường metadata dịch vụ, không được khai báo trong sơ đồ. Client xác thực structuredContent so với sơ đồ ở chế độ strict và trả về -32602.

Một chi tiết thú vị: Claude Desktop và Cursor bug không hiển thị - chúng ở chế độ loose và cho phép các trường bổ sung. Chỉ các client SDK ở chế độ strict, những người xác thực chặt chẽ, mới gặp lỗi. Vì vậy vấn đề này không thấy ở các client phổ biến và chỉ xuất hiện trong các tích hợp riêng của bạn trên MCP SDK.

Giải pháp - không loại bỏ kiểu, mà làm cho các sơ đồ mở. Trong trình tạo công cụ, các ZodObject-scheme đầu ra được chuyển sang dạng passthrough: các trường đã khai báo vẫn bắt buộc và có kiểu, còn các trường dịch vụ bổ sung sẽ qua xác thực mà không phá vỡ cuộc gọi.

Đối với hosted-catalog, một phương án dự phòng được áp dụng riêng - loại bỏ outputSchema khỏi đăng ký các công cụ mà việc xác thực đã bị hỏng, để các client strict không bị sập cho tới khi các sơ đồ được mở hoàn toàn. Thỏa hiệp này có ý nghĩa: tốt hơn một cuộc gọi đúng mà không có xác thực client, hơn là lỗi nghiêm trọng.

Bài học đơn giản: đầu ra có kiểu của MCP hữu ích, nhưng sơ đồ phản hồi phải mở cho các trường bổ sung. API liên tục phát triển, metadata xuất hiện, và closed-scheme biến mỗi bổ sung thành breaking change cho các client strict.

Danh mục có kiểu có sẵn qua cả hai cách:

// hosted, без установки
{
"mcpServers": {
"astroway": {
"url": "https://mcp.astroway.info/mcp",
"headers": { "Authorization": "Bearer aw_live_..." }
}
}
}

Hoặc gói stdio npx -y @astroway/mcp với khóa trong ASTROWAY_API_KEY. Cả hai đều trả về cùng một danh mục có kiểu; hướng dẫn đầy đủ về client - tại /agent-setup/.

MakSeong · AstroWay

Tôi làm AstroWay API: gói Swiss Ephemeris vào REST thuần và viết về những chi tiết nhàm chán nhưng thực sự quan trọng.

// xây dựng trên nền tảng này

Chính Swiss Ephemeris giống như trong Solar Fire - chỉ trong 4 dòng code.

Khóa API miễn phí không cần thẻ. 5.000 lượt gọi/tháng trước lần thanh toán đầu tiên.

Thêm từ blog tất cả bài viết →

Engineering 2026-07-15

Ba SDK chính thức: TypeScript, Python, PHP thay vì curl thô

HTTP thô hoạt động, nhưng client có kiểu dữ liệu tiết kiệm giờ: tự động hoàn thiện đường dẫn, kiểu yêu cầu và phản hồi, retry tích hợp cho 408/409/429/5xx và Stainless-style hệ thống lỗi. Xem xét ba SDK chính thức - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - và cách chúng được tạo từ một OpenAPI contract.

Industry 2026-06-05

Free Astrology API: Which One Has the Best Free Tier in 2026?

A side-by-side of free tiers across the major astrology APIs - credits, request caps, card requirements - and how much you can actually build for free.

Engineering 2026-06-05

Horoscope API Tutorial: Build a Daily Horoscope Feature

Add daily, weekly and monthly horoscopes to your app via API - sign-based text vs transit-based personalization - with TypeScript and Python code.