MCP Inspector

Saudações.

Hoje vou ensinar como instalar o MCP Inspector.

1 – Sobre o MCP Inspector

O MCP Inspector é um software que, como o nome diz, inspeciona do protocolo de contexto para modelos de IA.

Ele é um software oficial do projeto MCP e permite que o administrador ou usuário de um servidor MCP possa navegar nos recursos providos como se fosse um agente de IA.

Links:

Ele pode ser executado dentro de projetos, paralelo a projetos ou independente em uma URL (localhost ou pública).

Eu gosto mais da última opção, URL pública, implementando em sua infra essa ferramenta muito útil.

2 – Instalando no Docker

Vamos rodar o MCP Inspector no Docker, criando o container mcp-inspector.

2.1 – Rede Docker

Criando a rede para containers (network_public):

Bash
# Rede de containers
docker network create network_public \
    -d bridge \
    -o com.docker.network.bridge.name=br-net-public \
    -o com.docker.network.driver.mtu=1500 \
    -o com.docker.network.bridge.gateway_mode_ipv4=nat-unprotected \
    --subnet 10.249.0.0/16 \
    --gateway 10.249.255.254;

2.2 – Container do MCPI

Vou rodar o container publicando o acesso pelas portas diretas (HTTP) e por proxy-reverso Traefik.

Personalize o endereço mcpi.seudominio.com.br para um nome de DNS que você configurou apontando para o IP do servidor Docker.

Bash
# Variaveis
    NAME=mcp-inspector;
    IMAGE="ghcr.io/modelcontextprotocol/inspector:latest";

    # nomes de dns:
    FQDN="mcpi.seudominio.com.br";
    #FQDN="mcp-inspector.$(hostname -f)";
    #FQDN="mcp-inspector.$(hostname -d)";

# URLs de acesso CORs
    URL_LOCAL="http://localhost:8080";
    URL_CONTAINER="http://localhost:6274,http://127.0.0.1:6274";
    URL_PUBLICS="https://$FQDN";
    # Juntar
    ALLOWED_ORIGINS="$URL_LOCAL,$URL_CONTAINER,$URL_PUBLICS";

# Atualizar/baixar imagem:
    docker pull $IMAGE;

# Renovar/Rodar:
    docker rm -f $NAME 2>/dev/null;
    docker run \
        -d --restart=always \
        --name $NAME -h $NAME.intranet.br \
        --memory=1g --memory-swap=1g --shm-size=1g \
        \
        --network network_public \
        \
        -p 6274:6274 \
        -p 6277:6277 \
        \
        --read-only \
        --tmpfs /run:rw,noexec,nosuid,size=16m \
        --tmpfs /tmp:rw,noexec,nosuid,size=16m \
        \
        -e HOST=0.0.0.0 \
        -e CLIENT_PORT=6274 \
        -e SERVER_PORT=6277 \
        \
        -e ALLOWED_ORIGINS=$ALLOWED_ORIGINS \
        -e DANGEROUSLY_OMIT_AUTH=true \
        -e MCP_AUTO_OPEN_ENABLED=false \
        \
        --label "traefik.enable=true" \
        \
        --label "traefik.http.routers.${NAME}.rule=Host(\`$FQDN\`)" \
        --label "traefik.http.routers.${NAME}.entrypoints=web,websecure" \
        --label "traefik.http.routers.${NAME}.tls=true" \
        --label "traefik.http.routers.${NAME}.tls.certresolver=letsencrypt" \
        --label "traefik.http.routers.${NAME}.service=${NAME}" \
        --label "traefik.http.services.${NAME}.loadbalancer.server.port=6274" \
        --label "traefik.http.services.${NAME}.loadbalancer.passHostHeader=true" \
        \
        $IMAGE \
          server /data --console-address ":9001";

2.3 – Stack para Compose

Caso prefira no modelo de Stack para docker compose:

YAML
services:
  mcp-inspector:
    image: ghcr.io/modelcontextprotocol/inspector:latest
    container_name: mcp-inspector
    hostname: mcp-inspector.intranet.br
    restart: always

    mem_limit: 1g
    memswap_limit: 1g
    shm_size: 1g

    networks:
      - network_public

    ports:
      - "6274:6274"
      - "6277:6277"

    read_only: true
    tmpfs:
      - /run:rw,noexec,nosuid,size=16m
      - /tmp:rw,noexec,nosuid,size=16m

    environment:
      HOST: 0.0.0.0
      CLIENT_PORT: 6274
      SERVER_PORT: 6277
      ALLOWED_ORIGINS: "https://mcpi.seudominio.com.br"
      DANGEROUSLY_OMIT_AUTH: "true"
      MCP_AUTO_OPEN_ENABLED: "false"

    command: server /data --console-address ":9001"

    labels:
      traefik.enable: "true"
      traefik.http.routers.mcp-inspector.rule: "Host(`mcpi.seudominio.com.br`)"
      traefik.http.routers.mcp-inspector.entrypoints: "web,websecure"
      traefik.http.routers.mcp-inspector.tls: "true"
      traefik.http.routers.mcp-inspector.tls.certresolver: "letsencrypt"
      traefik.http.routers.mcp-inspector.service: "mcp-inspector"
      traefik.http.services.mcp-inspector.loadbalancer.server.port: "6274"
      traefik.http.services.mcp-inspector.loadbalancer.passHostHeader: "true"

networks:
  network_public:
    external: true

2.4 – Acesso

Abra no navegador (exemplo: https://mcpi.seudominio.com.br ou http://ip-do-servidor:6274) no navegador.

3 – Outras Ferramentas

Existem várias ferramentas que você pode instalar no PC/Notebook ou em servidor para inspecionar, testar, estressar e depurar seu servidor MCP.

3.1 – Ferramentas online

CUIDADO: Ferramentas online podem expor seu MCP a vazamento de credenciais e dados, use com atenção e não forneça chaves ou acessos de produção.

Caso queira testar um servidor MCP usando ferramentas online, eis algumas opções:

.

Nunca teste a profundidade
do rio com os dois pés
Provérbio Africano

Terminamos por hoje!

Patrick Brandão, patrickbrandao@gmail.com