Skip to main content
Glama
antonioddiniz

TODO list MCP server (Exercício 4.2)

README.md
# MCP server da TODO list — Exercício 4.2

Um **MCP server** local que expõe *tools* de uma lista de tarefas para um agente
de IA. As tools não guardam estado próprio: elas chamam a **API REST do
Exercício 4.1** (`http://localhost:8000`). O MCP é a camada de adaptação entre o
mundo do agente (MCP) e a fonte do dado (HTTP).

**Aluno:** Antonio Diniz · **Disciplina:** IDP-TD 2026

```
  Agente / LLM  ──MCP──▶  servidor_mcp.py  ──HTTP──▶  API 4.1 (localhost:8000)
```

## Tools expostas

| Tool | Chamada HTTP | Retorno |
|------|--------------|---------|
| `criar_tarefa(titulo)` | `POST /tarefas` | a tarefa criada `{id, titulo, concluida}` |
| `listar_tarefas()` | `GET /tarefas` | lista de tarefas |

A URL da API é lida da variável de ambiente `API` (default `http://localhost:8000`).

## Como rodar

1. Suba a API do 4.1 (noutro terminal, no repo do 4.1):

   ```bash
   uvicorn app.main:app --port 8000
   ```

2. No repo do 4.2:

   ```bash
   pip install -r requirements.txt
   python cliente_teste.py
   ```

   Deve imprimir o envelope JSON com `tools`, `criar_resultado` e `listar_resultado`.

> Para testar apontando para outra porta: `API=http://localhost:9010 python cliente_teste.py`.

## Reflexão (Aula 6)

No 4.1 o cliente precisava falar HTTP: montar URL, método, cabeçalhos, corpo e
tratar status. No 4.2 o agente só precisa saber que existe `criar_tarefa(titulo)`.
**O MCP escondeu o protocolo HTTP** — endpoint, verbo, formato do corpo e códigos
de status deixaram de importar para quem chama. A tool virou a interface; a API
continua sendo a fonte do dado.