MCPO-Control-Panel

This little container is from  https://github.com/daswer123/mcpo-control-panel . It essentially wraps a GUI around the original MCPO container which, as it turns out, is extremely useful. This container, which had to be locally built, replaces the original MCPO container. There a couple quirks noted below (v0.6.1 at the time of writing).

UI port can't be configured

The main issue is related to the port parameter defined in the environment at container launch. For whatever reason, it didn't matter what value was placed there, it was always reported as invalid. This happened both on AMD64 and ARM64. The fix was to override the container's launch command and simply drop the environment parameter for Port and allow the default value to be used. Below if the code used in Portainer to launch it.

  mcpo-control-panel:
#   command: ["uv", "run", "python", "-m", "mcpo_control_panel", "--host", "${MCPO_MANAGER_HOST}", "--port", "${MCPO_MANAGER_PORT}", "--config-dir", "${MCPO_MANAGER_DATA_DIR}"]
    command: ["uv", "run", "python", "-m", "mcpo_control_panel", "--host", "${MCPO_MANAGER_HOST}", "--config-dir", "${MCPO_MANAGER_DATA_DIR}"]
    deploy:
      placement:
        constraints: 
          - "node.labels.arch   == aarch64"
          - "node.labels.public == true"
          - "node.hostname      != hostb.localdomain"
      mode: replicated
      replicas: 1
    environment:
      - server-type=streamable-http
      - MCPO_MANAGER_HOST=0.0.0.0
      - MCPO_MANAGER_PORT=8083
      - MCPO_MANAGER_DATA_DIR=/data
    image: registry:5000/mcpo-control-panel:0.1.6
    networks:
      - ai_network
      - external_network
    ports:
      - target:    8083
        published: 8084
        protocol:  tcp
    volumes:
      - /docker/mcpo-control-panel/data:/data

Testing defined subordinate MCP server

The next issue was around testing the defined subordinate servers. Essentially MCP Inspector can't be used for this job. Luckily the UI has facilities for testing. A test configuration has to be enabled to allow access to the MCPO interface. I wouldn't recommend this for a production environment though. Essentially the main interface port for MCPO needs to be exposed so a web browser can get to it.

    ports:
      - target:    8083
        published: 8084
        protocol:  tcp
      - target:    8000
        published: 8085
        protocol:  tcp

Port 8000 is opened up in the ports section above.

Once the port is open it's possible to navigate to the MCPO server and ask for the doc:
http://my_mcpo_server.localdomain:8085/mcp-server-time/docs

From here it's possible to test all the various calls available via the OpenAPI interface.