A Model Context Protocol server for safe Scala code execution with capability-scoped API access, file system operations, process execution, and network requests.
TACIT MCP defines 6 tools with complete JSON schemas and descriptions. Naming follows verb_noun convention (execute_scala, create_repl_session, delete_repl_session, execute_in_session, list_sessions, show_interface). All tools have descriptions (avg 115 chars, within 10-1024 range). However, parameter descriptions are minimal or absent: 'code' param lacks detail on what Scala code is valid; 'session_id' descriptions are terse. No output schemas documented, LLMs cannot predict return structure. Error handling is not visible in tool definitions. The show_interface tool is a discovery pattern but lacks guidance on when to call it. Session management tools (create/delete/list/execute_in_session) form a coherent subsystem but lack explicit state management warnings.
Create a new Scala REPL session. Returns a session ID that can be used for subsequent executions.
Delete a Scala REPL session by its ID.
Execute Scala code in an existing REPL session. The session maintains state between executions. The library API is pre-loaded, and all functions defined in `Interface` are available.
Execute a Scala code snippet and return the output. This is stateless, each execution is independent. The library API is pre-loaded, and all functions defined in `Interface` are available.
List all active REPL session IDs.
Show the full capability-scoped API available in the REPL. Call this first to understand what methods you can use. You must only use the provided interface to interact with the system.
No output schemas documented. LLMs cannot predict return structure (e.g., does execute_scala return {result: string} or {output: string, error?: string}?). This forces agents to guess and risks parsing failures.
Parameter descriptions are minimal. 'code' parameter lacks guidance on valid Scala syntax, library availability, or constraints. 'session_id' descriptions are terse. LLMs need explicit format/constraint hints (e.g., 'UUID format', 'max 1000 lines', 'no file I/O').
No error handling guidance in tool definitions. If execute_scala fails (syntax error, timeout, security violation), LLMs have no recovery path. Error responses should guide: 'Syntax error at line 5. Check Scala syntax.' or 'Execution timeout (>30s). Simplify code or use session for incremental work.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Session management lacks idempotency guarantees. If create_repl_session is retried, does it return the same session_id or create a duplicate? Agents need explicit idempotency declarations (via toolAnnotations.idempotentHint or description).
show_interface discovery tool lacks context. Description does not explain when to call it (first? on error? per session?). Should state: 'Call this first to see available API methods. Results vary by session if session-specific APIs are loaded.'