FTC Toolchain
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB_PATH | No | Explicit path to adb if not on PATH | |
| FTC_TOOLCHAIN_HOME | No | Toolchain cache, backups, jobs, and workspace root (default: ~/.ftc-toolchain) | |
| FTC_TOOLCHAIN_REFS | No | Location of the reference clones (default: ./refs) | |
| FTC_TOOLCHAIN_PROJECT_DIR | No | Default FTC SDK project location (used by project/robot tools) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_samplesA | List the official FtcRobotController sample OpModes (drive code, sensors, AprilTag vision, gamepad, telemetry...). Start here to find working reference code for any FTC hardware or SDK feature. |
| get_sampleA | Return the full Java source of an official FTC sample OpMode by name (from list_samples). |
| search_docsA | Keyword search across the Pedro Pathing documentation and the official FTC sample OpModes. Use for questions about path following, tuning, localization, coordinates, and SDK features. |
| get_docA | Return a full Pedro Pathing documentation page as markdown, by id from search_docs (e.g. 'pathing/examples/auto'). |
| reference_statusA | Report local FTC sample and Pedro documentation counts, Git branches, commits, dates, and cache location without using the network. |
| update_referencesA | Fast-forward the local official FTC SDK samples and Pedro docs checkouts. Refuses to touch a reference checkout with local changes. |
| inspect_projectA | Start here when entering a robot project or debugging setup. Summarizes the resolved project path, SDK, Git state, OpModes, subsystem docs, Pedro setup, hardware-name collisions, latest APK, reference library, and Android SDK, then gives next actions. |
| check_project_hygieneA | Read-only pre-competition audit for duplicate Driver Station names, orphaned generated file pairs, broken subsystem-doc links, incompatible hardware types, stale or missing APKs, disabled OpModes, TODOs, and uncommitted Git changes. |
| create_projectA | Clone a fresh FtcRobotController SDK project (the standard FTC season starting point) into the workspace. Skip this if the team already has a project — pass its path to the other tools instead. |
| list_opmodesA | List all @TeleOp/@Autonomous OpModes in the project's TeamCode module. |
| list_generated_filesA | Inventory Java and robot-doc files marked as scaffolded by ftc-toolchain, grouped by kind. Markers identify origin only—team edits are expected and must be preserved. |
| list_backupsA | List project-scoped recovery snapshots created automatically before ftc-toolchain overwrites files, including each backup ID and contained relative paths. |
| restore_backupA | Preview restoration from an ftc-toolchain backup, optionally selecting relative file paths. No files change unless confirm is true; a confirmed restore backs up current versions first and never deletes files. |
| create_opmodeA | Scaffold a new Java OpMode in TeamCode. Templates:
|
| install_pedroA | Install the Pedro Pathing library into an FTC SDK project: adds the Gradle maven repo + dependencies, raises compileSdk to 34, and scaffolds pedroPathing/Constants.java (mecanum + Pinpoint by default). The constants MUST be tuned afterwards — see search_docs 'tuning'. |
| create_subsystemA | Scaffold a plain FTC subsystem class (constructor takes HardwareMap; hardware fields, config-name constants, action methods, and a safety stop()). Also writes a bench-test TeleOp and a markdown doc in docs/. This is the recommended way to structure robot code — one class per mechanism (intake, spindexer, turret...). |
| document_subsystemA | Write or update the markdown knowledge-base doc for a subsystem (docs/subsystems/.md) and refresh the docs/ROBOT.md index. Use this to record what each function does, tuning values, config names, and quirks as the team describes them — so future sessions understand the robot without reading all the code. |
| list_subsystemsA | List the robot's subsystems from the docs/ knowledge base. Start here to learn the robot's architecture. |
| get_subsystemB | Return a subsystem's knowledge-base doc (hardware, config names, functions, tuning, quirks), optionally with its Java source. |
| create_calculationA | Scaffold a stateless static-only helper class (e.g. live trajectory math) that any OpMode or subsystem can call. Keeps math out of subsystem/OpMode files. |
| hardware_manifestA | Scan TeamCode for every robot-configuration name (from hardwareMap.get and subsystem constructors) and list them, flagging any name used in multiple files. Use to cross-check code against the Driver Station configuration and catch typos/collisions. |
| validate_hardwareA | Pre-flight check for robot configuration mistakes. Flags one Driver Station name requested as incompatible device types, cross-file sharing, and unresolved constants, then tells the team whether it is safe to continue. |
| create_teleopA | Generate a TeleOp OpMode PLUS a separate Controls.java that holds only the controller bindings, so a driver can remap buttons without touching robot logic or an LLM. Describe the drivetrain, which subsystems to use, button actions (hold/press/toggle → subsystem calls), an optional slow mode, and named automations (multi-step or sensor-driven behaviors, which are scaffolded as stub methods to fill in). |
| deploy_robotA | Preferred high-level deployment entry point. With connection usb, build TeamCode and install it on a Control Hub or Robot Controller already visible to adb over a physical USB cable. With connection wifi-switch, build while online, then queue the local saved-network switch, ADB install, Robot Controller restart, and original-Wi-Fi restoration workflow. |
| wifi_deploy_startA | Build TeamCode while internet is available, start a local background job that switches macOS or Windows to a saved Control Hub Wi-Fi profile, connects ADB, installs the APK, restarts Robot Controller, and restores the original Wi-Fi even after failure. Returns before the network switch so the AI can receive the job ID. |
| wifi_deploy_statusA | Read the latest or specified background Wi-Fi deployment job after the computer reconnects to internet. Reports queued, switching, deploying, returning, succeeded, or failed state plus the complete local build/deploy/recovery timeline. |
| adb_devicesA | List Android devices visible to adb (Control Hub / Robot Controller phone). |
| adb_connectA | Connect adb to a REV Control Hub or RC phone over WiFi. Default target is 192.168.43.1:5555 (the Control Hub when the laptop is joined to the robot's WiFi network). |
| robot_statusA | Read-only connected-device snapshot: selected adb serial, model, Android version, Robot Controller app version, battery service, and data storage. Requires an explicit serial when multiple devices are attached. |
| restart_robot_controllerA | Force-stop and restart the Robot Controller app without rebuilding or reinstalling the APK. Useful when the Driver Station is stale or an OpMode left the app unhealthy. |
| buildA | Compile the TeamCode module with Gradle (assembleDebug). Returns the APK path on success, or the extracted compiler errors on failure. First build can take several minutes. |
| deployA | Install the built TeamCode APK on the connected robot (adb install) and restart the Robot Controller app. Run build first, and adb_connect/adb_devices to make sure a device is attached. |
| build_and_deployA | Safest competition-day deployment path: build TeamCode first and only install the APK if that build succeeds, then restart the Robot Controller app. This prevents accidentally deploying a stale APK. |
| clear_robot_logsA | Clear the connected robot's logcat buffer before reproducing a crash or bad behavior. Call robot_logs afterward for a clean signal. |
| robot_logsA | Dump recent logcat from the robot. Use after deploying or when an OpMode crashes/misbehaves. Useful filters: 'RobotCore' (SDK events), your OpMode class name, 'Exception'. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sanjit-K/ftc-toolchain'
If you have feedback or need assistance with the MCP directory API, please join our Discord server