Skip to main content
Glama

NutriAI MCP Server

by frotaadriano

🥗 NutriAI

App experimental de análise nutricional com OpenAI Apps SDK---

🤖 Integração com ChatGPT Apps SDK

O NutriAI implementa o protocolo MCP (Model Context Protocol) e está pronto para ser usado como um conector personalizado no ChatGPT!

Como conectar ao ChatGPT:

  1. Acesse: ChatGPT Settings → Connectors

  2. Clique em: "New Connector"

  3. Configure:

    • Name: NutriAI

    • Description: Analisa alimentos descritos em texto e retorna tabela nutricional completa

    • MCP Server URL: https://nutriai-mcp-server.onrender.com

    • Authentication: No authentication

  4. Marque: "I trust this application" ✓

  5. Clique: "Create"

Como usar no ChatGPT:

Após conectar, você pode usar comandos como:

  • "Analise uma banana prata de 86g"

  • "Quantas calorias tem uma tapioca com queijo?"

  • "Me dê informações nutricionais de um pão francês com manteiga"

O ChatGPT automaticamente descobrirá e usará sua ferramenta NutriAI! 🎉


🧠 Como funciona

Fluxo de funcionamento:

  1. ChatGPT Apps SDK → Detecta intenção nutricional do usuário

  2. Protocolo MCP → Chama a tool analyze_food via JSON-RPC 2.0

  3. NutriAI Server → Processa descrição do alimento

  4. OpenAI API → Gera estimativa nutricional usando GPT-4o-mini

  5. ChatGPT → Exibe resultado formatado com insights personalizados

Arquitetura técnica:


🌱 Visão geral

O NutriAI é um aplicativo educacional que analisa descrições de alimentos e retorna estimativas nutricionais (calorias, macronutrientes e insights simples).
Ele segue as Design Guidelines do OpenAI Apps SDK e usa um MCP Server em Python para orquestrar chamadas à API da OpenAI.

⚠️ Este projeto é experimental e não substitui orientação médica ou nutricional.


🧩 Arquitetura

NutriAI/ ├── app-ui/ # Front-end React (Apps SDK) │ └── layout/ │ └── NutritionTable.tsx ├── mcp-server/ # Servidor MCP em Python/FastAPI │ └── analyze_food/ │ └── schema.json └── docs/ ├── Design-Guidelines.md └── privacy.md


⚙️ Instalação e execução local

1️⃣ Clonar o repositório

git clone https://github.com/frotoadriano/NutriAI.git cd NutriAI 2️⃣ Backend (MCP Server em Python) cd mcp-server python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt # Crie um arquivo .env com: # OPENAI_API_KEY=seu_token_aqui uvicorn main:app --reload 3️⃣ Frontend (React App) cd app-ui npm install npm run dev ## 🛠️ Problema de compatibilidade: OpenAI SDK & httpx Se você encontrar o erro:

TypeError: Client.init() got an unexpected keyword argument 'proxies'

ao rodar o backend, isso ocorre por incompatibilidade entre versões do pacote `httpx` e o SDK oficial da OpenAI (`openai`). **Solução:** Certifique-se de usar a versão exata `httpx==0.27.2` no arquivo `requirements.txt`. Essa versão garante compatibilidade total com o SDK OpenAI (testado com `openai>=1.50.0`). **Referência:** O NutriAI utiliza o [OpenAI Python SDK](https://github.com/openai/openai-python) para integração com a API OpenAI. Sempre confira as versões recomendadas na documentação oficial. ```txt # Exemplo de trecho do requirements.txt openai==1.51.2 httpx==0.27.2

Se precisar atualizar dependências, sempre rode:

pip install --upgrade pip pip install -r requirements.txt

🧠 Como funciona

O usuário descreve um alimento (ex.: “tapioca com queijo”).

O MCP Server envia a descrição para a API da OpenAI.

O modelo gera uma tabela nutricional e insights.

O front-end exibe os dados no formato nativo do ChatGPT Apps SDK.

🎨 Design e UX

Interface leve e responsiva.

Tons neutros e leitura fácil.

Frases curtas e empáticas (“Aqui está a estimativa para sua tapioca.”).

Mensagens de erro claras e educativas.

Mais detalhes em docs/Design-Guidelines.md .

🔒 Privacidade

O NutriAI não coleta informações pessoais. Veja a política de privacidade completa .


�️ Proteções e Monitoramento

Segurança implementada:

  • Rate Limiting: 5 req/min para MCP tools, 10 req/min para API REST

  • CORS restrito: Apenas ChatGPT e origens autorizadas

  • API Keys opcionais: Configure via variáveis de ambiente no Render

  • Monitoramento de custos: Logs mostram gasto por requisição (~$0.0003 por análise)

  • Health checks: Endpoint /health para monitoramento

Configuração no Render.com:

# Variáveis de ambiente recomendadas OPENAI_API_KEY=sua_chave_openai API_KEYS=chave_secreta_1,chave_secreta_2 # Opcional mas recomendado ALLOWED_ORIGINS=https://chat.openai.com,https://chatgpt.com

�📚 Roadmap

  • Design Guidelines

  • Schema JSON (MCP Server)

  • Protocolo MCP compatível com ChatGPT Apps SDK

  • Integração OpenAI API

  • Deploy em produção (Render.com)

  • Rate limiting e proteções de segurança

  • 🔄 Validação por imagem (versão futura)

  • 🔄 Comparação entre alimentos

  • 🔄 Histórico pessoal de análises

  • 🔄 Integração com bases de dados nutricionais (USDA)

🤝 Contribuição

Contribuições são bem-vindas!

Faça um fork.

Crie um branch: git checkout -b feature/nova-funcionalidade.

Commit → Push → Pull Request.

🪪 Licença

Distribuído sob licença MIT. Veja o arquivo LICENSE para mais informações.

🧑‍💻 Autor

Adriano Frota – LinkedIn | GitHub


Como testar end-to-end

Backend cd mcp-server python -m venv venv venv\Scripts\activate.bat python.exe -m pip install --upgrade pip

pip install -r requirements.txt cp .env.example .env # coloque sua OPENAI_API_KEY uvicorn main:app --reload

Frontend cd app-ui cp .env.example .env # VITE_API_BASE=http://localhost:8000 npm i npm run dev

abra http://localhost:5173

-
security - not tested
A
license - permissive license
-
quality - not tested

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/frotaadriano/NutriAI'

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