MCP server to help your coding agent search the Swift package index
Three well-defined tools with clear action verbs and detailed descriptions. All tools have complete input schemas with type annotations and parameter descriptions. The server demonstrates good adherence to QUERY_TOOL and DISCOVERY_TOOL patterns. However, output schemas are not documented in the source, error handling guidance is minimal, and tool descriptions lack explicit dependency hints for multi-step workflows. The pagination support in search_swift_packages is a strength (page parameter with has_more indicator mentioned in description), and the use of enums for constrained parameters (platforms, product_type, license_filter) follows best practices.
Fetch the README of a Swift package from GitHub. This is a QUERY tool — read-only, safe to call multiple times. Use this after search_swift_packages to get details about a specific package. The owner and repo values come from search results (e.g. "apple" and "swift-nio").
Return all valid values for the constrained parameters of search_swift_packages. This is a DISCOVERY tool — call this first if you are unsure what values are accepted for the platforms or product_type parameters. Returns a dict with keys 'platforms' and 'product_types', each containing the list of accepted string values.
Search the Swift Package Index for packages matching your criteria. This is a QUERY tool — read-only, safe to call multiple times. At least one parameter must be provided. Parameters are combined with AND logic.
Output schemas are not documented in the source code. The descriptions reference 'check has_more in the response' and 'returns a dict with keys' but formal output schema definitions are not visible in the tool registration.
Tool descriptions lack explicit multi-step guidance and dependency hints. For example, search_swift_packages does not say 'Call list_search_filters first if unsure about valid platform or product_type values', and get_package_readme does not explicitly state that owner/repo come from search results.
No visible error handling patterns in the source. Tool descriptions do not guide LLM recovery (e.g., 'If a package is not found, try a broader search term' or 'If README fetch fails, the package may be archived or private').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 75 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Parameter 'max_length' in get_package_readme (default 4000) uses a free-form integer with no enum or pattern constraint. The description should include the valid range or note that 0 means 'no limit'.