NutriAI MCP Server

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.

Category
Visit Server

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:

  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:

  • 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)
    License: MIT
    Made with Python
    Made with React

🌱 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

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured