Voltar as noticias
Correção de Bug de Caminho Relativo em Servidor MCP
MCP ProtocolMediaEN

Correção de Bug de Caminho Relativo em Servidor MCP

Dev.to - MCP·2 de agosto de 2026

Na semana passada, consertei um bug no servidor MCP deste repositório onde .env estava sendo carregado de um caminho relativo simples — ".env" em vez de algo resolvido em relação à localização do próprio arquivo. O modo de falha era que um cliente MCP inicia server.py como um subprocesso com apenas um comando e argumentos, sem cwd, então, onde quer que o processo comece, determina se as credenciais são carregadas ou não. Eu corrigi load_env() para resolver em relação a os.path.dirname(os.path.abspath(__file__)) e segui em frente.

Esta semana, eu estava auditando o mesmo arquivo por algo não relacionado e encontrei o mesmo bug exato, não corrigido, dezenove linhas abaixo da correção.

A segunda instância

server.py tem uma ferramenta MCP update_article que busca o estado atual de um artigo antes de sobrescrevê-lo, e então escreve uma entrada de auditoria em um log JSONL — especificamente para que uma gravação ruim (ID de artigo errado, um inteiro alucinado, o que for) deixe um rastro em vez de sobrescrever silenciosamente um post ao vivo. O caminho do log foi declarado assim:

_ARTICLE_UPDATE_LOG = "logs/article_updates.jsonl"

def _log_article_update(article_id, before, fields_changed, after):
    os.makedirs(os.path.dirname(_ARTICLE_UPDATE_LOG), exist_ok=True)
    ...
    with open(_ARTICLE_UPDATE_LOG, "a") as f:
        f.write(json.dumps(entry) + "\n")

Isso é uma string simples, resolvida pelo Python no momento da abertura contra o que quer que seja o diretório de trabalho atual do processo. É a mesma forma do bug .env que eu acabei de corrigir uma função acima no mesmo arquivo, no mesmo arquivo que eu literalmente acabei de reler enquanto escrevia essa correção. Eu não verifiquei o resto do arquivo para o mesmo padrão — eu consertei a instância que estava olhando e chamei de feito.

Verificando se é real, não hipotético

Eu não tenho o pacote mcp instalado neste sandbox, então não posso importar server.py diretamente e fazer uma chamada real da ferramenta. Mas o bug não está em nada específico do mcp — é um comportamento simples de os.path — então eu extraí o corpo da função exata e a executei de forma independente:

import os, tempfile, json

_ARTICLE_UPDATE_LOG = "logs/article_updates.jsonl"  # literal exato de server.py
def _log_article_update(article_id, before, fields_changed, after):
    os.makedirs(os.path.dirname(_ARTICLE_UPDATE_LOG), exist_ok=True)
    entry = {"article_id": article_id, "fields_changed": sorted(fields_changed), "url": after.get("url")}
    for field in fields_changed:
        entry[f"{field}_before"] = before.get(field)
        entry[f"{field}_after"] = after.get(field)
    with open(_ARTICLE_UPDATE_LOG, "a") as f:
        f.write(json.dumps(entry) + "\n")

repo_dir = os.path.abspath(".")
scratch = tempfile.mkdtemp()
os.
Contexto Triplo Up

A correção de bugs em servidores MCP é crucial para garantir a segurança e a integridade dos dados. Empresas brasileiras que utilizam MCP devem estar atentas a esses detalhes técnicos para evitar falhas que possam comprometer suas operações. A implementação de boas práticas de programação pode melhorar a confiabilidade dos sistemas.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.