AI Infrastructure Platform for MCP agents - Station is a Go-based MCP server runtime that orchestrates MCP tools, manages environments, executes coding tasks, and provides a web UI for agent management and workflow execution.
Station is a Go-based MCP server providing 6 coding-session tools with generally complete input schemas and descriptions. However, several issues prevent a higher score: (1) descriptions are functional but lack LLM optimization guidance (many are 80-120 chars, below the 50-200 baseline for A-grade tools); (2) no output schemas are documented, critical for tools that return structured data like session IDs and workspace paths; (3) parameter descriptions exist but many lack actionable constraints (e.g., 'Git repository URL' doesn't specify required format, timeout behavior, or failure modes); (4) error handling is not visible in tool definitions, no guidance on what happens if git clone fails, workspace is locked, or session_id is invalid; (5) tool naming is good (verb-noun pattern: coding_open, coding_close, etc.) but the toolset shows a composition weakness: coding_open and code together form a multi-step dance that could benefit from better chaining docs. Per-tool scores range from 50-70, with coding_open (most complex) and code scoring lowest due to missing output schemas and context parameter vagueness.
Tools (6)
codewritesource verified67/100
Delegate a coding task to the AI coding assistant. Use for complex code changes, bug fixes, or feature implementations.
coding_branchwritesource verified78/100
Create or switch Git branches in the coding session workspace.
coding_closewritesource verified75/100
Close a coding session and optionally clean up workspace.
coding_commitwritesource verified78/100
Create a Git commit in the coding session workspace.
coding_openwritesource verified72/100
Open a coding session. Provide repo_url to clone a repository, or workspace_path for existing local repos.
No output schemas documented. Tools like coding_open, code, and coding_close return structured data (session_id, workspace_id, status, etc.) but the source provides no schema definition. LLMs cannot know what fields to expect for downstream planning.
Parameter descriptions lack actionable constraints. E.g., repo_url says 'Git repository URL to clone' but does not specify: required format (https vs ssh), timeout, what happens on auth failure, or clone depth. 'Explicit workspace path. Usually not needed, the backend creates workspaces automatically' is vague.
Tool description for 'code' is too brief (60 chars) and vague. 'Delegate a coding task to the AI coding assistant. Use for complex code changes, bug fixes, or feature implementations.' does not clarify: What is the coding assistant? Can it create new files or only edit existing ones? Does it auto-commit? How does it interact with coding_open?
code
Recommendations
Document output schemas for all tools. For coding_open, return: {session_id: string, workspace_id?: string, workspace_path: string, remote_url?: string, current_branch: string}. For code, return: {status: enum[success|in_progress|failed], changes_summary: string, files_modified: array}. For coding_commit, return: {commit_hash: string, files_changed: integer}.
Enhance parameter descriptions with actionable constraints. For repo_url, add: '(Required) HTTPS or SSH Git URL. SSH requires agent to have SSH key configured. Clones with depth=1 by default to save time. Fails if repo does not exist or auth fails; returns error with suggestion to check URL or SSH keys.' For workspace_path, add: '(Optional) If provided, uses existing directory; skips clone. If not provided, backend creates temp workspace and cleans up post-session based on scope parameter.'
Revise 'code' description to clarify scope and interaction: 'Delegates code changes to the AI assistant within an open coding session. Can create, edit, and delete files. Does NOT auto-commit, use coding_commit() after code() completes. Returns summary of changes; use coding_push() to sync to remote. Only works with an active session_id from coding_open().'
Add error guidance to each tool. Example for coding_open: 'On clone failure (auth, not found, timeout), returns error with: (1) reason (e.g., "Repository not found at https://github.com/org/repo.git"), (2) recovery hint (e.g., "Check URL or verify SSH key is configured"), (3) alternative: ask the user to confirm URL or provide a new one.'
No error handling guidance. Tool definitions do not explain what an LLM should do if git clone fails, session is not found, or permission is denied. E.g., if coding_open fails with 'repository not found', should the agent retry, ask the user, or call a different tool?
Composition concern: coding_open and code form a required pair. An LLM must call coding_open first to get a session_id, then pass it to code. The descriptions do not highlight this dependency or suggest when to open vs. reuse an existing session.
Parameter 'context' in code tool is poorly scoped. 'Additional context about the task (optional)' is too vague. Does this override previous context? Is it appended? Can it reference files outside 'files' parameter? Ambiguous dependencies cause misuse.
code
Document tool-chain dependencies explicitly. In coding_open description, add: 'Returns session_id; pass this to code(), coding_commit(), coding_push(), and coding_branch() in subsequent calls. Reuse the session_id across multiple code() calls to accumulate changes, then commit once.' In code description, add: 'Requires session_id from a prior coding_open() call.'
Clarify 'context' parameter in code tool: 'Additional context appended to the task description. Use for background info, requirements, or constraints. Overrides NO previous context, all context is cumulative within the session. Context does NOT allow referencing files outside the 'files' parameter; if needed, mention those files in this field and the assistant will locate them.'
Add idempotency and side-effect info. E.g., for coding_commit: 'Creates a Git commit. Idempotent only if message is unique, repeated calls with the same message create multiple commits. Modifies the workspace and git history (irreversible without git reset). Returns commit hash for reference.'
For coding_push, add timeout and auth guidance: 'Pushes commits to remote. Requires remote to be reachable and agent to have push credentials. Timeout: 30s default. On auth failure, returns error: "Permission denied (publickey). Check SSH key or Git credentials."'
Include discovery hints in tool descriptions. E.g., in coding_open: 'If you only have a user's request but not a specific repo, call an external search/discovery tool first to identify the repo URL, then use that URL here.'
Add parameter-level constraints. For branch parameter in coding_branch, add: 'Branch name (alphanumeric, hyphens, slashes allowed). Max 255 chars. Cannot be "HEAD" or contain spaces. If create=false and branch does not exist, returns error with list of available branches.'
Return related IDs for chaining. If coding_open returns workspace_id, ensure coding_commit, coding_push, and coding_branch can also accept workspace_id as an alternative to session_id (for multi-session workflows).