MCP Ollama API - Sistema Completo
Um projeto integrado que combina Model Context Protocol (MCP) com Ollama e uma API .NET 9, permitindo que um modelo de linguagem acesse ferramentas externas através de um protocolo padronizado.
🏗️ Arquitetura do Sistema
┌────────────────────────────────────────────────────────────────┐
│ chat.js (Cliente) │
│ - Interface de conversa interativa │
│ - Acessa ferramentas via MCP │
└──────────────┬─────────────────────────────────────────────────┘
│
┌────────▼──────────────┐
│ OLLAMA (LLM) │
│ llama3.1 ou llama2 │
└────────┬──────────────┘
│
┌────────▼──────────────────┐
│ index.js (MCP Server) │
│ - Tool Provider │
│ - Integração com .NET API │
└────────┬──────────────────┘
│
┌──────────▼──────────────┐
│ minha-api (.NET 9) │
│ - Weather Forecast │
│ - Endpoints customizados
└─────────────────────────┘📋 Estrutura do Projeto
mcp-ollama-api/
├── README.md # Este arquivo (visão geral)
│
├── mcp-api-gateway/ # Servidor MCP + Chat
│ ├── index.js # Servidor MCP
│ ├── chat.js # Cliente interativo
│ ├── client.js # Cliente MCP de teste
│ ├── docker-compose.yml # Orquestração Ollama
│ ├── package.json
│ └── README.md # Documentação específica do MCP
│
└── minha-api/ # API .NET 9
├── Program.cs
├── Controllers/
├── minha-api.csproj
└── ...🚀 Quick Start
Pré-requisitos
- Docker e Docker Compose - para rodar Ollama
- Node.js 20+ - para MCP gateway e chat
- .NET 9 - para rodar a API
Verifique as versões instaladas:
docker --version
docker-compose --version
node --version
dotnet --version1️⃣ Inicie o Ollama (Docker)
Na pasta mcp-api-gateway/:
cd mcp-api-gateway
docker-compose up -d --buildIsso vai subir o Ollama em http://localhost:11434 e baixar o modelo automaticamente.
Dica: Verifique o status:
docker-compose ps
docker-compose logs -f ollama2️⃣ Inicie a API .NET 9
Em um novo terminal, na pasta minha-api/:
cd minha-api
dotnet runA API vai rodar em https://localhost:7268 (ou a porta configurada em launchSettings.json).
Dica: Para verificar que está rodando:
curl https://localhost:7268/weatherforecast3️⃣ Instale dependências do MCP Gateway
Em outro terminal, na pasta mcp-api-gateway/:
npm install4️⃣ Inicie o Chat
Na mesma pasta:
node chat.jsAgora você pode interagir com o Ollama! Digite suas mensagens:
Chat iniciado. Digite algo (Ctrl+C para sair)
> qual é a previsão do tempo?
[Ollama consulta a ferramenta get_weatherforecast, que chama a API .NET 9]
[Assistente responde com os dados meteorológicos]📚 Próximas Documentações
Documentações adicionais a serem criadas:
- minha-api/README.md - Detalhes sobre endpoints, configurações e uso da API .NET 9
🛠️ Comandos Resumidos
Terminal 1 - Ollama + MCP
cd mcp-api-gateway
docker-compose up -d --build # Inicia Ollama
npm install # Instala dependências
node chat.js # Inicia servidor MCP + ChatTerminal 2 - API .NET 9
cd minha-api
dotnet run # Inicia a APIParar tudo
# Terminal 1
Ctrl+C # Para o chat/MCP
docker-compose down # Para containers
# Terminal 2
Ctrl+C # Para a API .NET🔄 Fluxo de Funcionamento
- Usuário digita mensagem no chat (
chat.js) - Ollama recebe a mensagem e processa com LLM
- Ollama identifica que precisa usar ferramenta → chama
get_weatherforecast - MCP Server (
index.js) recebe a chamada - MCP Server chama a API .NET 9 (
minha-api) - API .NET retorna dados meteorológicos
- MCP Server retorna resultado para Ollama
- Ollama gera resposta final
- Chat exibe resposta ao Usuário
🔧 Configurações Importantes
Portas Padrão
- Ollama:
http://localhost:11434 - API .NET 9:
https://localhost:7268(dev) - MCP Server:
stdio(comunicação local)
Variáveis de Ambiente
Crie um .env em mcp-api-gateway/ se necessário:
OLLAMA_API=http://localhost:11434
DOTNET_API=https://localhost:7268🐛 Troubleshooting
Ollama não inicia
cd mcp-api-gateway
docker-compose logs ollama
docker-compose down -v
docker-compose build --no-cache
docker-compose up -dAPI .NET não inicia
cd minha-api
dotnet clean
dotnet build
dotnet runChat não conecta
cd mcp-api-gateway
node client.js # Teste conexão MCPPorta já está em uso
Mude a porta em launchSettings.json (.NET) ou docker-compose.yml (Ollama)
📖 Recursos Úteis
🤝 Contribuindo
Sinta-se livre para fazer fork, abrir issues e enviar pull requests!
📄 Licença
MIT
