{"id":49941069,"url":"https://github.com/rfingadam/mcp-nec2-antenna","last_synced_at":"2026-05-17T11:08:37.232Z","repository":{"id":357498347,"uuid":"1149954210","full_name":"RFingAdam/mcp-nec2-antenna","owner":"RFingAdam","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-13T02:54:32.000Z","size":37,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-13T04:14:13.837Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RFingAdam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-04T18:01:29.000Z","updated_at":"2026-05-13T02:54:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/RFingAdam/mcp-nec2-antenna","commit_stats":null,"previous_names":["rfingadam/mcp-nec2-antenna"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/RFingAdam/mcp-nec2-antenna","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RFingAdam%2Fmcp-nec2-antenna","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RFingAdam%2Fmcp-nec2-antenna/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RFingAdam%2Fmcp-nec2-antenna/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RFingAdam%2Fmcp-nec2-antenna/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RFingAdam","download_url":"https://codeload.github.com/RFingAdam/mcp-nec2-antenna/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RFingAdam%2Fmcp-nec2-antenna/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33136118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T09:28:26.183Z","status":"ssl_error","status_checked_at":"2026-05-17T09:27:52.702Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-17T11:08:35.134Z","updated_at":"2026-05-17T11:08:37.226Z","avatar_url":"https://github.com/RFingAdam.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/logo-banner.svg\" alt=\"mcp-nec2-antenna — NEC2 wire-antenna method-of-moments solver\" width=\"100%\"/\u003e\n\n\u003cbr/\u003e\n\n[![License](https://img.shields.io/badge/License-AGPL--3.0-1E40AF.svg)](LICENSE)\n[![Python 3.11+](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-3776AB.svg)](https://www.python.org/downloads/)\n[![MCP](https://img.shields.io/badge/MCP-server-A78BFA.svg)](https://modelcontextprotocol.io)\n[![eng-mcp-suite](https://img.shields.io/badge/eng--mcp--suite-member-22D3EE.svg)](https://github.com/RFingAdam/eng-mcp-suite)\n\n**Design and simulate wire antennas with the NEC2 method-of-moments solver, driven over MCP.**\n**Gain patterns, impedance, VSWR, radiation lobes — from your terminal or AI agent.**\n\n[Quick start](#quick-start) ·\n[Tools](#tools) ·\n[Workflows](#workflows) ·\n[Documentation](#documentation)\n\n\u003c/div\u003e\n\n---\n\n## What is mcp-nec2-antenna?\n\nmcp-nec2-antenna is an MCP server that wraps **NEC2** (Numerical\nElectromagnetics Code, version 2) — the classic method-of-moments\nwire-antenna solver — so an LLM agent can design, sweep, and analyze\nHF / VHF / UHF antennas through plain-English tool calls.\n\nDrive it from any MCP client (Claude Desktop, Claude Code, Codex CLI)\nor call the NEC2C binary directly via the same card-deck export. Five\nparameterized antenna geometries (dipole, Yagi-Uda, ground-plane\nvertical, full-wave loop, inverted-V) compile to NEC2 GW/EX/FR/RP cards,\nsolve with the `nec2c` reference engine, and return impedance, VSWR,\ngain, and front-to-back from a single tool call.\n\n**What mcp-nec2-antenna does well:**\n\n- 🤖 **AI-native via MCP.** First-class [Model Context Protocol](https://modelcontextprotocol.io)\n  server with 9 tools. Any Claude / LLM agent can drive it.\n- 📡 **Reference engine.** Uses the canonical NEC2C C implementation —\n  the same solver behind 4nec2, xnec2c, and antenna textbooks.\n- ⚡ **Parameterized geometries.** Five built-in wire antennas with\n  closed-form initial sizing; the agent fills in band + height + element\n  count and gets a ready-to-solve deck.\n- 📐 **Three ground models.** free-space, perfect ground, real\n  (Sommerfeld) ground — picked per geometry.\n- 🔒 **AGPL-3.0-or-later.** Modifications shared back if served over a network.\n\n---\n\n## Quick start\n\n### Install\n\nNEC2C must be on `PATH` first:\n\n```bash\n# Ubuntu/Debian\nsudo apt install nec2c\n\n# macOS\nbrew install nec2c\n\n# Arch Linux\nyay -S nec2c\n```\n\nThen:\n\n```bash\ngit clone https://github.com/RFingAdam/mcp-nec2-antenna.git\ncd mcp-nec2-antenna\nuv pip install -e .\n```\n\n### Wire it into your MCP client\n\n**Claude Code:**\n```bash\nclaude mcp add nec2-antenna -- uv run --directory /path/to/mcp-nec2-antenna mcp-nec2-antenna\n```\n\n**Codex CLI:**\n```bash\ncodex mcp add nec2-antenna -- uv run --directory /path/to/mcp-nec2-antenna mcp-nec2-antenna\n```\n\n**Raw config (Claude Desktop):**\n\n```json\n{\n  \"mcpServers\": {\n    \"nec2-antenna\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/mcp-nec2-antenna\", \"mcp-nec2-antenna\"]\n    }\n  }\n}\n```\n\nThen ask your assistant in plain English:\n\n\u003e *\"Design a 5-element Yagi for 435 MHz at 10 m height, simulate it, and tell me the gain and front-to-back.\"*\n\nThe agent calls `nec2_create_yagi` followed by `nec2_simulate`, and\nreports impedance, VSWR, and radiation pattern.\n\n---\n\n## Tools\n\n| Tool                       | Purpose                                       | Key arguments                                  |\n| -------------------------- | --------------------------------------------- | ---------------------------------------------- |\n| `nec2_create_dipole`       | Half-wave horizontal dipole                   | `name`, `frequency_mhz`, `height_m`            |\n| `nec2_create_yagi`         | Yagi-Uda directional beam                     | `name`, `frequency_mhz`, `num_elements`, `boom_height_m` |\n| `nec2_create_vertical`     | Quarter-wave vertical w/ radials              | `name`, `frequency_mhz`, `num_radials`         |\n| `nec2_create_loop`         | Full-wave quad loop                           | `name`, `frequency_mhz`, `height_m`            |\n| `nec2_create_inverted_v`   | Inverted-V dipole from a single mast          | `name`, `frequency_mhz`, `apex_height_m`, `droop_deg` |\n| `nec2_simulate`            | Run NEC2 sweep — Z, VSWR, gain, pattern       | `antenna_id`, `frequency_start/stop_mhz`, `steps` |\n| `nec2_get_nec_cards`       | Export raw NEC2 card deck (for 4nec2/xnec2c)  | `antenna_id`                                   |\n| `nec2_list_antennas`       | List antennas in the current session          | _none_                                         |\n| `nec2_list_antenna_types`  | Show built-in antenna types + characteristics | _none_                                         |\n\nFull tool reference in [`docs/tools.md`](docs/tools.md).\n\n---\n\n## What it solves\n\n| Antenna       | Typical gain | Pattern         | Best for                                |\n| ------------- | ------------ | --------------- | --------------------------------------- |\n| Dipole        | 2.15 dBi     | Omnidirectional | General purpose, portable               |\n| Yagi-Uda      | 7–15 dBi     | Directional     | DX, satellites, weak-signal work        |\n| Vertical      | 0–2 dBi      | Omnidirectional | Mobile, limited real estate             |\n| Loop          | 3–4 dBi      | Bidirectional   | Low-noise receive, DX                   |\n| Inverted-V    | 2 dBi        | Omnidirectional | Single-mast portable                    |\n\nGround models: **free-space**, **perfect** (PEC), and **real** (Sommerfeld\ntwo-medium). Pattern step is configurable; default is 5° azimuth/elevation.\n\n---\n\n## Workflows\n\nmcp-nec2-antenna fits in the following [eng-mcp-suite](https://github.com/RFingAdam/eng-mcp-suite)\nworkflow bundles:\n\n- **`rf-design`** — closed-form trans-line synthesis (lineforge) +\n  wire-antenna MoM (this server) + circuit/filter sim (mcp-ltspice-qucs).\n- **`antenna-bench`** — antenna design + EMC limit lookup\n  (mcp-emc-regulations) before lab measurement.\n\nSee the [suite manifest](https://github.com/RFingAdam/eng-mcp-suite/blob/main/manifest.yaml)\nfor the full list of sibling MCPs and bundle definitions.\n\n---\n\n## Documentation\n\n- 📘 **[Quick Start](docs/index.md)** — install through first call.\n- 🛠️ **[Tool reference](docs/tools.md)** — every MCP tool, every argument.\n- 📐 **[Usage examples](docs/usage.md)** — practical end-to-end walkthroughs.\n- 🏗️ **[Architecture](docs/architecture.md)** — how this MCP fits in eng-mcp-suite.\n\n---\n\n## Part of eng-mcp-suite\n\n\u003csub\u003eThis MCP server is part of\u003c/sub\u003e\n\n[![eng-mcp-suite](https://img.shields.io/badge/eng--mcp--suite-engineering%20MCP%20catalog-22D3EE?style=for-the-badge)](https://github.com/RFingAdam/eng-mcp-suite)\n\n\u003csub\u003eAn open umbrella for engineering MCP servers across RF, EMC, PCB,\nsignal integrity, EM simulation, and lab test. Same brand, same docs\nstructure, designed to compose. See the\n[full catalog](https://github.com/RFingAdam/eng-mcp-suite#whats-included)\nor jump to a sibling:\u003c/sub\u003e\n\n| Domain                      | Sibling MCPs                                                                 |\n| --------------------------- | ---------------------------------------------------------------------------- |\n| **RF / Transmission lines** | [lineforge](https://github.com/RFingAdam/lineforge)                          |\n| **Circuit + filter sim**    | [mcp-ltspice-qucs](https://github.com/RFingAdam/mcp-ltspice-qucs)            |\n| **PCB / SI**                | [mcp-pcb-emcopilot](https://github.com/RFingAdam/mcp-pcb-emcopilot)          |\n| **EMC regulatory**          | [mcp-emc-regulations](https://github.com/RFingAdam/mcp-emc-regulations)      |\n| **EM simulation (3D)**      | [mcp-openems](https://github.com/RFingAdam/mcp-openems)                      |\n| **Diagrams**                | [drawio-engineering-mcp](https://github.com/RFingAdam/drawio-engineering-mcp) |\n| **Lab gear**                | [copper-mountain-vna-mcp](https://github.com/RFingAdam/copper-mountain-vna-mcp) |\n\n---\n\n## Contributing\n\nContributions are welcome.\n\n1. **Pick a [GitHub issue](https://github.com/RFingAdam/mcp-nec2-antenna/issues)**.\n2. **Fork + branch** (`feature/your-thing` or `fix/your-bug`).\n3. **Run the local check suite**:\n   ```bash\n   uv run pytest\n   ```\n4. **Open a PR** — link the issue, request review.\n\n---\n\n## License\n\n[AGPL-3.0-or-later](LICENSE). Relicensed from Apache-2.0 in v0.2.0 to\nalign with the eng-mcp-suite toolkit-wide AGPL move. The underlying\nNEC2 engine is public-domain US-government code; this wrapper is\nAGPL-3.0-or-later and is independent of NEC2's public-domain status.\n\n## Acknowledgments\n\n- **Gerald J. Burke (LLNL)** — original NEC2 Fortran (1981, public domain).\n- **Neoklis Kyriazis (5B4AZ)** — [NEC2C](http://www.qsl.net/5b4az/) C port,\n  the reference engine this server invokes.\n- **The MCP working group** — for the [Model Context Protocol](https://modelcontextprotocol.io) specification.\n\n\u003cdiv align=\"center\"\u003e\n\n\u003csub\u003ePart of \u003ca href=\"https://github.com/RFingAdam/eng-mcp-suite\"\u003eeng-mcp-suite\u003c/a\u003e — built for ham radio operators, RF engineers, and AI agents.\u003c/sub\u003e\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frfingadam%2Fmcp-nec2-antenna","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frfingadam%2Fmcp-nec2-antenna","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frfingadam%2Fmcp-nec2-antenna/lists"}