Star Wars Explorer
by JoaoA1egre
README.md
# đ Star Wars Explorer - MCP Server
Um servidor **Model Context Protocol (MCP)** desenvolvido com Laravel que fornece acesso a dados da franquia Star Wars através de uma API externa e banco de dados local.
## đ Sobre o Projeto
Este projeto implementa um servidor MCP usando Laravel que permite:
- đ **Buscar personagens** de Star Wars no banco de dados local
- đ„ **Importar personagens** da API externa (SWAPI) para o banco local
- đŸ **Armazenar dados** localmente para consultas rĂĄpidas
- đ€ **Integração com IAs** atravĂ©s do protocolo MCP
## đ ïž Tecnologias
- **PHP 8.5+**
- **Laravel 12**
- **Laravel MCP** - Protocolo Model Context Protocol
- **Laravel Sail** - Ambiente Docker
- **MySQL 8.4** - Banco de dados
- **Redis** - Cache
## đŠ PrĂ©-requisitos
Antes de começar, certifique-se de ter instalado:
- [Docker](https://www.docker.com/get-started) e Docker Compose
- [Git](https://git-scm.com/)
> **Nota:** Como utilizamos Laravel Sail, nĂŁo Ă© necessĂĄrio ter PHP instalado localmente. Tudo roda dentro do Docker.
## đ Instalação
### Passo 1: Clonar o RepositĂłrio
```bash
git clone <url-do-repositorio>
cd mcp-app
```
### Passo 2: Configurar o Ambiente
```bash
# Copiar o arquivo de configuração de ambiente
cp .env.example .env
```
### Passo 3: Instalar DependĂȘncias
```bash
# Instalar dependĂȘncias do Composer via Sail
./vendor/bin/sail composer install
```
> **Dica:** Se vocĂȘ nĂŁo tiver o `vendor/bin/sail`, execute primeiro:
> ```bash
> composer install
> ```
### Passo 4: Configurar a Aplicação
```bash
# Gerar a chave da aplicação
./vendor/bin/sail artisan key:generate
# Executar as migrations do banco de dados
./vendor/bin/sail artisan migrate
```
### Passo 5: Iniciar os Containers
```bash
# Iniciar os containers em background
./vendor/bin/sail up -d
# Ou iniciar e ver os logs em tempo real
./vendor/bin/sail up
```
## â¶ïž Executando o Servidor MCP
ApĂłs a instalação, vocĂȘ tem duas formas de executar o servidor:
### Opção 1: Modo STDIO (Produção)
Execute o servidor MCP diretamente:
```bash
./vendor/bin/sail artisan mcp:start star-wars-explorer
```
Este comando inicia o servidor no modo STDIO, pronto para comunicação via protocolo MCP.
### Opção 2: Inspector (Desenvolvimento/Testes) â Recomendado
Use o Inspector para testar o servidor com uma interface visual:
```bash
./vendor/bin/sail artisan mcp:inspector star-wars-explorer
```
O Inspector:
- đ Abre uma interface web interativa
- đ§Ș Permite testar todas as tools disponĂveis
- đ Mostra as respostas do servidor em tempo real
- đ Facilita o debug e desenvolvimento
## đ§Ș Testando as Funcionalidades
O servidor MCP expÔe uma tool chamada `star-wars-tool` com as seguintes funcionalidades:
### 1. Buscar Todos os Personagens
Chame a tool sem parĂąmetros para listar todos os personagens salvos localmente:
```json
{}
```
### 2. Buscar por Nome
Busque personagens pelo nome no banco de dados local:
```json
{
"search": "Luke"
}
```
### 3. Importar da API Externa
Importe um personagem da API SWAPI usando o ID:
```json
{
"id": 1
}
```
> **IDs disponĂveis na API:** 1, 2, 3, 4, 5... (consulte a documentação da SWAPI)
## đ Estrutura do Projeto
```
mcp-app/
âââ app/
â âââ Mcp/
â â âââ Servers/
â â â âââ StarWarsServer.php # Servidor MCP principal
â â â âââ MyAssistantServer.php # Servidor exemplo
â â âââ Tools/
â â âââ StarWarsTool.php # Tool principal
â â âââ GetProjectStats.php # Tool exemplo
â âââ Models/
â â âââ Character.php # Model do personagem
â âââ Services/
â âââ External/
â â âââ SwapiService.php # Serviço de integração com API
â âââ Models/
â âââ CharacterService.php # LĂłgica de negĂłcio
âââ routes/
â âââ ai.php # Registro dos servidores MCP
âââ database/
â âââ migrations/ # Migrations do banco
âââ compose.yaml # Configuração Docker
```
## đ§ Comandos Ăteis
### Gerenciamento do Docker
```bash
# Iniciar containers
./vendor/bin/sail up -d
# Parar containers
./vendor/bin/sail down
# Ver logs
./vendor/bin/sail logs
# Acessar shell do container
./vendor/bin/sail shell
```
### Comandos Artisan
```bash
# Ver logs do Laravel
./vendor/bin/sail artisan pail
# Limpar cache
./vendor/bin/sail artisan config:clear
./vendor/bin/sail artisan cache:clear
# Executar migrations
./vendor/bin/sail artisan migrate
# Rollback migrations
./vendor/bin/sail artisan migrate:rollback
```
### Comandos MCP
```bash
# Listar servidores MCP disponĂveis
./vendor/bin/sail artisan mcp:inspector
# Iniciar servidor especĂfico
./vendor/bin/sail artisan mcp:start star-wars-explorer
# Abrir inspector para testes
./vendor/bin/sail artisan mcp:inspector star-wars-explorer
```
## đŻ Funcionalidades da Tool
A `StarWarsTool` oferece trĂȘs modos de operação:
| Parùmetro | Tipo | Descrição |
|-----------|------|-----------|
| `id` | `integer` (opcional) | ID do personagem na API SWAPI para importar |
| `search` | `string` (opcional) | Nome do personagem para buscar localmente |
**Comportamento:**
- Se `id` for fornecido: importa da API e salva no banco local
- Se `search` for fornecido: busca no banco local por nome
- Se nenhum parĂąmetro: retorna todos os personagens do banco local
## đ Integração com Clientes MCP
Para integrar este servidor MCP com um cliente (como Claude Desktop, Cursor, etc.), configure:
**Handle:** `star-wars-explorer`
**Comando:**
```bash
php artisan mcp:start star-wars-explorer
```
**Transport:** STDIO
## đ PadrĂ”es de CĂłdigo
Este projeto segue as melhores prĂĄticas do Laravel:
- â
`declare(strict_types=1);` em todos os arquivos PHP
- â
Tipagem estrita em propriedades, parĂąmetros e retornos
- â
Services como `final readonly class`
- â
Controllers magros (Thin Controllers)
- â
LĂłgica de negĂłcio em Services
- â
Dependency Injection via construtor
## đ Troubleshooting
### Erro: "MCP Server with name [star-wars-explorer] not found"
Verifique se o servidor estĂĄ registrado em `routes/ai.php`:
```php
Mcp::local('star-wars-explorer', StarWarsServer::class);
```
### Erro: "Connection refused" ao iniciar Sail
Certifique-se de que o Docker estĂĄ rodando:
```bash
docker ps
```
### Erro ao executar migrations
Verifique se o banco de dados estĂĄ configurado corretamente no `.env`:
```env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
```
## đ Recursos Adicionais
- [Documentação Laravel MCP](https://laravel.com/docs/mcp)
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [Laravel Sail](https://laravel.com/docs/sail)
- [SWAPI - Star Wars API](https://swapi.bry.com.br/)
## đ Licença
Este projeto estå sob a licença MIT.
---
**Desenvolvido com â€ïž usando Laravel e MCP**
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues