Skip to main content
Glama
kratos4ai

fichapao-mcp-server

by kratos4ai
README.md
# FichaPao MCP Server

Servidor MCP HTTP para o agente FichaPao AI controlar fichas tecnicas de panificadora com Postgres.

O objetivo deste app e oferecer ferramentas seguras para o agente, sem expor SQL livre.

## Arquitetura

```text
OpenWebUI
  -> Agente FichaPao AI
  -> MCP HTTP /mcp
  -> fichapao-mcp-server
  -> Postgres
```

## Ferramentas MCP

- `search_recipe`: busca ficha por nome.
- `get_recipe`: consulta ficha por `recipe_id`, `version_id` ou nome.
- `create_recipe_draft`: cria ficha em rascunho `0.1`.
- `update_draft`: atualiza versao em rascunho ou revisao.
- `create_new_version`: cria nova versao em rascunho.
- `approve_version`: aprova versao se nao houver pendencias bloqueantes.
- `list_pending_items`: lista pendencias.
- `register_production_test`: registra teste de producao.
- `compare_versions`: compara duas versoes.
- `archive_recipe`: arquiva ficha.
- `get_database_stats`: resumo da base.

## Regras Implementadas

- Ficha nova sempre entra como `rascunho`.
- Versao inicial e `0.1`.
- Ficha aprovada nao pode ser editada diretamente.
- Alteracao em ficha aprovada deve virar nova versao em rascunho.
- Aprovacao bloqueia quando existem pendencias criticas.
- Primeira aprovacao de versao `0.x` vira `1.0`.
- O banco separa:
  - `current_version_id`: versao mais recente/em trabalho.
  - `active_version_id`: versao aprovada em producao.

## Rodar Local

```bash
cp .env.example .env
docker compose up --build
```

Health check:

```bash
curl http://localhost:3001/health
```

A rota raiz tambem responde com o mesmo health check:

```bash
curl http://localhost:3001/
```

Endpoint MCP:

```text
http://localhost:3001/mcp
```

No `docker-compose.yml`, a porta local esta mapeada como `3001:3000` para evitar conflito com apps comuns que ja usam `3000`.

Se `MCP_API_KEY` estiver preenchida, envie:

```text
Authorization: Bearer sua-chave
```

## Deploy No EasyPanel

Crie dois serviços:

1. Postgres
2. App Docker apontando para este repositório

Variáveis do App:

```text
NODE_ENV=production
PORT=3000
DATABASE_URL=postgresql://usuario:senha@host:5432/fichapao
AUTO_MIGRATE=true
MCP_API_KEY=troque-por-uma-chave-forte
CORS_ORIGIN=*
```

Depois de publicar, valide:

```text
https://seu-dominio/health
```

No OpenWebUI:

```text
Admin Settings -> External Tools -> Add MCP Server
URL: https://seu-dominio/mcp
Auth: Bearer token com o valor de MCP_API_KEY
```

## Banco De Dados

Migration principal:

```text
migrations/001_init.sql
```

Tabelas:

- `recipes`
- `recipe_versions`
- `pending_items`
- `production_tests`
- `change_history`

## Desenvolvimento

```bash
npm install
npm run typecheck
npm run build
npm run dev
```