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) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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