MCP server for NEC2 wire antenna design and simulation
The server provides 7 well-named antenna design tools with clear action verbs (create, list, get, simulate, update, delete). All tools have descriptions present. Schemas are visible in the source code with proper type definitions and enums for antenna types and ground types. However, several parameter descriptions are minimal (e.g., 'ID of the antenna to retrieve' lacks format guidance), and output schemas are not formally documented in the code. Error handling and recovery guidance are not evident. The 'parameters' field in create_antenna accepts an object with 'Type-specific parameters' but lacks a formal schema for what those parameters should contain, making it difficult for LLMs to construct valid input. Most tools follow good naming conventions (verb_noun), but descriptions average ~50-80 characters, which is short of the 194-char baseline for production tools. No descriptions explain when to use one tool vs. another (e.g., when to use simulate_antenna vs. get_nec2_input). Security considerations like credential injection or rate limiting are not mentioned.
Create a new antenna design of the specified type
Delete an antenna design
Retrieve detailed information about an antenna design
Generate NEC2 input file format for an antenna design
List all antenna designs in the current session
Run NEC2 simulation on an antenna design
Update antenna design parameters
Parameter 'parameters' in create_antenna lacks formal schema definition. Described only as 'Type-specific parameters (height_m, num_directors, etc.)' with no enum, pattern, or nested object schema. LLMs cannot construct valid payloads without explicit examples or constraints.
Descriptions are consistently short (50-80 chars) and lack guidance on WHEN to use each tool or HOW to construct multi-step workflows. For example, simulate_antenna and get_nec2_input both accept frequency range parameters, but users don't know which to call first or why. Production baseline is 194 chars average.
Output schemas are not formally documented in the source code. Responses return structured data, but the field names, types, and meanings (e.g., what does antenna.id contain? is it a UUID?) are not explicit. LLMs cannot reliably extract chaining IDs or plan downstream calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
No error handling documentation. No guidance on what happens if antenna_id is invalid, if NEC2 simulation fails, or if frequency parameters are out of range. Error messages are not shaped for LLM recovery.
delete_antenna has no confirmation or dry-run capability. An irreversible destructive operation with no safeguard against accidental invocation by an agent.
Parameter descriptions lack actionable format guidance. 'ID of the antenna to retrieve' does not specify format (UUID? alphanumeric? length constraints?). 'Operating frequency in MHz' lacks range constraints (e.g., 1 - 1000 MHz). LLMs guess and fail.
Optional parameters (freq_start, freq_end, freq_steps) have no documented defaults or interaction rules. What happens if freq_start > freq_end? What are the defaults if omitted?
list_antennas returns no documented pagination. If there are hundreds of antenna designs in the session, does this tool return all of them at once (context explosion)? Are results paginated?