A customizable Model Context Protocol (MCP) server for FIRST Robotics Competition (FRC) teams. It exposes your team's robot code, WPILib documentation, and vendor library references as searchable context to AI agents, making it easy to ask questions, debug, and generate code that's grounded in your actual project.
Live deployment: frc-mcp-server.vercel.app
- List sources: Discover all indexed FRC documentation and robot code files grouped by directory
- Search context: Full-text search across docs and code for classes, methods, constants, and concepts
- Read files: Retrieve complete or partial file contents with line-range support
- Deploy anywhere: Runs on Vercel, locally via Node, or any Node.js host
- Customizable: Drop your own robot code and docs into
src/data/to tailor the context to your team
| Tool | Description |
|---|---|
list_frc_sources |
List all indexed files grouped by directory. Use this to discover available FRC documentation and team robot code context. |
search_frc_context |
Search across FRC documentation and team robot code for classes, methods, constants, and concepts. Returns relevant code snippets with context. |
get_frc_file |
Read complete or partial content of a specific file. Use for examining exact code, documentation, or configuration details. |
query(required): Text to search for (e.g.PIDController,swerve,vision,AutoBuilder). Case-insensitive.sourcePath(optional): Limit search to a specific file or directory prefix (e.g.robot/src/main/java/frc/robot/orfrc-docs/).limit(optional): Max snippets to return (default: 8, max: 25).
sourcePath(required): Relative path fromlist_frc_sources(e.g.robot/src/main/java/frc/robot/Constants.java).startLine(optional): 1-based start line.endLine(optional): 1-based end line (inclusive).
- Node.js 20 or later
git clone https://github.com/Project516/frc-mcp-server.git
cd frc-mcp-server
npm install
npm run build
npm startThe server starts an HTTP endpoint at /mcp compatible with the MCP Streamable HTTP transport.
- Fork this repository
- Add your robot code and docs to
src/data/(see below) - Push to your fork and connect it to Vercel
- The included
vercel.jsonhandles the build and routing configuration
Place files in src/data/ to make them available to MCP tools. The recommended structure:
src/data/
robot/ # Your team's robot code
src/main/java/frc/robot/...
build.gradle
frc-docs/ # WPILib documentation and references
vendors/ # Vendor library notes (REV, CTRE, PathPlanner, etc.)
rev/
ctre/
pathplanner/
See docs/FRC_CONTEXT.md for detailed guidance on organizing your context, keeping it clean, and updating it each season.
- Only include source and config files — exclude
.gradle,build,bin,outdirectories - Keep files as plain text, markdown, or source code
- Prefer fewer, high-signal files over copies of entire documentation sites
- Add a
README.mdin each subfolder describing its contents - Treat everything in
src/data/as potentially visible — never include secrets or tokens
├── src/
│ ├── index.ts # MCP server entry point and tool definitions
│ └── data/ # Customizable context directory (robot code + docs)
├── docs/
│ └── FRC_CONTEXT.md # Guide for organizing context data
├── public/
│ └── index.html # Landing page for the Vercel deployment
├── package.json
├── tsconfig.json
├── vercel.json # Vercel build and routing config
└── .gitignore
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b my-feature) - Make your changes
- Run
npm run typecheckto verify TypeScript compiles - Commit and push your branch
- Open a pull request
Please keep PRs focused. One improvement per PR makes review easier for everyone.
GPL-3.0-or-later — see the LICENSE file for details.