A Model Context Protocol server exposing SourceKit-LSP for semantic Swift tooling
Swift MCP Server has 12 tools with reasonable naming and decent schema coverage, but suffers from significant gaps in description quality, parameter documentation, output schema documentation, and error handling guidance. Most tools have basic input schemas but lack complete parameter descriptions. Tool descriptions are present but often generic. No evidence of structured error responses or recovery guidance. Tool annotations (readOnlyHint/destructiveHint) are declared in metadata but not visible in the actual tool definitions shown. Output schemas are not documented in tool descriptions. The server targets Swift language intelligence but tools like 'rename_symbol' and 'format_document' lack confirmation/dry-run patterns for destructive operations.
Get the call hierarchy (callers or callees) for a symbol
Get available code actions at a specific line in a file
Find all references to a symbol at a given position in a file
Find Swift symbols in a file matching a name pattern
Format a Swift document and return text edits
Get the definition location of a symbol at a given position
Get compilation and analysis diagnostics for a Swift file
Output schemas not documented. Tool descriptions do not explain what fields are returned or what structure the response takes. LLMs cannot plan downstream tool calls or extract relevant data without knowing the response schema.
Destructive/modifying operations lack confirmation or dry-run patterns. 'format_document' and 'rename_symbol' modify workspace state without offering a preview-before-execute or confirmation step. Agents cannot safely test changes before committing them.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 70 | <=2025-11-25 | v2 |
Get hover information (type, documentation) for a symbol at a given position
Get the implementations of an interface or protocol at a given position
Rename a symbol at a given position throughout the workspace
Search for symbols across the entire workspace
Get the type hierarchy (supertypes or subtypes) for a symbol
Tool descriptions are generic and under-specify when to use each tool. E.g., 'get_definition' vs 'get_implementations' vs 'get_hover_info' all retrieve symbol information but descriptions do not explain the distinction or when to prefer one over the others.
No pagination or result limiting documented. Tools like 'search_workspace_symbols' and 'find_references' may return large result sets but descriptions do not mention pagination, limits, or how to handle unbounded results. Can exhaust context window.
Position parameters lack format specification. 'position' is defined as object with 'line' and 'character' but descriptions do not clarify: are lines 0-indexed or 1-indexed? Are character offsets byte, UTF-16, or codepoint offsets? This ambiguity causes LLMs to pass incorrect positions.
No error handling guidance. Tool descriptions do not explain what happens on failure (e.g., file not found, symbol not found, invalid position). Error responses shown in code do not include recovery hints or actionable next steps for the LLM.
Tool annotations declared in metadata but not visible in schema definitions. Server claims readOnlyHint and destructiveHint in features but actual tool definitions do not show these hints in the JSON schemas or descriptions. If relying on metadata-only annotation, output must still embed hints in descriptions for clarity.