LEANN-based codebase indexing with MCP server and AI-powered search
Islands provides 6 tools with complete JSON schemas and basic descriptions. Tool naming follows verb_noun convention (islands_list, islands_search, islands_add_repo, islands_sync, islands_status, islands_remove). However, descriptions are terse (10-80 chars), parameter descriptions are minimal or absent, and output schemas are not documented. The schema for islands_search is well-formed with type constraints and defaults, but islands_list and islands_status lack parameter detail. Error handling and recovery guidance are not visible in the tool definitions. Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are present but not formalized as tool annotations in the MCP protocol.
Add a repository to be indexed by URL.
List all indexed codebases available for search
Remove an indexed repository and delete all associated files
Semantic search across indexed codebases. Returns relevant code snippets and documentation.
Get the status of a specific index or all indexes
Sync and re-index a repository to get latest changes
Output schemas not documented. LLMs cannot infer what fields islands_list, islands_search, islands_status, and islands_remove return, forcing them to guess downstream field names and risk broken tool chains.
Parameter descriptions are missing or minimal. islands_list has no parameters but islands_status has an optional 'index_name' with no description. islands_add_repo's 'url' parameter lacks format guidance (e.g., 'GitHub HTTPS URL required').
Tool descriptions are under 80 characters for 4 of 6 tools (islands_list, islands_sync, islands_status, islands_remove). Descriptions lack context on WHEN to use each tool and what happens (e.g., islands_remove does not explicitly state it is destructive in the description text).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are present in metadata but not formalized as MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot parse these custom fields.
No error handling or recovery guidance visible. Tools do not document what errors can occur (e.g., 'repository not found', 'invalid URL', 'indexing in progress') or how LLMs should respond.