The Python MCP server + hardware test harness that lived under mcp-server/ now has its own home at https://github.com/meshtastic/meshtastic-mcp (published, versioned independently). Remove the in-tree copy and wire the firmware repo to the standalone server externally. - Delete mcp-server/ (96 files) and the 8 harness-coupled AI workflow files under .claude/commands/ and .github/prompts/ that drove ./mcp-server/ run-tests.sh — those workflows now ship with meshtastic-mcp as skills. - .mcp.json: register the server via `uvx --from git+https://github.com/meshtastic/meshtastic-mcp meshtastic-mcp` instead of a local ./mcp-server/.venv, keeping MESHTASTIC_FIRMWARE_ROOT="." so the MCP tools still work from this checkout with no local build. - Repoint the remaining references (AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, bin/regen-*.sh, docs, Screen.h, userPrefs.jsonc, test/fixtures/nodedb/README.md, .trunk/configs/.bandit) at the standalone repo. The MCP tool surface is unchanged — only the pytest harness moves out; run it from a meshtastic-mcp checkout with MESHTASTIC_FIRMWARE_ROOT pointed here. No build/CI/platformio coupling existed, so nothing in the firmware build changes. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
52 lines
1.8 KiB
Bash
Executable File
52 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Regenerate Python protobuf bindings from the in-tree `protobufs/` submodule
|
|
# into `bin/_generated/`. Called by bin/regen-fake-nodedbs.sh; also useful as
|
|
# a standalone refresh after any change to a .proto file.
|
|
#
|
|
# Output is .gitignored — bindings are a build artifact.
|
|
#
|
|
# Namespace rewrite:
|
|
# The .proto files declare `package meshtastic;`, which makes protoc emit
|
|
# imports like `from meshtastic import mesh_pb2`. That conflicts with the
|
|
# PyPI `meshtastic` package (which the meshtastic-mcp tooling relies on for its
|
|
# SerialInterface/BLEInterface transport). We post-process the generated
|
|
# files to live under `meshtastic_v25` instead — both the directory layout
|
|
# and all internal imports — so they coexist cleanly with the PyPI package.
|
|
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
if ! command -v protoc >/dev/null 2>&1; then
|
|
echo "ERROR: protoc not found in PATH." >&2
|
|
echo " macOS: brew install protobuf" >&2
|
|
echo " Ubuntu/Debian: apt install protobuf-compiler" >&2
|
|
exit 1
|
|
fi
|
|
|
|
OUT=bin/_generated
|
|
LOCAL_NS=meshtastic_v25
|
|
|
|
rm -rf "$OUT"
|
|
mkdir -p "$OUT"
|
|
|
|
# 1) Generate from the in-tree protos. nanopb.proto first so its descriptor
|
|
# is available for the [(nanopb).*] options on other messages.
|
|
protoc \
|
|
--proto_path=protobufs \
|
|
--python_out="$OUT" \
|
|
protobufs/nanopb.proto \
|
|
protobufs/meshtastic/*.proto
|
|
|
|
# 2) Move the generated `meshtastic/` directory to `meshtastic_v25/`.
|
|
mv "$OUT/meshtastic" "$OUT/$LOCAL_NS"
|
|
|
|
# 3) Rewrite internal imports: any reference to `meshtastic.X_pb2` or
|
|
# `from meshtastic import X_pb2` becomes `meshtastic_v25.*`.
|
|
python3 bin/_rewrite_proto_namespace.py "$OUT/$LOCAL_NS" "$LOCAL_NS"
|
|
|
|
# 4) Make the package importable.
|
|
touch "$OUT/__init__.py"
|
|
touch "$OUT/$LOCAL_NS/__init__.py"
|
|
|
|
echo "regenerated Python protobuf bindings -> $OUT/$LOCAL_NS/ (namespace: $LOCAL_NS)" >&2
|