Blog

Naftiko Capabilities for NGINX

·May 5, 2026
Table of contents

NGINX is the most widely deployed web server and reverse proxy in the world, and via the NGINX Plus API it exposes a rich management surface for traffic monitoring, upstream management, and dynamic configuration. The Naftiko capability set for NGINX covers two complementary surfaces: monitoring and observability for real-time traffic insight, and traffic management for dynamic upstream control.

What the Capability Covers

Two workflow capabilities: Monitoring and Observability (real-time metrics across connections, requests, server zones, caches, upstreams, and stream services) and Traffic Management (dynamic upstream server control without reloading configuration).

MCP Tools Available

Monitoring: get-stub-status, get-nginx-info, get-connections, get-http-requests, get-http-server-zones, get-http-location-zones, get-http-caches, get-http-limit-conn-zones, get-http-limit-req-zones, get-http-upstreams, get-stream-server-zones, get-stream-upstreams

Traffic Management: get-http-upstream-servers, add-http-upstream-server, modify-http-upstream-server, remove-http-upstream-server, get-http-keyval-zone, add-http-keyval, modify-http-keyval

Capability Specification

naftiko: "1.0.0-alpha1"

info:
  label: "NGINX Monitoring And Observability"
  description: >-
    Workflow capability for monitoring NGINX instances combining Plus HTTP API
    detailed statistics with Stub Status basic metrics. Provides comprehensive
    observability across connections, HTTP requests, server zones, location
    zones, caches, rate limiting, and upstream health.
  tags:
    - NGINX
    - Monitoring
    - Observability
    - Metrics
    - Health Checks

capability:
  consumes:
    - namespace: nginx-plus-api
      type: http
      baseUri: http://localhost:8080/api
      authentication:
        type: basic
        username: ""
        password: ""
      resources:
        - name: nginx
          path: "/8/nginx"
          operations:
            - name: get-nginx-info
              method: GET
        - name: connections
          path: "/8/connections"
          operations:
            - name: get-connections
              method: GET
        - name: http-upstreams
          path: "/8/http/upstreams"
          operations:
            - name: get-http-upstreams
              method: GET
        - name: http-server-zones
          path: "/8/http/server_zones"
          operations:
            - name: get-http-server-zones
              method: GET
    - namespace: nginx-stub-status
      type: http
      baseUri: http://localhost:8081
      authentication:
        type: basic
        username: ""
        password: ""
      resources:
        - name: stub-status
          path: "/stub_status"
          operations:
            - name: get-stub-status
              method: GET

  exposes:
    - type: mcp
      port: 9201
      namespace: nginx-monitoring-mcp
      description: "MCP tools for NGINX monitoring and observability."
      tools:
        - name: get-stub-status
          description: "Get basic NGINX status metrics from stub_status module."
          hints:
            readOnly: true
          call: "nginx-stub-status.get-stub-status"
          outputParameters:
            - type: string
              mapping: "$."

        - name: get-nginx-info
          description: "Get NGINX Plus instance status and version information."
          hints:
            readOnly: true
          call: "nginx-plus-api.get-nginx-info"
          outputParameters:
            - type: object
              mapping: "$."

        - name: get-connections
          description: "Get current client connection statistics."
          hints:
            readOnly: true
          call: "nginx-plus-api.get-connections"
          outputParameters:
            - type: object
              mapping: "$."

        - name: get-http-upstreams
          description: "Get health and statistics for all HTTP upstream groups."
          hints:
            readOnly: true
          call: "nginx-plus-api.get-http-upstreams"
          outputParameters:
            - type: object
              mapping: "$."

        - name: get-http-server-zones
          description: "Get traffic statistics per HTTP server zone."
          hints:
            readOnly: true
          call: "nginx-plus-api.get-http-server-zones"
          outputParameters:
            - type: object
              mapping: "$."

Running It

docker pull ghcr.io/naftiko/framework:latest

# Set NGINX_BASE_URL in your .env file
docker run -p 9201:9201 \
  -v ./capabilities/monitoring-and-observability.yaml:/app/capability.yaml \
  --env-file .env \
  ghcr.io/naftiko/framework:latest /app/capability.yaml

The NGINX monitoring tools are especially valuable for AI-assisted capacity planning: an agent can poll get-http-upstreams, identify overloaded upstreams, and call add-http-upstream-server from the traffic management capability to dynamically scale capacity — without any NGINX reload required. The NGINX capability set is part of the Naftiko Fleet.