Skip to main content
Glama
mateus-gondev

MCP Serve

README.md
# MCP Serve

Um assistente de chat que entende linguagem natural e gerencia o cadastro de
**Clientes** e **Produtos** de um pequeno sistema, usando **Gemini** (LLM) +
**MCP (Model Context Protocol)** + **SQLite**.

Em vez de preencher formulários, você conversa:

> "Cria um cliente Maria Silva, CPF 123.456.789-00, email maria@email.com"
> "Quais produtos eu tenho com menos de 10 unidades em estoque?"
> "Atualiza o preço do Notebook pra 3200"

...e o sistema entende o pedido, executa a ação no banco de dados e confirma
o que foi feito.

## Como funciona

```
Vue.js (chat)  →  Backend Bridge (FastAPI)  →  Gemini (decide o que fazer)
                          ↓                              ↓
                   MCP Client  ←──────────────  "chame a tool X"
                          ↓
                   MCP Server (server.py)
                          ↓
                        SQLite
```

1. Você escreve um pedido no chat (frontend em **Vue.js**).
2. O **Backend Bridge** (FastAPI) manda essa mensagem pro **Gemini**, junto
   com a lista de ações disponíveis (as *tools* do MCP Server).
3. O Gemini interpreta o pedido e decide quais ações executar — por exemplo,
   "chamar a tool `criar_cliente` com esses dados".
4. O Bridge executa essa ação no **MCP Server**, que é quem efetivamente lê e
   escreve no banco **SQLite**.
5. O resultado volta pro Gemini, que formula uma resposta em português, e
   essa resposta aparece no chat.

## Funcionalidades

O MCP Server expõe 10 ações (tools) que o Gemini pode usar:

**Clientes** (identificados pelo CPF)
- Criar cliente
- Listar todos os clientes
- Buscar cliente por CPF
- Atualizar dados de um cliente
- Remover um cliente

**Produtos** (identificados pelo nome)
- Criar produto
- Listar todos os produtos
- Buscar produto por nome
- Atualizar preço/estoque de um produto
- Remover um produto

## Estrutura do projeto

```
mcp-serve/
├── server.py           # MCP Server: define as tools de CRUD
├── database.py          # Schema e conexão com o SQLite
├── requirements.txt      # Dependências do MCP Server
├── bridge/               # Backend que conecta Vue <-> Gemini <-> MCP Server
│   ├── main.py
│   ├── requirements.txt
│   └── .env.example
├── frontend/              # Interface de chat em Vue.js
│   └── src/
├── docs/
│   └── documentacao.md   # Guia técnico: como rodar e testar
└── README.md              # Este arquivo
```

## Stack

- **MCP Server**: Python + [SDK oficial `mcp`](https://github.com/modelcontextprotocol/python-sdk) (FastMCP)
- **Banco de dados**: SQLite
- **LLM**: Google Gemini (via `google-genai`), com function calling automático
- **Bridge**: FastAPI
- **Frontend**: Vue 3 + Vite

## Quer rodar na sua máquina?

Veja o passo a passo completo (instalação, configuração da API key do Gemini
e como testar) em [`docs/documentacao.md`](docs/documentacao.md).