Vestuário MCP
Click on "Deploy 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., "@Vestuário MCP adicione uma camiseta preta tamanho M ao carrinho e mostre o total"
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.
Vestuário MCP
Servidor MCP em memória que simula o backend de um e-commerce de roupas: catálogo, carrinho com reserva de estoque e pedidos. Feito com o MCP Python SDK v2 (
mcp==2.3.0), em que o antigoFastMCPagora se chamaMCPServer.
⚠️ Segurança: o modo HTTP não tem autenticação. Qualquer pessoa com a URL do ngrok pode chamar as tools. Encerre o túnel ao terminar.
💻 Pré-requisitos
Antes de começar, verifique se você tem:
Python
>= 3.11.pip
>= 25.1(necessário para a opção--group).
Related MCP server: Commerce MCP Server
🚀 Instalando
Clone o repositório e entre na pasta:
git clone https://github.com/nilsond/guilda-inovacao-criando-mcp.git
cd guilda-inovacao-criando-mcpCom venv + pip (é o que a configuração do Kiro abaixo usa):
python3 -m venv .venv && .venv/bin/pip install -e . --group devOu, como alternativa, com uv:
uv syncCom uv, troque .venv/bin/python por uv run nos comandos abaixo.
☕ Usando
O servidor expõe:
Tipo | Nome | O que faz |
Tool |
| Lista o catálogo, com filtro opcional (Camisetas, Calças, Casacos, Acessórios, Calçados) |
Tool |
| Todos os detalhes de um produto |
Tool |
| Estoque físico, reservado e disponível |
Tool |
| Adiciona ao carrinho e reserva o estoque |
Tool |
| Remove o item e devolve a reserva |
Tool |
| Itens, subtotais e total em BRL |
Tool |
| Cria o pedido, baixa o estoque e limpa o carrinho |
Resource |
| Política de trocas e devoluções (Markdown) |
Prompt |
| Consultor de estilo que monta looks com peças do catálogo |
Estoque por tamanho: disponível = estoque físico − reservado.
Erros de negócio (produto inexistente, tamanho inválido, estoque insuficiente etc.) voltam como resultado com is_error=true e uma mensagem em PT-BR, para o LLM conseguir se corrigir.
MCP Inspector via STDIO
npx @modelcontextprotocol/inspector .venv/bin/python server_mcp.py # com uv: uv run mcp dev server_mcp.pyO Inspector abre no navegador. Explore as abas Tools, Resources e Prompts. O mcp dev do SDK chama o uv por baixo, então sem uv use o npx direto.
HTTP local
.venv/bin/python server_mcp.py --transport http # http://127.0.0.1:8000/mcp
npx @modelcontextprotocol/inspector # em outro terminalNo Inspector, escolha Streamable HTTP e use a URL http://127.0.0.1:8000/mcp.
Remoto via ngrok
ngrok http 8000 # anote o host, ex.: abc123.ngrok-free.app
.venv/bin/python server_mcp.py --transport http --public-host abc123.ngrok-free.appNo Inspector, conecte em https://abc123.ngrok-free.app/mcp.
O --public-host (ou a variável PUBLIC_HOST) é obrigatório nesse cenário. O SDK ativa uma proteção contra DNS rebinding que responde 421 Invalid Host header para qualquer host fora da allowlist, e o ngrok repassa o host público.
Kiro
Local (STDIO): crie o arquivo .kiro/settings/mcp.json no workspace com o conteúdo abaixo, trocando /caminho/para/guilda-inovacao-criando-mcp pelo caminho onde você clonou o repositório. O servidor aparece no painel MCP do Kiro; se precisar, reconecte por esse painel. autoApprove está vazio, então cada chamada de tool pede confirmação.
{
"mcpServers": {
"vestuario-mcp": {
"command": "/caminho/para/guilda-inovacao-criando-mcp/.venv/bin/python",
"args": ["/caminho/para/guilda-inovacao-criando-mcp/server_mcp.py"],
"disabled": false,
"autoApprove": []
}
}
}Com uv, a entrada fica assim:
"vestuario-mcp": {
"command": "uv",
"args": ["--directory", "/caminho/para/guilda-inovacao-criando-mcp", "run", "server_mcp.py"]
}Remoto (ngrok): o Kiro aceita servidores remotos pelo campo url (documentação de configuração, anúncio de remote MCP). Com o túnel e o servidor HTTP no ar, adicione:
"vestuario-mcp-remoto": {
"url": "https://abc123.ngrok-free.app/mcp"
}Se o cliente não conectar, use a ponte mcp-remote:
"vestuario-mcp-remoto": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://abc123.ngrok-free.app/mcp"]
}Exemplos de uso
Com o servidor conectado ao Kiro (ou a outro cliente MCP), experimente:
"Quais casacos vocês têm e quanto custam?"
"Monte um look casual para um happy hour" (ou use o prompt
recomendar_look)"Adicione o look ao carrinho da sessão demo, tamanho M"
"Mostre o estoque da jaqueta no tamanho M" (a reserva aparece)
"Qual é a política de trocas?" (resource)
"Finalize o pedido para Av. Paulista, 1000 - Bela Vista, São Paulo/SP"
O estado vive na memória e é zerado sempre que o servidor reinicia.
Exemplo mínimo
examples/hello.py é um servidor MCP com uma única tool (somar), comentado linha a linha. Bom ponto de partida para entender o MCPServer antes de olhar o projeto completo:
npx @modelcontextprotocol/inspector .venv/bin/python examples/hello.pyGuias
docs/01-criando-o-servidor.md: criar o projeto do zero, passo a passo
docs/02-expondo-com-ngrok.md: expor o servidor com ngrok
docs/03-conectando-clientes.md: usar o servidor no Kiro e no MCP Inspector
🧪 Testes
.venv/bin/python -m pytest # ou: uv run pytest
.venv/bin/python -m pytest -q # saída resumidaOs testes cobrem as regras de negócio (inclusive concorrência pela última unidade), as tools, o resource e o prompt via cliente MCP em memória, o servidor HTTP real com o bloqueio/liberação do host do ngrok, a CLI e o exemplo examples/hello.py.
📁 Estrutura do projeto
.
├── server_mcp.py # CLI: --transport stdio|http, --host, --port, --public-host
├── src/vestuario_mcp/
│ ├── __init__.py # exporta build_server e Loja
│ ├── models.py # tipos e modelos Pydantic (viram structured output)
│ ├── data.py # catálogo mock (11 produtos) e política de trocas
│ ├── services.py # regras de negócio (classe Loja, com lock)
│ └── server.py # build_server(): tools, resource e prompt
├── tests/ # pytest: serviços, MCP em memória, CLI/HTTP e exemplos
├── examples/
│ └── hello.py # servidor MCP mínimo
├── docs/
│ ├── 01-criando-o-servidor.md
│ ├── 02-expondo-com-ngrok.md
│ └── 03-conectando-clientes.md
├── pyproject.toml
├── LICENSE
└── README.md📫 Contribuindo
Para contribuir com o projeto, siga estas etapas:
Bifurque este repositório.
Crie um branch:
git checkout -b <nome_branch>.Faça suas alterações e confirme-as:
git commit -m '<mensagem_commit>'Envie para o branch original:
git push origin <nome_branch>Crie a solicitação de pull.
Como alternativa, consulte a documentação do GitHub em como criar uma solicitação pull.
🤝 Colaboradores
📝 Licença
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Available Tools
7 toolsadicionar_ao_carrinhoA
Adiciona um item ao carrinho do cliente e RESERVA as unidades no estoque.
A reserva diminui a disponibilidade para outros clientes até o pedido ser finalizado ou o item ser removido. Adicionar de novo o mesmo produto e tamanho soma as quantidades.
Args: session_id: identificador do carrinho do cliente. produto_id: ID do produto. quantidade: unidades a adicionar (> 0). tamanho: P, M, G ou GG.
Returns: Mensagem de confirmação e o carrinho atualizado com o total.
Erros: Produto não encontrado; tamanho inválido ou indisponível para o produto; quantidade <= 0; estoque insuficiente (a mensagem informa quantas unidades estão disponíveis).
Inputs: tamanho (required), produto_id (required), quantidade (required), session_id (required). Returns: Resultado de uma alteração no carrinho.
buscar_produto_por_idARead-onlyIdempotent
Retorna todos os detalhes de um produto: descrição, cores, tamanhos, preço e disponibilidade por tamanho.
Args: produto_id: ID do produto, obtido em listar_produtos.
Returns:
Detalhes do produto, incluindo disponivel_por_tamanho (estoque físico menos reservas).
Erros: Produto não encontrado. A mensagem lista os IDs existentes.
Inputs: produto_id (required). Returns: Todos os detalhes de um produto.
finalizar_pedidoA
Finaliza a compra: converte o carrinho em pedido, baixa o estoque e limpa o carrinho.
Confirme o carrinho com o cliente (ver_carrinho) antes de chamar esta tool.
Args: session_id: identificador do carrinho do cliente. endereco_entrega: endereço completo de entrega.
Returns: Pedido confirmado com número, itens, total, endereço e data/hora.
Erros: Carrinho vazio; endereço vazio ou incompleto.
Inputs: session_id (required), endereco_entrega (required). Returns: Pedido finalizado.
listar_produtosARead-onlyIdempotent
Lista os produtos do catálogo da loja Vestuário MCP.
Use esta tool para descobrir o que existe à venda antes de recomendar ou adicionar itens. Para cada produto vêm: id, nome, categoria, preço em BRL, tamanhos vendidos, cores e unidades disponíveis somando todos os tamanhos.
Args: categoria: filtro opcional por categoria. Não diferencia maiúsculas nem acentos ("calcas" também funciona).
Returns: Objeto com o filtro aplicado, o total de produtos e a lista de produtos.
Erros: Categoria inexistente. A mensagem lista as categorias válidas.
Inputs: categoria. Returns: Resultado de uma listagem do catálogo.
remover_do_carrinhoA
Remove um item do carrinho, inteiro ou em parte, e devolve a reserva ao estoque.
Args: session_id: identificador do carrinho do cliente. produto_id: ID do produto que está no carrinho. tamanho: tamanho do item no carrinho. quantidade: unidades a remover; se omitido, remove a linha inteira.
Returns: Mensagem de confirmação e o carrinho atualizado.
Erros: Item não está no carrinho; quantidade <= 0 ou maior que a quantidade no carrinho.
Inputs: tamanho (required), produto_id (required), session_id (required), quantidade. Returns: Resultado de uma alteração no carrinho.
ver_carrinhoARead-onlyIdempotent
Exibe o conteúdo atual do carrinho de um cliente e calcula o valor total.
Args: session_id: identificador do carrinho do cliente.
Returns: Itens com preço unitário e subtotal, quantidade total de unidades e total em BRL. Uma sessão sem itens devolve carrinho vazio (total R$ 0,00).
Inputs: session_id (required). Returns: Conteúdo do carrinho de uma sessão.
verificar_estoqueARead-onlyIdempotent
Consulta se há estoque disponível de um produto em um tamanho específico.
Mostra o estoque físico, quantas unidades estão reservadas em carrinhos e quantas ainda
podem ser adicionadas (disponivel). Consulte antes de adicionar ao carrinho.
Args: produto_id: ID do produto. tamanho: P, M, G ou GG (aceita minúsculas).
Returns:
Situação do estoque com em_estoque (bool) e uma mensagem legível.
Erros: Produto não encontrado; tamanho fora da grade ou não vendido para esse produto.
Inputs: tamanho (required), produto_id (required). Returns: Situação do estoque de um produto em um tamanho.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
The tools cover distinct stages of a shopping flow, with clear boundaries between browsing, stock checking, cart operations, and checkout. The only mild overlap is between buscar_produto_por_id and verificar_estoque, since the former also returns availability per size, but the specific-size stock check remains clearly differentiated.
All tool names follow a consistent snake_case verb_noun pattern in Portuguese: listar_produtos, buscar_produto_por_id, verificar_estoque, adicionar_ao_carrinho, remover_do_carrinho, ver_carrinho, and finalizar_pedido. There are no mixed conventions or ambiguous standalone verbs.
Seven tools is well scoped for a clothing-store MCP server. Each tool maps to a necessary step in the browse-to-checkout workflow, and none appear redundant or extraneous.
The core customer workflow is fully covered: product listing, product detail, stock checking, cart add/remove/view, and order finalization. Minor gaps remain around post-purchase operations such as order history, order status lookup, or cancellation, which could be useful but do not block the primary flow.
Maintenance
Related MCP Connectors
Fashion & apparel MCP: visual outfit search, stock verification, and 1-click checkout.
Fashion & apparel MCP: visual outfit search, stock verification, and 1-click checkout.
Virtual try-on and on-model AI fashion photography: catalog search, try-on grids, HD delivery.
Search and get fashion products recommendations across multiple e-ecom stores
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables natural-language shopping queries on a fashion inventory flat file, with tools for searching products and recommending matching items via OpenAI.-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to browse product catalogs, search products with filters, and initiate checkouts, generating order summaries and checkout URLs.-
- AlicenseNot gradedqualityCmaintenanceEnables product discovery, session-scoped carts, and confirmation-gated checkout through natural language, with deterministic routing and safety features.5 npmISC
- FlicenseNot gradedqualityCmaintenanceEnables users to interact with an e-commerce shopping assistant using natural language to search products, check prices and ratings, compare items, and get personalized recommendations.-