FoodData Central

Acesse o banco de dados FoodData Central do USDA para obter informações abrangentes sobre alimentos e nutrientes.

Documentação

Food Data Central MCP Server

Um servidor Model Context Protocol (MCP) para acessar o banco de dados FoodData Central do USDA. Este servidor fornece aos agentes de IA a capacidade de pesquisar alimentos, obter informações nutricionais detalhadas e acessar dados alimentares abrangentes do banco de dados do USDA.

Visão Geral

Este projeto demonstra como construir um servidor MCP que permite que agentes de IA acessem a API FoodData Central do USDA. Ele permite pesquisar alimentos, recuperar informações nutricionais detalhadas e acessar dados alimentares abrangentes por meio de pesquisa por palavras-chave e consultas estruturadas.

Este projeto é baseado no excelente projeto MCP-Mem0 de Cole Medin e no Food Data Central MCP Server de jlfwong.

Recursos

O servidor fornece três ferramentas essenciais de acesso a dados alimentares:

  1. search_foods: Pesquise alimentos usando palavras-chave com filtros opcionais para tipo de dados, marca, intervalo de datas, etc.
  2. get_food_details: Obtenha informações abrangentes de nutrição e ingredientes para um item alimentar específico pelo ID FDC
  3. get_multiple_foods: Recupere informações detalhadas para vários alimentos de uma vez (até 20 itens)

Pré-requisitos

  • Python 3.12+
  • Chave de API do USDA (gratuita em FoodData Central)
  • Docker se estiver executando o servidor MCP como contêiner (recomendado)

Instalação

Usando uv

  1. Instale o uv se você não o tiver:

    pip install uv
    
  2. Clone este repositório:

    git clone https://github.com/FelipeAdachi/mcp-food-data-central.git
    cd food-data-central-mcp
    
  3. Crie um ambiente virtual:

    uv venv
    
  4. Instale as dependências:

    uv pip install -e .
    
  5. Crie um arquivo .env baseado em env.example:

    cp env.example .env
    
  6. Configure suas variáveis de ambiente no arquivo .env (veja a seção Configuração)

Usando Docker (Recomendado)

  1. Construa a imagem Docker:

    docker build -t food-data-central-mcp --build-arg PORT=8050 .
    
  2. Crie um arquivo .env baseado em env.example e configure suas variáveis de ambiente

Configuração

As seguintes variáveis de ambiente podem ser configuradas no seu arquivo .env:

VariávelDescriçãoExemplo
USDA_API_KEYSua chave de API do USDA FoodData Centralyour_api_key_here
TRANSPORTProtocolo de transporte (sse ou stdio)sse
HOSTHost para vincular ao usar transporte SSE0.0.0.0
PORTPorta para escutar ao usar transporte SSE8050

Obtendo Sua Chave de API

  1. Visite o Guia da API USDA FoodData Central
  2. Cadastre-se para obter uma chave de API gratuita
  3. Adicione a chave ao seu arquivo .env como USDA_API_KEY

Executando o Servidor

Usando uv

Transporte SSE

# Set TRANSPORT=sse in .env then:
uv run src/main.py

O servidor MCP será essencialmente executado como um endpoint de API ao qual você pode se conectar com a configuração mostrada abaixo.

Transporte Stdio

Com stdio, o próprio cliente MCP pode iniciar o servidor MCP, então não há nada para executar neste momento.

Usando Docker

Transporte SSE

docker run --env-file .env -p 8050:8050 food-data-central-mcp

O servidor MCP será essencialmente executado como um endpoint de API dentro do contêiner ao qual você pode se conectar com a configuração mostrada abaixo.

Transporte Stdio

Com stdio, o próprio cliente MCP pode iniciar o contêiner do servidor MCP, então não há nada para executar neste momento.

Integração com Clientes MCP

Configuração SSE

Depois de ter o servidor em execução com transporte SSE, você pode se conectar a ele usando esta configuração:

{
  "mcpServers": {
    "food-data-central": {
      "transport": "sse",
      "url": "http://localhost:8050/sse"
    }
  }
}

Nota para usuários do Windsurf: Use serverUrl em vez de url na sua configuração:

{
  "mcpServers": {
    "food-data-central": {
      "transport": "sse",
      "serverUrl": "http://localhost:8050/sse"
    }
  }
}

Nota para usuários do n8n: Use host.docker.internal em vez de localhost, pois o n8n precisa alcançar fora do seu próprio contêiner até a máquina host:

Portanto, a URL completa no nó MCP seria: http://host.docker.internal:8050/sse

Certifique-se de atualizar a porta se estiver usando um valor diferente do padrão 8050.

Python com Configuração Stdio

Adicione este servidor à sua configuração MCP para Claude Desktop, Windsurf ou qualquer outro cliente MCP:

{
  "mcpServers": {
    "food-data-central": {
      "command": "your/path/to/food-data-central-mcp/.venv/Scripts/python.exe",
      "args": ["your/path/to/food-data-central-mcp/src/main.py"],
      "env": {
        "TRANSPORT": "stdio",
        "USDA_API_KEY": "YOUR-API-KEY"
      }
    }
  }
}

Docker com Configuração Stdio

{
  "mcpServers": {
    "food-data-central": {
      "command": "docker",
      "args": ["run", "--rm", "-i", 
               "-e", "TRANSPORT", 
               "-e", "USDA_API_KEY", 
               "food-data-central-mcp"],
      "env": {
        "TRANSPORT": "stdio",
        "USDA_API_KEY": "YOUR-API-KEY"
      }
    }
  }
}

Exemplos de Uso

Pesquisando Alimentos

# Search for cheese products
search_foods(query="cheddar cheese", page_size=10)

# Search for branded foods from a specific company
search_foods(query="yogurt", data_type=["Branded"], brand_owner="Dannon")

# Search with date filtering
search_foods(query="organic apple", start_date="2023-01-01", end_date="2023-12-31")

Obtendo Detalhes do Alimento

# Get full details for a specific food item
get_food_details(fdc_id=534358)

# Get abridged details with specific nutrients only
get_food_details(fdc_id=534358, format_type="abridged", nutrients=[203, 204, 205])

Obtendo Vários Alimentos

# Get details for multiple foods at once
get_multiple_foods(fdc_ids=[534358, 373052, 616350])

Referência da API

O servidor fornece acesso aos endpoints da API USDA FoodData Central:

  • Pesquisar Alimentos (/v1/foods/search)
  • Detalhes do Alimento (/v1/food/{fdcId})
  • Vários Alimentos (/v1/foods)

Todos os dados retornados seguem o esquema oficial da API USDA FoodData Central e incluem informações nutricionais abrangentes, ingredientes, tamanhos de porção e muito mais.

Licença

Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.