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:
search_foods: Pesquise alimentos usando palavras-chave com filtros opcionais para tipo de dados, marca, intervalo de datas, etc.get_food_details: Obtenha informações abrangentes de nutrição e ingredientes para um item alimentar específico pelo ID FDCget_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
-
Instale o uv se você não o tiver:
pip install uv -
Clone este repositório:
git clone https://github.com/FelipeAdachi/mcp-food-data-central.git cd food-data-central-mcp -
Crie um ambiente virtual:
uv venv -
Instale as dependências:
uv pip install -e . -
Crie um arquivo
.envbaseado emenv.example:cp env.example .env -
Configure suas variáveis de ambiente no arquivo
.env(veja a seção Configuração)
Usando Docker (Recomendado)
-
Construa a imagem Docker:
docker build -t food-data-central-mcp --build-arg PORT=8050 . -
Crie um arquivo
.envbaseado emenv.examplee configure suas variáveis de ambiente
Configuração
As seguintes variáveis de ambiente podem ser configuradas no seu arquivo .env:
| Variável | Descrição | Exemplo |
|---|---|---|
USDA_API_KEY | Sua chave de API do USDA FoodData Central | your_api_key_here |
TRANSPORT | Protocolo de transporte (sse ou stdio) | sse |
HOST | Host para vincular ao usar transporte SSE | 0.0.0.0 |
PORT | Porta para escutar ao usar transporte SSE | 8050 |
Obtendo Sua Chave de API
- Visite o Guia da API USDA FoodData Central
- Cadastre-se para obter uma chave de API gratuita
- Adicione a chave ao seu arquivo
.envcomoUSDA_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
serverUrlem vez deurlna 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.