Secure multi-source MCP server for local repositories, GitHub, GitLab, and Bitbucket
sourceplane-mcp demonstrates solid fundamentals: all 7 tools have clear verb-noun names (list_, read_, search_, write_), explicit descriptions (avg 85 chars), and complete Zod schemas with type definitions. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are correctly applied. However, parameter descriptions are sparse or missing entirely, most params lack guidance on format, constraints, or when to use them. Output schemas are undocumented (tools return plain text via text() wrapper, not structured objects). Error handling is minimal: no recovery guidance, no categorization of retryable vs fatal errors. The write_file tool lacks confirmation/dry-run safeguards despite being destructive. Composition is clean (single responsibility per tool), but batch operations and pagination are absent.
Get source file tree
List files in a source directory
List configured code sources
Read a file from a configured source
Read multiple files from a configured source
Search code in a configured source
Write a UTF-8 text file to a local source. Disabled by default and only available for local sources with write.enabled=true.
Parameter descriptions are missing or minimal. 'sourceKey', 'path', 'branch', 'maxFiles', 'query', 'maxResults' lack guidance on format, constraints, or when to use them. LLMs cannot infer whether sourceKey is a UUID, slug, or arbitrary string.
Output schemas are undocumented. All tools return plain text via text() wrapper. LLMs cannot parse structured results or extract IDs for chaining. No documentation of what fields/structure to expect.
write_file is destructive but lacks confirmation/dry-run safeguards. No allowOverwrite validation shown in handler. Agents can overwrite files without warning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Error handling is minimal. No recovery guidance, no error categorization (retryable vs fatal), no actionable error messages. Agents cannot self-correct on failures.
No pagination support. list_files, get_source_structure, search_code lack offset/limit and total count. Large results could exhaust context window.