212832e7e4
feat: expose protocol analysis, OOT export tools; harden for release
...
Wire up protocol analysis (parse_protocol_spec, generate_decoder_chain,
get_missing_oot_modules), signal analysis (analyze_iq_file), and OOT
export (generate_oot_skeleton, export_block_to_oot, export_from_flowgraph)
as MCP tools with integration tests.
Security fixes from Hamilton review:
- Remove `from __future__ import annotations` from tool registration
files (breaks FastMCP schema generation)
- Add blocklist guard to evaluate_expression (was unsandboxed eval)
- Replace string interpolation with base64 encoding in Docker test
harness (prevents code injection)
- Add try/finally cleanup for temp files and Docker containers
- Replace assert with proper ValueError in flowgraph block creation
- Log OOT auto-discovery failures instead of swallowing silently
Packaging:
- Move entry point to src/gnuradio_mcp/server.py with script entry
point (uv run gnuradio-mcp)
- Add PyPI metadata (authors, license, classifiers, urls)
- Add MIT LICENSE file
- Rewrite README for current feature set (80+ tools)
- Document single-session limitation
2026-02-20 13:17:11 -07:00
dca4e80857
feat: add incremental OOT block path management and auto-discovery
...
Add add_block_path() and get_block_paths() MCP tools for incremental
OOT module loading with BlockPathsModel responses. On startup, auto-scan
/usr/local/share and ~/.local/share for OOT blocks so modules like
gr-lora_sdr are available without manual configuration.
2026-01-30 18:02:27 -07:00
f3efb36435
feat: add gap analysis tools, OOT block loading, and configurable Docker image
...
Source changes spanning three features:
- Gap analysis: 12 new MCP tools (generate_code, load_flowgraph,
search_blocks, get_block_categories, flowgraph options, embedded
Python blocks, expression evaluation, block bypass, export/import)
- OOT support: load_oot_blocks tool + auto-discovery of paths like
/usr/local/share/gnuradio/grc/blocks for third-party modules
- Docker: configurable image parameter on launch_flowgraph for
running OOT-enabled containers (e.g. gnuradio-lora-runtime)
Resolves merge from feat/oot-block-paths into gap analysis work.
All 274 tests pass (204 unit + 70 integration).
2026-01-30 13:55:21 -07:00
e9ac115728
feat: add OOT (Out-of-Tree) block path loading support
...
Add load_oot_blocks MCP tool to dynamically load GNU Radio OOT modules.
Since GRC's Platform.build_library() clears all blocks on every call,
the implementation combines default block paths with OOT paths before
rebuilding. This allows loading custom blocks from:
- /usr/local/share/gnuradio/grc/blocks (locally-built)
- Custom user-specified directories
Implementation:
- PlatformMiddleware.load_oot_paths(): validates paths, combines with
defaults, rebuilds library
- PlatformProvider.load_oot_blocks(): exposes method to MCP layer
- McpPlatformProvider: registers load_oot_blocks tool
Returns useful diagnostics: added_paths, invalid_paths, and block
counts before/after reload.
2026-01-29 18:35:16 -07:00
Yoel Bassin
425b308556
main - feat: Imlement basic MCP server
2025-04-27 22:16:58 +03:00