MCP server for TwinCAT 3 PLC projects: read structure, write ST code, trigger builds, deploy to targets, run TcUnit tests.
Use when researching a Beckhoff TwinCAT library, function block, or function via Beckhoff infosys. Triggers on requests like "what does FB_EcCoESdoRead do", "which TF library has SDO read", "what are the inputs of FB_X", or as a precondition before writing code that uses an unfamiliar Beckhoff FB. Uses TcKit's find_fb, search_docs, and get_doc_page MCP tools. Do NOT use for inspecting the user's local project (that is tc-read-project).
Use when building a TwinCAT project, deploying to a target, running TcUnit tests, or iterating on build/test failures through TcKit (build, deploy, start_runtime, run_tests, get_test_results). Triggers on requests like "build it", "run the tests", "fix the build errors", "deploy to <NetId>", "make the tests pass". Enforces the build-before-deploy ordering, the 2-attempt-per-error build fix limit, the 5-iteration test loop limit, the awaiting_confirmation handshake for deploy and start_runtime, and the save+install rule for multi-PLC solutions with library references. Do NOT use for the initial code write itself (that is tc-write-st).
Use when configuring TcKit, including initial setup ("set me up", "configure tckit"), ongoing edits to safety stance ("add NetId to allowed", "edit safety settings", "change confirmation behaviour"), runtime mode switches ("switch to docker", "switch to stdio"), or running health checks ("tckit doctor", "tckit not working", "is the bridge up"). Wraps the `tckit config` and `tckit doctor` CLI subcommands and the user-global config file at `~/.tckit/config.toml`. Do NOT use for runtime tool calls like building, deploying, reading projects, or researching Beckhoff FBs (those are owned by tc-build-test-loop, tc-read-project, tc-write-st, and tc-beckhoff-docs).
Use on the FIRST encounter with a TwinCAT project in a session, or when the user asks for a "structural overview", "subsystem map", "what's in this project", "introduce me to this project", "give me the lay of the land", "tell me about this codebase", "summarise this project", or any first-touch orientation. Triggers BEFORE tc-read-project; tc-read-project takes over for follow-up reads once orientation is done. Do NOT use mid-task on a project already mapped this session.
Use when inspecting, navigating, or searching a TwinCAT 3 PLC project through TcKit's MCP tools (get_structure, get_pou_interface, get_pou_item, get_gvl, get_dut) AFTER orientation. Triggers on requests like "show me FB_X", "what's the public API of FB_Motor", "list the methods of FB_TestSuite", "summarise the motor controller POU", "what does ST_Config look like", or any task that requires reading specific PLC code before writing it. Do NOT use for first-touch orientation (use tc-orient-project), and do NOT use for researching Beckhoff library FBs (use tc-beckhoff-docs).
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
An MCP server that gives AI agents a precise, structured view of a TwinCAT 3 project, and the tools to change, build, and test it.
tckit.org for full documentation.
[!WARNING] TcKit is in active development and not yet production-ready. Expect breaking changes between minor versions, rough edges, and missing features.
LLMs get worse as their context fills up. Anthropic call this context rot, and PLC projects trigger it fast: a single .TcPOU is XML wrapped around code, thousands of lines for one function block. Pasting one in to ask about one method poisons the rest of the conversation.
TcKit is the layer in between. Six MCP capabilities, each shaped around just-in-time retrieval, a single source of truth for writes, and structured results from builds and tests.
| Port | Purpose |
|---|---|
| ProjectReader | Layered reads: project structure → POU interface → single method/property |
| ProjectWriter | Structural writes via the IDE so GUIDs and cross-refs stay consistent |
| BuildRunner | Build, deploy, and runtime control with parsed {file, line, message, severity} diagnostics |
| TestRunner | Run TcUnit suites and return parsed pass/fail trees |
| DocGenerator | Render navigable HTML docs from comments in the ST source |
| DocsSearcher | Fetch the one relevant Beckhoff infosys page on demand, no manual pre-loading |
Each port is a stable contract; adapters are swappable. See tckit.org for method tables and rationale.
Head-to-head writer-task runs of TcKit-equipped Claude vs vanilla Claude:
| Task | Vanilla tokens | TcKit tokens | Vanilla wall | TcKit wall | Tool calls (V → T) |
|---|---|---|---|---|---|
Add a VAR_INPUT to an FB | 1,653 | 691 (2.4×) | 27.5s | 21.7s (1.27×) | 5 → 3 |
| Add a method to an FB | 1,236 | 508 (2.4×) | 26.2s | 15.5s (1.69×) | 5 → 2 |
N=1 per cell. See bench/findings/ for full methodology and a record of the harness gotchas behind the numbers.
The doc generator run against TcUnit is published live at tckit.org/examples/tcunit/. Navigate the function block hierarchy, search the API, drill into a method, all rendered from comments in TcUnit's ST source.
AI agent (MCP client) → TcKit MCP Server → Port (ABC) → Adapter → TwinCAT XAE / PLC
The server only calls ports. Adapters may only import from ports and stdlib, never from each other. CI enforces it. Full diagram at tckit.org/architecture/overview/.
[!CAUTION] The
deployandstart_runtimetools write to and restart a running PLC. They require explicitconfirmed=Trueby default. Always verify the target NetId. SetBLOCKED_NETIDS=<netid>,...to permanently block targets (e.g. a production PLC).
Requires Claude Code, plus TwinCAT 3.1 Build 4026 + TcXaeShell on a Windows host (only for write/build/deploy/test; reads work without it).
Plugin (recommended). Needs uv. In Claude Code:
/plugin marketplace add georgeturneruk/tckit
/plugin install tckit@tckit
> Set me up for TcKit.
The bundled tc-config skill walks you through setup. The MCP server runs as uvx tckit.
Docker (opt-in). For isolation or remote-server installs, see tckit.org/getting-started/docker-setup/.
Bridge. For write/build/deploy/test, run the bridge in a separate PowerShell window with TcXaeShell open:
.\bridge\Start-Bridge.ps1
All six capabilities are implemented and shipping. See releases for version history.
See CONTRIBUTING.md. MIT licence.
npx claudepluginhub georgeturneruk/tckit --plugin tckitA growing collection of Claude-compatible academic workflow bundles. Covers scientific figures, manuscript writing and polishing, reviewer assessment, citation retrieval, data availability, paper reading, literature search, response letters, paper-to-PPTX conversion, and evidence-grounded Chinese invention patent drafting. Rules are organized as reusable skill folders with explicit workflows and quality checks.
Comprehensive feature development workflow with specialized agents for codebase exploration, architecture design, and quality review
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
Tools to maintain and improve CLAUDE.md files - audit quality, capture session learnings, and keep project memory current.
Browser automation and end-to-end testing MCP server by Microsoft. Enables Claude to interact with web pages, take screenshots, fill forms, click elements, and perform automated browser testing workflows.
Develop, test, build, and deploy Godot 4.x games with Claude Code. Includes GdUnit4 testing, web/desktop exports, CI/CD pipelines, and deployment to Vercel/GitHub Pages/itch.io.