ViaCEP Brasil MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ViaCEP Brasil MCP Serverlook up address for CEP 01001000"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ViaCEP Brasil MCP Server
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 |
| string | ✅ Sim | CEP com 8 dígitos, com ou sem hífen (ex: |
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 |
| string | ✅ Sim | Sigla do estado com 2 letras (ex: |
| string | ✅ Sim | Nome da cidade — mínimo de 3 caracteres |
| 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
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 buildO 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-mcpserverConfiguraçã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.jsonWindows:
%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.jsConfigure no Inspector:
Transport:
stdioCommand:
nodeArgs:
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/readmeDocker + MCP Inspector
npx @modelcontextprotocol/inspector --cli docker run -i --rm viacep-brasil-mcpserver \
--method tools/listRecursos 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/markdownDesenvolvimento
Compilar em modo watch
npm run devBuild para produção
npm run buildBuild 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 |
| Retorna endereço completo a partir do CEP |
| Retorna lista de CEPs por endereço (até 50) |
Tratamento de erros:
CEP com formato inválido → HTTP
400 Bad RequestCEP 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 |
1.x | Framework do servidor MCP | |
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 toolsbuscar_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.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | Yes | Sigla do estado brasileiro com 2 letras maiúsculas (ex: SP, RJ, RS, MG, BA). | |
| cidade | Yes | Nome da cidade/município. Mínimo de 3 caracteres. Exemplo: 'São Paulo', 'Porto Alegre', 'Rio de Janeiro'. | |
| logradouro | Yes | Nome do logradouro (rua, avenida, praça, etc). Mínimo de 3 caracteres. Exemplo: 'Paulista', 'Domingos José'. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| cep | Yes | CEP a ser consultado. Pode ser informado com ou sem hífen (ex: 01001-000 ou 01001000). Deve conter 8 dígitos numéricos. |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v1.0.0- First observed
buscar_cep_por_endereco - First observed
buscar_endereco_por_cep
TDQS
Scored across 2 tools
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.
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.
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.
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
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
Returns the postal code (CEP) and standardized address from the Brazilian Post from a given address.
Correios: CEP, official-source lookup. Platform-hosted, pay per query with prepaid credit.
Correios: Completa CEP (CEP + Área territorial brasileira), official-source lookup. Platform-hosted,
Brazilian addresses for agents: IBGE-geocoded CEP points, radius search and companies by CEP.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables querying detailed address information from Brazilian postal codes (CEPs) via the ViaCEP API, returning data such as street names, neighborhoods, cities, states, regions, and IBGE codes.12MIT
- FlicenseNot gradedqualityDmaintenanceEnables lookup of Brazilian addresses by CEP (postal code) using the ViaCEP API, returning formatted address information including street, neighborhood, city, and state.1-
- FlicenseAqualityDmaintenanceEnables AI tools to query Brazilian addresses by CEP or search CEPs by address via the ViaCEP API.2-
- AlicenseNot gradedqualityCmaintenanceEnables querying Brazilian CEP (postal code) addresses via the public ViaCEP API, returning formatted HTML with address details.GPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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