loading…
Search for a command to run...
loading…
A Laravel-based MCP server that enables users to browse, search, and import Star Wars character data from the SWAPI external API into a local database. It facil
A Laravel-based MCP server that enables users to browse, search, and import Star Wars character data from the SWAPI external API into a local database. It facilitates seamless AI interaction with Star Wars lore through structured tools and the Model Context Protocol.
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.
Este projeto implementa um servidor MCP usando Laravel que permite:
Antes de começar, certifique-se de ter instalado:
Nota: Como utilizamos Laravel Sail, não é necessário ter PHP instalado localmente. Tudo roda dentro do Docker.
git clone <url-do-repositorio>
cd mcp-app
# Copiar o arquivo de configuração de ambiente
cp .env.example .env
# Instalar dependências do Composer via Sail
./vendor/bin/sail composer install
Dica: Se você não tiver o
vendor/bin/sail, execute primeiro:composer install
# Gerar a chave da aplicação
./vendor/bin/sail artisan key:generate
# Executar as migrations do banco de dados
./vendor/bin/sail artisan migrate
# Iniciar os containers em background
./vendor/bin/sail up -d
# Ou iniciar e ver os logs em tempo real
./vendor/bin/sail up
Após a instalação, você tem duas formas de executar o servidor:
Execute o servidor MCP diretamente:
./vendor/bin/sail artisan mcp:start star-wars-explorer
Este comando inicia o servidor no modo STDIO, pronto para comunicação via protocolo MCP.
Use o Inspector para testar o servidor com uma interface visual:
./vendor/bin/sail artisan mcp:inspector star-wars-explorer
O Inspector:
O servidor MCP expõe uma tool chamada star-wars-tool com as seguintes funcionalidades:
Chame a tool sem parâmetros para listar todos os personagens salvos localmente:
{}
Busque personagens pelo nome no banco de dados local:
{
"search": "Luke"
}
Importe um personagem da API SWAPI usando o ID:
{
"id": 1
}
IDs disponíveis na API: 1, 2, 3, 4, 5... (consulte a documentação da SWAPI)
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
# 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
# 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
# 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
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:
id for fornecido: importa da API e salva no banco localsearch for fornecido: busca no banco local por nomePara integrar este servidor MCP com um cliente (como Claude Desktop, Cursor, etc.), configure:
Handle: star-wars-explorer
Comando:
php artisan mcp:start star-wars-explorer
Transport: STDIO
Este projeto segue as melhores práticas do Laravel:
declare(strict_types=1); em todos os arquivos PHPfinal readonly classVerifique se o servidor está registrado em routes/ai.php:
Mcp::local('star-wars-explorer', StarWarsServer::class);
Certifique-se de que o Docker está rodando:
docker ps
Verifique se o banco de dados está configurado corretamente no .env:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
Este projeto está sob a licença MIT.
Desenvolvido com ❤️ usando Laravel e MCP
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"star-wars-explorer": {
"command": "npx",
"args": []
}
}
}