MCP server for Nginx Proxy Manager - manage reverse proxy configurations
Server has 7 tools with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~150 chars). All tools have input schemas with type definitions. However, parameter descriptions are sparse or missing entirely for several tools (e.g., search_audit_logs lacks descriptions for 'limit' and 'offset' parameters despite having type info). Output schemas are undocumented, tools return free-text strings rather than structured JSON, forcing LLMs to parse unstructured responses. Error handling is basic (formatted exception strings) with no recovery guidance. No tool annotations (readOnlyHint/destructiveHint). create_access_list is the only write operation but lacks confirmation/dry-run pattern.
Create a new access list for basic auth and/or IP restrictions. Args: name: Name for the access list (e.g., "Preview Auth") usernames: List of usernames for basic auth passwords: List of passwords (must match usernames list length) client_addresses: List of IP addresses/CIDRs for IP-based rules client_directives: List of "allow" or "deny" (must match client_addresses length). Defaults to "allow" for all if not provided. satisfy_any: If true, either auth OR IP match grants access.
Get detailed configuration for a specific proxy host. Args: host_id: The ID of the proxy host to retrieve Returns full configuration including SSL settings, locations, and advanced configuration.
Check the health and status of the Nginx Proxy Manager instance. Returns system status, version information, and connectivity status.
List all access lists configured in Nginx Proxy Manager. Returns a summary of all access lists including their IDs and names. Use these IDs when creating proxy hosts that require access control.
All tools return unstructured free-text strings instead of structured JSON. LLMs must parse natural language output, wasting tokens and introducing parsing errors. E.g., list_proxy_hosts returns formatted text; get_proxy_host_details returns JSON but wrapped in a string.
create_access_list (write operation) lacks confirmation/dry-run pattern and has no destructiveHint annotation. Agents cannot preview changes before applying. Parameter 'pass_auth' appears in schema but is undocumented in the description.
search_audit_logs parameters 'limit' and 'offset' have type definitions but lack descriptions explaining their purpose, constraints (limit max 100), or pagination semantics. LLMs cannot infer pagination behavior.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 81 | <=2025-11-25 | v2 |
List all SSL certificates managed by Nginx Proxy Manager. Returns a summary of all certificates including their domains, provider, and expiration dates.
List all proxy hosts configured in Nginx Proxy Manager. Returns a summary of all proxy hosts including their domains, forward destinations, and SSL status.
Search the audit log for recent actions in Nginx Proxy Manager. Args: limit: Maximum number of entries to return (default: 50, max: 100) offset: Number of entries to skip for pagination (default: 0) Returns recent audit log entries showing user actions and changes.
Error handling returns formatted exception strings (e.g., 'Authentication failed: ...') with no recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal. No actionable next steps provided.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. LLMs cannot distinguish safe read-only tools from destructive ones without explicit hints.