Unified AI Coding Agent MCP Server — wraps multiple coding agent SDKs (GitHub Copilot, OpenAI Codex, Claude Code) behind a consistent MCP interface
Unicoda MCP has well-structured tool definitions with consistent naming (verb_noun pattern) and complete input schemas across all 12 tools. Descriptions are present and actionable (avg ~120 chars), explaining WHAT each tool does and WHEN to use it. However, output schemas are not documented in the visible code, critical for LLM planning. Parameter descriptions are adequate but lack constraint details (ranges, formats, examples of valid values). Error handling is minimal; tools do not guide recovery or categorize errors. No tool annotations (readOnlyHint, destructiveHint) despite clear risk classifications in the spec. Composition is strong, tools are single-responsibility and chain well (e.g., workspace_start → session_create → send). Security is reasonable (no exposed secrets in params), but audit logging is not visible.
Abort an in-progress request.
List available AI models.
Check the status of a previously sent request. Returns accumulated messages and current status. Supports long-polling via the timeout parameter and flexible detail levels.
Send a message to GitHub Copilot. Returns immediately with a requestId that can be polled for status and results.
Send a message to GitHub Copilot and wait for the complete response. Blocks until the agent finishes or timeout is reached.
Create a new conversation session in a workspace. A directory path or workspace ID can be used.
Delete a session from a workspace.
Output schemas not documented. Tools return structured data (Messages, Workspaces, Sessions) but LLMs cannot see the response field structure. This forces agents to guess what fields are available and risks failed downstream tool calls.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. Tools like workspace_stop (DESTRUCTIVE) and send (WRITE) should declare their side effects so agents can reason about safety and retry logic.
Parameter descriptions lack constraint details. E.g., 'timeout' in send_and_wait says 'milliseconds (default: 300000)' but does not specify min/max bounds. 'detail' enum in poll is well-documented, but most params lack format/range guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Get the chat history for a session.
List all sessions in a workspace.
List all running workspaces.
Start a GitHub Copilot workspace bound to a project directory.
Stop a running workspace and release its resources.
Error handling is minimal. Tools do not return actionable recovery guidance. E.g., if workspace_start fails, the agent does not know whether to retry, check the directory path, or try a different provider.
Ambiguous parameter 'workspace' accepts both workspace ID and directory path. While flexible, this overloading forces LLMs to reason about type coercion. Consider separate parameters (workspace_id, workspace_path) or explicit documentation of resolution order.