-
Notifications
You must be signed in to change notification settings - Fork 0
MCP and Skills
Theia ships MCP servers (so an agent like Claude Code can drive the artheia generators and the rf-theia test harness as tools) and Claude Code skills (orientation + workflow knowledge linked into a session). This page covers how they are wired and what each provides.
A workspace's .mcp.json at the repo root declares the MCP servers Claude Code
discovers automatically. Theia's looks like:
{
"mcpServers": {
"artheia": { "command": "artheia/run_mcp.sh", "args": [], "type": "stdio" },
"rf-theia": { "command": "rf-theia/run_mcp.sh", "args": [], "type": "stdio" },
"work-with-me": { "command": ".venv/bin/python",
"args": [".claude/plugins/work-with-me/server.py"], "type": "stdio" }
}
}Each launcher is workspace-relative and runs from the single workspace
.venv (no per-server venv). Both run_mcp.sh scripts fail loudly if
.venv/bin/python is missing, telling you to create the venv and editable-
install the package.
artheia/run_mcp.sh execs python -m artheia.adapters.mcp_server. It exposes
the artheia CLI as MCP tools, so an agent can validate .art and run the
generators without shelling out. It sets THEIA_INVOCATION_CWD to the workspace
root so the model's relative .art paths resolve against the dir you are
working in (the server chdir's there per call), and runs from a neutral cwd so
the installed artheia package wins the import.
Tools exposed (artheia/artheia/adapters/mcp_server.py):
| tool | what it does |
|---|---|
list_generators |
enumerate the available artheia commands |
describe |
show a command's help/usage |
parse |
full-tree resolve / validation of a .art file |
check_addresses |
system-wide TIPC address-uniqueness gate |
gen_app |
generate the C++ FC scaffold (lib + main + impl) |
gen_manifest |
.art → the Python manifest module |
gen_proto |
.proto emission from .art
|
gen_schema |
config schema (digest → type → shape) |
gen_netgraph |
nodes + compositions → JSON netgraph |
gen |
escape hatch to run any artheia command by name + args |
These map onto the same verbs documented in Deployment-Manifest-Generation-and-Serialization.
rf-theia/run_mcp.sh execs python -m rf_theia.adapters.mcp_server. rf-theia
is a standalone Robot Framework + TPT harness (its own repo, mounted as the
rf-theia/ submodule); the .robot scenarios it runs live in the consuming
repo at <workspace>/testing/scenarios. The launcher bridges the two: it
finds the consuming workspace, exports RF_THEIA_WORKSPACE and
RF_THEIA_SCENARIOS, adds the workspace to PYTHONPATH, and execs the server.
It exposes test-harness tools (run against the live supervisor + the Tracer
feed):
| tool | what it does |
|---|---|
list_scenarios |
list the available .robot scenarios |
list_keywords |
list the harness keywords (e.g. T Sup / T Sig) |
create_scenario |
scaffold a new scenario |
run_scenario |
run a scenario against the live stack |
get_test_results |
fetch the last run's results |
analyze_trace |
inspect the e2e signal flow from the trace feed |
tail_supervisor_log |
tail the supervisor log |
The rf-theia harness regression-tests the artheia generators too — e.g. the
fc_regen_stability self-test that enforces "generated files are never
hand-edited."
Skills are versioned knowledge linked into a session. They are tracked in the
repo under contrib/skills/ and linked into the local (gitignored)
.claude/skills/ so Claude Code discovers them. First-time setup links each
tracked skill:
mkdir -p .claude/skills
for d in contrib/skills/*/; do
name=$(basename "$d")
ln -sfn "../../contrib/skills/$name" ".claude/skills/$name"
doneThe skills:
| Skill | What it's for |
|---|---|
theia (contrib/skills/theia/) |
the orientation refresher — the .art DSL, the FCs, the runtime, the supervisor, and the .art → manifest → build → deploy pipeline. Start here; load a references/ page for a specific task. |
tasks / task-kanban (contrib/skills/tasks/) |
the folder-based kanban workflow under docs/tasks/{BACKLOG,TODO,PROGRESS,DONE}. Tasks only ever move forward; they are never deleted or closed. Governs all task-file lifecycle operations. |
work-with-me (contrib/skills/work-with-me/) |
an MCP plugin that watches the human's file changes (an inotify watcher, .gitignore-aware, attributing edits to you vs. the agent) and correlates them with your shell history, so you can ask the agent to review your manual edits mid-session. |
work-with-me is the third MCP server in .mcp.json. It is off by default
(non-intrusive for teammates sharing the config). Typical loop:
watch me → work → check me → repeat.
| verb / slash | does |
|---|---|
watch me / /watch-me
|
start tracking (fresh checkpoint) |
check me / /check-me
|
review your edits + correlated shell commands, advise, clear checkpoint |
fix me / /fix-me
|
same review surface, but also apply the fixes |
compare me / /compare-me
|
review including the actual git diff of touched files |
focus me on X / /focus-me
|
set the one-line session goal the review uses |
list me / /list-me
|
passive listing of the current buffer (no analysis) |
undo me / /undo-me
|
show diff + git checkout -- revert hints (non-destructive) |
ignore me / /ignore-me
|
discard everything buffered since watch me (aborted attempt) |
A PostToolUse hook (hooks/record_agent_edit.sh) records the agent's own
edits so check me reviews only your manual changes.
In a consuming workspace you wire .mcp.json once (pointing at the two
run_mcp.sh launchers + the work-with-me server), create the workspace .venv,
editable-install artheia and rf-theia, and link the skills into .claude/skills/.
From there an agent can validate and regenerate .art (artheia MCP), run the
test scenarios (rf-theia MCP), and stay oriented (the theia skill) — the same
pipeline a human drives via the artheia / theia / tdb CLIs covered in
Tutorial and Advanced-Tools.