An MCP server for ESP-IDF workflows, enabling project builds, firmware flashing, and automated issue resolution from build logs.
The goal of this MCP is to:
Simply find a command that is missing from this MCP and create a PR for it!
If you want someone to help you with this implementation, just open an issue.
This project is currently a Proof of Concept (PoC) for an MCP server tailored for ESP-IDF workflows.
Current Capabilities:
Vision & Future Work: The long-term vision is to expand this MCP into a comprehensive toolkit for interacting with embedded devices, potentially integrating with home assistant platforms, and streamlining documentation access for ESP-IDF and related technologies.
We envision features such as:
monitor
, menuconfig
interaction if feasible).Your ideas and contributions are welcome! Please feel free to discuss them by opening an issue.
First, clone this MCP repository:
git clone git@github.com:horw/esp-mcp.git
Then, configure it in your chatbot.
The JSON snippet below is an example of how you might configure this esp-mcp
server within a chatbot or an agent system that supports the Model Context Protocol (MCP). The exact configuration steps and format may vary depending on the specific chatbot system you are using. Refer to your chatbot's documentation for details on how to integrate MCP servers.
{
"mcpServers": {
"esp-run": { // "esp-run" is an arbitrary name you can assign to this server configuration.
"command": "<path_to_uv_or_python_executable>",
"args": [
"--directory",
"<path_to_cloned_esp-mcp_repository>", // e.g., /path/to/your/cloned/esp-mcp
"run",
"main.py" // If using python directly, this might be just "main.py" and `command` would be your python interpreter
],
"env": {
"IDF_PATH": "<path_to_your_esp-idf_directory>" // e.g., ~/esp/esp-idf or C:\\Espressif\\frameworks\\esp-idf
}
}
}
}
A few notes on the configuration:
command
: This should be the full path to your uv
executable if you are using it, or your Python interpreter (e.g., /usr/bin/python3
or C:\\Python39\\python.exe
) if you plan to run main.py
directly.args
:
--directory
should be the absolute path to where you cloned the esp-mcp
repository.uv
, the arguments run main.py
are appropriate. If you're using Python directly, you might only need main.py
in the args
list, and ensure your command
points to the Python executable.IDF_PATH
: This environment variable must point to the root directory of your ESP-IDF installation. ESP-IDF is Espressif's official IoT Development Framework. If you haven't installed it, please refer to the official ESP-IDF documentation for installation instructions.Once the esp-mcp
server is configured and running, your LLM or chatbot can interact with it using the tools defined in this MCP. For example, you could ask your chatbot to:
/path/to/my/esp-project
using the esp-mcp
."examples/hello_world
directory."my_app
."The MCP server will then execute the corresponding ESP-IDF commands (like idf.py build
, idf.py fullclean
, idf.py flash
) based on the tools implemented in main.py
.
The result.gif
below shows an example interaction:
An MCP server that integrates with Ollama to provide tools for file operations, calculations, and text processing. Requires a running Ollama instance.
Execute shell commands with structured output via a powerful CLI server.
Fetches Rust crate READMEs, metadata, dependencies, and usage information from crates.io.
Token-efficient access to OpenAPI/Swagger specs via MCP Resources
A scientific computing server for symbolic math, data analysis, and visualization using popular Python libraries like NumPy, SciPy, and Pandas.
Manages Infrastructure as Code (IaC) operations using Ansible and Terraform. Requires external tools and manual setup.
Fetch comprehensive information about CRAN packages, including READMEs, metadata, and search functionality.
Converts LaTeX mathematical expressions to MathML format using MathJax-node.
Loads and validates LAML (YAML-based markup language) documents via the Model Context Protocol.
Interact with Homebrew (the package manager for macOS and Linux) using natural language commands.