Skip to main content
Glama
sucorrea

ViaCEP Brasil MCP Server

by sucorrea

ViaCEP Brasil MCP Server

Node.js TypeScript MCP SDK License

O ViaCEP Brasil MCP Server conecta ferramentas de IA à API gratuita ViaCEP, permitindo consultar CEPs e endereços de todo o Brasil via linguagem natural.

Com ele, agentes de IA, assistentes e chatbots podem:

  • Recuperar o endereço completo a partir de um CEP

  • Descobrir o CEP de um endereço a partir de estado, cidade e logradouro

  • Validar e enriquecer dados de endereço brasileiro com informações do IBGE, DDD, SIAFI e GIA


Ferramentas disponíveis (Tools)

🔍 buscar_endereco_por_cep

Consulta informações completas de um endereço brasileiro a partir do CEP.

Parâmetro

Tipo

Obrigatório

Descrição

cep

string

✅ Sim

CEP com 8 dígitos, com ou sem hífen (ex: 01001-000 ou 01001000)

Retorna: CEP formatado, logradouro, complemento, unidade, bairro, localidade, UF, estado, região, DDD, código IBGE, GIA e SIAFI.

Exemplo de resposta:

✅ Endereço encontrado para o CEP 01001000:

📮 CEP: 01001-000
📍 Logradouro: Praça da Sé, lado ímpar
🏘️  Bairro: Sé
🏙️  Cidade: São Paulo - SP
🗺️  Estado: São Paulo
🌎 Região: Sudeste
📞 DDD: 11
🏛️  Código IBGE: 3550308
💼 GIA: 1004
🔖 SIAFI: 7107

🗺️ buscar_cep_por_endereco

Pesquisa CEPs brasileiros a partir de informações de endereço. Retorna até 50 resultados, ordenados por proximidade do nome do logradouro.

Parâmetro

Tipo

Obrigatório

Descrição

uf

string

✅ Sim

Sigla do estado com 2 letras (ex: SP, RJ, RS, MG)

cidade

string

✅ Sim

Nome da cidade — mínimo de 3 caracteres

logradouro

string

✅ Sim

Nome do logradouro/rua — mínimo de 3 caracteres

Retorna: lista de CEPs com logradouro, bairro e cidade correspondentes.

Exemplo de resposta:

Busca por: Paulista, São Paulo/SP

✅ 4 endereço(s) encontrado(s):
──────────────────────────────────────────────────
[1] CEP: 01311-300
    Logradouro: Avenida Paulista (de 1 a 610 - lado par)
    Bairro: Bela Vista
    Cidade: São Paulo - SP
...

Related MCP server: Brazilian ZIP Code Lookup

Instalação

Pré-requisitos

  • Node.js 18 ou superior

  • npm 9 ou superior

  • (Opcional) Docker para execução containerizada

Opção 1: Build a partir do código-fonte

# Clone ou baixe o repositório
git clone <url-do-repositorio>
cd viacep-brasil-mcpserver

# Instale as dependências
npm install

# Compile o TypeScript
npm run build

O servidor compilado estará em build/index.js.

Opção 2: Docker

Build da imagem

docker build -t viacep-brasil-mcpserver .

Execução com Docker

O servidor usa transporte stdio, portanto a flag -i é obrigatória:

docker run -i --rm viacep-brasil-mcpserver

Configuração nos Clientes MCP

VS Code (GitHub Copilot)

Adicione ao arquivo .vscode/mcp.json no seu workspace:

{
  "servers": {
    "viacep-brasil": {
      "type": "stdio",
      "command": "node",
      "args": ["/caminho/absoluto/para/viacep-brasil-mcpserver/build/index.js"]
    }
  }
}

Ou com Docker:

{
  "servers": {
    "viacep-brasil": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "viacep-brasil-mcpserver"]
    }
  }
}

Claude Desktop

Edite o arquivo de configuração:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "viacep-brasil": {
      "command": "node",
      "args": ["/caminho/absoluto/para/viacep-brasil-mcpserver/build/index.js"]
    }
  }
}

Com Docker:

{
  "mcpServers": {
    "viacep-brasil": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "viacep-brasil-mcpserver"]
    }
  }
}

Cursor

Adicione ao arquivo de configuração MCP do Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "viacep-brasil": {
      "command": "node",
      "args": ["/caminho/absoluto/para/viacep-brasil-mcpserver/build/index.js"]
    }
  }
}

Outros clientes MCP (genérico)

Qualquer cliente MCP com suporte a transporte stdio pode usar este servidor:

{
  "mcpServers": {
    "viacep-brasil": {
      "command": "node",
      "args": ["/caminho/para/build/index.js"]
    }
  }
}

Exemplos de Uso

Via MCP Inspector (UI)

# Inicia o Inspector com interface web em http://localhost:6274
npx @modelcontextprotocol/inspector node build/index.js

Configure no Inspector:

  • Transport: stdio

  • Command: node

  • Args: build/index.js

Via MCP Inspector (CLI)

# Listar todas as ferramentas disponíveis
mcp-inspector --cli node build/index.js --method tools/list

# Buscar endereço pelo CEP da Praça da Sé (SP)
mcp-inspector --cli node build/index.js \
  --method tools/call \
  --tool-name buscar_endereco_por_cep \
  --tool-arg 'cep="01001000"'

# Buscar endereço com hífen
mcp-inspector --cli node build/index.js \
  --method tools/call \
  --tool-name buscar_endereco_por_cep \
  --tool-arg 'cep="01001-000"'

# Buscar CEP por endereço — Avenida Paulista em São Paulo/SP
mcp-inspector --cli node build/index.js \
  --method tools/call \
  --tool-name buscar_cep_por_endereco \
  --tool-arg uf=SP \
  --tool-arg cidade="São Paulo" \
  --tool-arg logradouro=Paulista

# Buscar CEP por endereço — Porto Alegre/RS
mcp-inspector --cli node build/index.js \
  --method tools/call \
  --tool-name buscar_cep_por_endereco \
  --tool-arg uf=RS \
  --tool-arg cidade="Porto Alegre" \
  --tool-arg logradouro=Domingos

# Listar recursos disponíveis (resources)
mcp-inspector --cli node build/index.js --method resources/list

# Ler a documentação do servidor como recurso MCP
mcp-inspector --cli node build/index.js \
  --method resources/read \
  --uri viacep://docs/readme

Docker + MCP Inspector

npx @modelcontextprotocol/inspector --cli docker run -i --rm viacep-brasil-mcpserver \
  --method tools/list

Recursos disponíveis (Resources)

📄 viacep://docs/readme

Documentação completa do servidor em formato Markdown. Disponível a qualquer cliente MCP para consulta.

URI:       viacep://docs/readme
MIME type: text/markdown

Desenvolvimento

Compilar em modo watch

npm run dev

Build para produção

npm run build

Build da imagem Docker

# Build padrão
docker build -t viacep-brasil-mcpserver .

# Build com tag de versão
docker build -t viacep-brasil-mcpserver:1.0.0 .

API ViaCEP

Este servidor consome a API pública e gratuita ViaCEP.

Endpoint

Descrição

GET https://viacep.com.br/ws/{cep}/json/

Retorna endereço completo a partir do CEP

GET https://viacep.com.br/ws/{UF}/{cidade}/{logradouro}/json/

Retorna lista de CEPs por endereço (até 50)

Tratamento de erros:

  • CEP com formato inválido → HTTP 400 Bad Request

  • CEP válido mas inexistente → { "erro": "true" }

  • Cidade ou logradouro com menos de 3 caracteres → HTTP 400 Bad Request

⚠️ Atenção: O uso massivo da API para validação de bases de dados pode resultar no bloqueio automático do acesso por tempo indeterminado, conforme informado pelo ViaCEP.


Tecnologias

Tecnologia

Versão

Uso

MCP TypeScript SDK

1.x

Framework do servidor MCP

Zod

3.x

Validação de esquemas dos parâmetros

TypeScript

5.7+

Linguagem de desenvolvimento

Node.js

22+

Runtime (recomendado) / 18+ (mínimo)

Docker

Containerização (opcional)


Licença

Este projeto está licenciado sob a MIT License.

Available Tools

2 tools
buscar_cep_por_enderecoA

Pesquisa CEPs brasileiros a partir de informações de endereço: UF (sigla do estado), cidade e logradouro (nome da rua/avenida/etc). Retorna até 50 CEPs correspondentes, ordenados pela proximidade do nome do logradouro. Útil quando o CEP não é conhecido mas o endereço sim.

ParametersJSON Schema
NameRequiredDescriptionDefault
ufYesSigla do estado brasileiro com 2 letras maiúsculas (ex: SP, RJ, RS, MG, BA).
cidadeYesNome da cidade/município. Mínimo de 3 caracteres. Exemplo: 'São Paulo', 'Porto Alegre', 'Rio de Janeiro'.
logradouroYesNome do logradouro (rua, avenida, praça, etc). Mínimo de 3 caracteres. Exemplo: 'Paulista', 'Domingos José'.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses two key behaviors: the result cap ('Retorna até 50 CEPs') and the ordering ('ordenados pela proximidade do nome do logradouro'). It does not mention error behavior, edge cases, or any authentication needs, but for a simple search tool, this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exactly two sentences, front-loaded with the core purpose, and every sentence adds value. There is no redundant wording or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter search tool with no annotations and no output schema, the description covers the essential aspects: what it does, the inputs, the output cap, ordering, and when to use it. It does not detail the exact output structure, but that is not necessary given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description paraphrases each parameter (UF, cidade, logradouro) but does not add meaningful new information beyond what the schema already provides. It reinforces the Brazilian context but nothing more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Pesquisa CEPs brasileiros a partir de informações de endereço'. It explicitly lists the three required inputs (UF, cidade, logradouro) and the output (até 50 CEPs). Since the sibling tool does the reverse (CEP -> endereço), this description clearly distinguishes itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence provides explicit guidance: 'Útil quando o CEP não é conhecido mas o endereço sim.' This tells the agent when to use this tool. However, it does not explicitly name the alternative tool (buscar_endereco_por_cep), relying on the sibling name for inference, which is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buscar_endereco_por_cepA

Consulta informações completas de um endereço brasileiro a partir do CEP (Código de Endereçamento Postal). Retorna logradouro, bairro, cidade, estado, região, DDD, IBGE, GIA e SIAFI. O CEP pode ser informado com ou sem hífen (ex: 01001-000 ou 01001000).

ParametersJSON Schema
NameRequiredDescriptionDefault
cepYesCEP a ser consultado. Pode ser informado com ou sem hífen (ex: 01001-000 ou 01001000). Deve conter 8 dígitos numéricos.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the return fields and the flexible CEP format, which is helpful. However, it does not mention potential errors (e.g., invalid CEP), dependencies (e.g., external service), or explicitly confirm that this is a read-only operation. For such a simple query tool, some of this is implied, but the description could be more transparent about failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, with the first sentence stating the purpose and return fields, and the second specifying the input format. There is no redundant or extraneous information. It is appropriately front-loaded and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single parameter, no output schema, no annotations), the description is largely complete. It covers the purpose, input format, and the fields returned, partially compensating for the lack of an output schema. It does not address error cases, but this is a minor gap for such a straightforward lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the 'cep' parameter, including format requirements and examples. The tool description repeats this information without adding new meaning. Therefore, the parameter semantics add no value beyond the schema, warranting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: consulting complete Brazilian address information from a CEP. The verb 'consulta' and resource 'endereço brasileiro a partir do CEP' are specific, and the listed return fields (logradouro, bairro, cidade, etc.) further clarify the scope. It also distinguishes from the sibling tool (buscar_cep_por_endereco) by emphasizing the direction: from CEP to address.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool should be used when you have a CEP and need the full address. It clearly states the input format (with/without hyphen), but it does not explicitly mention alternatives or when not to use it. However, the sibling tool's name provides clear differentiation, and the context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedbuscar_cep_por_endereco
    • First observedbuscar_endereco_por_cep

TDQS

A4.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are inverse operations: one fetches an address from a CEP, the other fetches CEPs from an address. Their purposes are clearly distinct and complementary, leaving no ambiguity.

Naming Consistency5/5

Both tool names follow the same Portuguese pattern 'buscar_X_por_Y' (buscar_endereco_por_cep and buscar_cep_por_endereco), making the naming perfectly consistent and predictable.

Tool Count4/5

With only 2 tools, the count is borderline but appropriate for the narrow domain of CEP lookup. Each tool covers one direction of the search, so no tool feels superfluous.

Completeness5/5

The server covers the two core operations of the ViaCEP service: address-by-CEP and CEP-by-address. This fully addresses the domain's primary use cases, with no obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sucorrea/viacep-brasil-mcpserver'

If you have feedback or need assistance with the MCP directory API, please join our Discord server