stdio MCP server adapter that exposes faceView GUI operations as native MCP tools for Claude Code integration. Connects to the GUI's FastAPI control plane to enable remote control of avatar, camera, chat, and perception features.
faceView MCP server has 9 tools with basic schemas and descriptions, but significant gaps prevent higher scores. All tools have input schemas with type definitions and descriptions present, meeting minimum requirements. However, descriptions are terse (avg ~50 chars, well below the 194-char baseline), parameter descriptions are minimal or absent, output schemas are undocumented, and error handling guidance is missing. No tool annotations (readOnlyHint/destructiveHint) despite clear read/write distinctions. Tool naming is reasonable (verb_noun pattern: send_chat, set_emotion, list_personas) but lacks parameter-level clarity. No pagination support for list_events despite accepting an 'n' parameter. The server reads like an early-stage prototype rather than production-grade tooling.
Drive the avatar's mouth to lip-sync the given text without invoking TTS audio.
Get current presence/identity/emotion/mouth state.
Recent events from the bus (default last 50).
List bundled persona names.
Save a screenshot of the GUI to docs/images/<name>.
Send a user-message into the faceView chat panel.
Switch the avatar's baseline FACS expression (neutral, happy, sad, angry, surprised, fear, disgust, contempt, pout, kiss, pain, thinking).
Descriptions are terse (avg ~50 chars vs 194-char baseline). Examples: 'Send a user-message into the faceView chat panel' (52 chars), 'Have the GUI's TTS speak this text' (35 chars). Too short to guide LLM selection or explain when to use each tool.
No output schemas documented. LLMs cannot infer what fields camera_state, list_events, or screenshot return. This forces agents to guess structure and risks parsing failures.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Tools clearly split into READ (camera_state, list_events, list_personas, screenshot) and WRITE (send_chat, speak, set_emotion, set_persona, avatar_say), but LLMs cannot see this distinction in the schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Switch the avatar's appearance preset (skin/hair/lip/background). Use list_personas to see options.
Have the GUI's TTS speak this text.
set_emotion and set_persona accept free-form 'name' strings but should use enums. Description lists valid values ('neutral, happy, sad, angry, surprised, fear, disgust, contempt, pout, kiss, pain, thinking' for emotion; 'skin/hair/lip/background' for persona) but no enum constraint in schema. LLMs will hallucinate invalid values.
No error handling guidance. Tools lack recovery hints (e.g., 'If set_emotion fails, call list_personas first to see valid options'). Agents cannot self-correct on invalid input.