This guide explains how to clone and configure the two repositories you asked for:
This setup gives Claude an end-to-end automation workflow for formal and netlist tasks:
- Claude can automatically create Naja scripts (based on the Naja skill).
- Scripts are written into your shared MCP folder (
shared_filesserver). - Claude executes those scripts through an MCP command runner (
desktop-commander). - The generated outputs (edited netlists, reports, transformed designs) are read back from the shared folder.
- Claude can then call Kepler Formal MCP to analyze or validate the result.
In short, this turns Claude into an automated loop:
- generate script -> run script -> inspect output -> verify with Kepler Formal
That is why both parts are needed:
- Naja side: script generation and netlist transformation
- Kepler Formal side: formal-oriented checking and result analysis
The setup steps below are aligned with the local documentation available in this workspace from:
kepler-formal-mcp/README.mdkepler-formal-mcp/docs/instructions-claude.mdnaja-agent/README.mdnaja-agent/docs/setup.md
mkdir -p ~/mcp-workspace
cd ~/mcp-workspace
git clone --recurse-submodules https://github.com/najaeda/naja-agent.git
git clone --recurse-submodules https://github.com/keplertech/kepler-formal-mcp.gitIf you already cloned without submodules:
cd ~/mcp-workspace/naja-agent
git submodule update --init --recursive
cd ~/mcp-workspace/kepler-formal-mcp
git submodule update --init --recursiveFrom kepler-formal-mcp:
cd ~/mcp-workspace/kepler-formal-mcp
./build_kepler_formal.shIf you want automatic dependency installation first:
./build_kepler_formal.sh --install-depsOn Ubuntu/Debian, the local Kepler docs list these dependencies:
sudo apt-get update
sudo apt-get install -y \
g++ libboost-dev python3.9-dev capnproto libcapnp-dev libtbb-dev \
pkg-config bison flex doxygen libspdlog-dev libfmt-dev \
libboost-iostreams-dev zlib1g-dev cmake gitBuild output is generated under:
thirdparty/kepler-formal/build/
Based on local naja-mcp docs, the current workflow is centered on a Naja skill package plus MCP helpers for file access and command execution.
Install Naja EDA Python package first:
python3 -m pip install najaeda- Zip the
naja-basefolder with its internal structure unchanged. - Keep
SKILL.mdat the top level inside that zipped folder structure.
Expected source folder in this workspace:
naja-mcp/skills/naja-base/
- Open Claude.
- Go to Customize -> Skills.
- Click
+. - Select Create.
- Upload the ZIP file.
Open your Claude Desktop config file:
- Linux/macOS:
~/.config/Claude/claude_desktop_config.json - Windows:
%APPDATA%\\Claude\\claude_desktop_config.json
Add Kepler Formal MCP server:
{
"mcpServers": {
"kepler-formal": {
"command": "python3",
"args": [
"/home/<user>/mcp-workspace/kepler-formal-mcp/server.py"
],
"env": {
"PYTHONPATH": "/home/<user>/mcp-workspace/kepler-formal-mcp/thirdparty/kepler-formal/src"
}
}
}
}Add the MCP helpers recommended by local naja-mcp/docs/setup.md:
{
"mcpServers": {
"shared_files": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/home/<user>/shared-mcp-files"
]
},
"desktop-commander": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander@latest"
]
}
}
}Merge entries into a single valid JSON object under the same mcpServers key.
- Save the config.
- Restart Claude Desktop.
- Confirm Kepler and helper MCP entries are connected.
- Confirm the Naja skill appears in Claude Skills.
- Always use absolute paths.
- If
python3is not found, use/usr/bin/python3. - If config fails to load, validate JSON syntax.
- If Kepler build fails, re-run submodule init and re-check system dependencies.