NutriAI MCP Server
Enables nutritional analysis of food descriptions by integrating with OpenAI's API to provide calorie estimates, macronutrient breakdowns, and dietary insights. Designed for educational purposes and follows OpenAI Apps SDK design guidelines.
README
🥗 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:
- Acesse: ChatGPT Settings → Connectors
- Clique em: "New Connector"
- 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
- Name:
- Marque: "I trust this application" ✓
- 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:
- ChatGPT Apps SDK → Detecta intenção nutricional do usuário
- Protocolo MCP → Chama a tool
analyze_foodvia JSON-RPC 2.0 - NutriAI Server → Processa descrição do alimento
- OpenAI API → Gera estimativa nutricional usando GPT-4o-mini
- ChatGPT → Exibe resultado formatado com insights personalizados
Arquitetura técnica:
- Frontend: React com Vite (para desenvolvimento local)
- Backend: FastAPI com protocolo MCP + rate limiting + monitoramento de custos
- IA: OpenAI GPT-4o-mini com JSON mode para consistência
- Deploy: Render.com com HTTPS automático
- Segurança: CORS restrito + API keys opcionais + rate limitingenAI Apps SDK](https://img.shields.io/badge/OpenAI-Apps%20SDK-412991)](https://developers.openai.com/apps-sdk)
🌱 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
/healthpara 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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.