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
53 lines
1.2 KiB
TOML
53 lines
1.2 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=61.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "gnuradio-mcp"
|
|
version = "0.2.0"
|
|
description = "MCP server for GNU Radio — build, validate, run, and export flowgraphs programmatically."
|
|
readme = "README.md"
|
|
license = "MIT"
|
|
requires-python = ">=3.14"
|
|
authors = [
|
|
{name = "Ryan Malloy", email = "ryan@supported.systems"},
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Science/Research",
|
|
"Programming Language :: Python :: 3.14",
|
|
"Topic :: Scientific/Engineering",
|
|
"Topic :: Communications :: Ham Radio",
|
|
]
|
|
dependencies = [
|
|
"pydantic>=2.12",
|
|
"fastmcp>=3.0.0b1",
|
|
# for gnuradio
|
|
"mako>=1.3",
|
|
"pyyaml>=6.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
runtime = [
|
|
"docker>=7.0",
|
|
]
|
|
dev = [
|
|
"pytest>=9.0",
|
|
"pytest-asyncio>=1.3",
|
|
"pre-commit>=4.5",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/rsp2k/gr-mcp"
|
|
Repository = "https://github.com/rsp2k/gr-mcp"
|
|
Issues = "https://github.com/rsp2k/gr-mcp/issues"
|
|
|
|
[project.scripts]
|
|
gnuradio-mcp = "gnuradio_mcp.server:main"
|
|
|
|
[tool.pytest.ini_options]
|
|
# Tell pytest where to find the package
|
|
pythonpath = ["src", "."]
|
|
asyncio_mode = "auto"
|