Ollama MCP Server
Integre instâncias locais de LLM do Ollama com aplicativos compatíveis com MCP.
Documentação
ollama-MCP-server
Servidor Model Context Protocol (MCP) para comunicação com Ollama
Visão geral
Este servidor MCP permite integração perfeita entre instâncias locais de LLM Ollama e aplicativos compatíveis com MCP, fornecendo decomposição avançada de tarefas, avaliação e gerenciamento de fluxo de trabalho.
Principais recursos:
- Decomposição de tarefas complexas em subtarefas
- Avaliação e validação de resultados
- Gerenciamento e execução de modelos Ollama
- Comunicação padronizada via protocolo MCP
- Tratamento avançado de erros com mensagens de erro detalhadas
- Otimização de desempenho (pool de conexões, cache LRU)
Componentes
Recursos
O servidor implementa os seguintes recursos:
- task:// - esquema de URI para acessar tarefas individuais
- result:// - esquema de URI para acessar resultados de avaliação
- model:// - esquema de URI para acessar modelos Ollama disponíveis
Cada recurso possui metadados e tipos MIME apropriados para interação ideal com LLM.
Relação entre prompts e ferramentas
No servidor MCP, prompts e ferramentas estão intimamente relacionados, mas possuem papéis diferentes.
- Prompts: funcionam como esquemas (Schema) que fornecem métodos específicos de pensamento ou estrutura ao LLM
- Ferramentas: funcionam como manipuladores (Handler) que executam ações de fato
Cada ferramenta requer um esquema (prompt) correspondente, permitindo que a capacidade de raciocínio do LLM e as funcionalidades reais do sistema trabalhem juntas de forma eficaz.
Prompts
O servidor fornece vários prompts especiais:
-
decompose-task - decompõe tarefas complexas em subtarefas gerenciáveis
- Recebe a descrição da tarefa e parâmetros opcionais de nível de granularidade
- Retorna uma decomposição estruturada incluindo dependências e complexidade estimada
-
evaluate-result - analisa resultados de tarefas em relação a critérios especificados
- Recebe o conteúdo do resultado e parâmetros de avaliação
- Retorna uma avaliação detalhada incluindo pontuação e sugestões de melhoria
Ferramentas
O servidor implementa várias ferramentas poderosas:
-
add-task
- Parâmetros obrigatórios:
name(string),description(string) - Parâmetros opcionais:
priority(número),deadline(string),tags(array) - Cria uma nova tarefa no sistema e retorna seu identificador
- Esquema correspondente: esquema de validação de dados para criação de tarefas
- Parâmetros obrigatórios:
-
decompose-task
- Parâmetros obrigatórios:
task_id(string),granularity(string: "high"|"medium"|"low") - Parâmetros opcionais:
max_subtasks(número) - Usa Ollama para decompor tarefas complexas em subtarefas gerenciáveis
- Esquema correspondente: prompt
decompose-taskacima
- Parâmetros obrigatórios:
-
evaluate-result
- Parâmetros obrigatórios:
result_id(string),criteria(objeto) - Parâmetros opcionais:
detailed(booleano) - Avalia resultados em relação a critérios especificados e fornece feedback
- Esquema correspondente: prompt
evaluate-resultacima
- Parâmetros obrigatórios:
-
run-model
- Parâmetros obrigatórios:
model(string),prompt(string) - Parâmetros opcionais:
temperature(número),max_tokens(número) - Executa modelos Ollama com parâmetros especificados
- Esquema correspondente: esquema de validação de parâmetros de execução do modelo Ollama
- Parâmetros obrigatórios:
Novos recursos e melhorias
Tratamento de erros aprimorado
O servidor fornece mensagens de erro mais detalhadas e estruturadas, permitindo que aplicativos clientes tratem erros de forma mais eficaz. Exemplo de resposta de erro:
{
"error": {
"message": "Task not found: task-123",
"status_code": 404,
"details": {
"provided_id": "task-123"
}
}
}
Otimização de desempenho
- Pool de conexões: o uso de um pool compartilhado de conexões HTTP melhora o desempenho de requisições e reduz o uso de recursos.
- Cache LRU: o cache de respostas para requisições idênticas ou semelhantes reduz o tempo de resposta e alivia a carga do servidor Ollama.
Essas configurações podem ser ajustadas em config.py:
# パフォーマンス関連設定
cache_size: int = 100 # キャッシュに保存する最大エントリ数
max_connections: int = 10 # 同時接続の最大数
max_connections_per_host: int = 10 # ホストごとの最大接続数
request_timeout: int = 60 # リクエストタイムアウト(秒)
Funcionalidade de especificação de modelo
Visão geral
O Ollama-MCP-Server oferece funcionalidade flexível para especificar modelos Ollama de várias maneiras.
Prioridade de especificação de modelo
Os modelos são especificados na seguinte ordem de prioridade:
- Parâmetro na chamada da ferramenta (parâmetro
model) - Seção
envdo arquivo de configuração MCP - Variável de ambiente (
OLLAMA_DEFAULT_MODEL) - Valor padrão (
llama3)
Especificação de modelo usando arquivo de configuração MCP
Ao usar com clientes como Claude Desktop, você pode especificar o modelo usando o arquivo de configuração MCP:
{
"mcpServers": {
"ollama-MCP-server": {
"command": "python",
"args": [
"-m",
"ollama_mcp_server"
],
"env": [
{"model": "llama3:latest"}
]
}
}
}
Verificação de modelos disponíveis
Na inicialização do servidor, é verificado se o modelo configurado existe. Se o modelo não for encontrado, um log de aviso é emitido. Além disso, a ferramenta run-model retorna a lista de modelos disponíveis, permitindo que o usuário selecione um modelo válido.
Melhorias no tratamento de erros
Se o modelo especificado não existir ou ocorrer um erro de comunicação, mensagens de erro detalhadas são fornecidas. As mensagens de erro incluem a lista de modelos disponíveis, permitindo que o usuário resolva o problema rapidamente.
Testes
O projeto inclui uma suíte de testes abrangente:
- Testes unitários: testam a funcionalidade de componentes individuais
- Testes de integração: testam fluxos de trabalho de ponta a ponta
Para executar os testes:
# すべてのテストを実行
python -m unittest discover
# 特定のテストを実行
python -m unittest tests.test_integration
Configuração
Variáveis de ambiente
OLLAMA_HOST=http://localhost:11434
DEFAULT_MODEL=llama3
LOG_LEVEL=info
Configuração do Ollama
Certifique-se de que o Ollama esteja instalado e executando com os modelos apropriados:
# Ollamaをインストール(まだインストールされていない場合)
curl -fsSL https://ollama.com/install.sh | sh
# 推奨モデルをダウンロード
ollama pull llama3
ollama pull mistral
ollama pull qwen2
Início rápido
Instalação
pip install ollama-mcp-server
Configuração do Claude Desktop
MacOS
Caminho: ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows
Caminho: %APPDATA%/Claude/claude_desktop_config.json
Configuração para servidores de desenvolvimento/não publicados
"mcpServers": {
"ollama-MCP-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/ollama-MCP-server",
"run",
"ollama-MCP-server"
],
"ENV":["model":"deepseek:r14B"]
}
}
Configuração para servidores públicos
"mcpServers": {
"ollama-MCP-server": {
"command": "uvx",
"args": [
"ollama-MCP-server"
]
}
}
Exemplos de uso
Decomposição de tarefas
Para decompor uma tarefa complexa em subtarefas gerenciáveis:
result = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "decompose-task",
"arguments": {
"task_id": "task://123",
"granularity": "medium",
"max_subtasks": 5
}
})
Avaliação de resultados
Para avaliar um resultado em relação a critérios específicos:
evaluation = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "evaluate-result",
"arguments": {
"result_id": "result://456",
"criteria": {
"accuracy": 0.4,
"completeness": 0.3,
"clarity": 0.3
},
"detailed": true
}
})
Execução de modelos Ollama
Para executar consultas diretamente em modelos Ollama:
response = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "run-model",
"arguments": {
"model": "llama3",
"prompt": "量子コンピューティングを簡単な言葉で説明してください",
"temperature": 0.7
}
})
Desenvolvimento
Configuração do projeto
- Clone o repositório:
git clone https://github.com/yourusername/ollama-MCP-server.git
cd ollama-MCP-server
- Crie e ative o ambiente virtual:
python -m venv venv
source venv/bin/activate # Windowsの場合: venv\Scripts\activate
- Instale as dependências de desenvolvimento:
uv sync --dev --all-extras
Desenvolvimento local
O projeto inclui scripts de desenvolvimento convenientes:
Executando o servidor
./run_server.sh
Opções:
--debug: executar em modo de depuração (nível de log: DEBUG)--log=LEVEL: especificar o nível de log (DEBUG, INFO, WARNING, ERROR, CRITICAL)
Executando testes
./run_tests.sh
Opções:
--unit: executar apenas testes unitários--integration: executar apenas testes de integração--all: executar todos os testes (padrão)--verbose: saída detalhada de testes
Build e publicação
Para preparar o pacote para distribuição:
- Sincronize as dependências e atualize o arquivo de bloqueio:
uv sync
- Compile os artefatos de distribuição do pacote:
uv build
Isso criará artefatos de distribuição de fonte e wheel no diretório dist/.
- Publique no PyPI:
uv publish
Nota: você precisa definir as credenciais do PyPI via variáveis de ambiente ou flags de comando:
- Token:
--tokenouUV_PUBLISH_TOKEN - Ou nome de usuário/senha:
--username/UV_PUBLISH_USERNAMEe--password/UV_PUBLISH_PASSWORD
Depuração
Como o servidor MCP é executado via stdio, a depuração pode ser difícil. Para a melhor experiência de depuração, é altamente recomendado usar o MCP Inspector.
Para iniciar o MCP Inspector usando npm, execute o seguinte comando:
npx @modelcontextprotocol/inspector uv --directory /path/to/ollama-MCP-server run ollama-mcp-server
Na inicialização, o Inspector exibirá uma URL que pode ser acessada no navegador para iniciar a depuração.
Arquitet
Contribuição
Contribuições são bem-vindas! Sinta-se à vontade para enviar pull requests.
- Faça um fork do repositório
- Crie um branch de funcionalidade (
git checkout -b feature/amazing-feature) - Faça commit das alterações (
git commit -m 'Add some amazing feature') - Envie para o branch (
git push origin feature/amazing-feature) - Abra um pull request
Licença
Este projeto é licenciado sob a licença MIT - consulte o arquivo LICENSE para mais detalhes.
Agradecimentos
- Equipe do Model Context Protocol pelo excelente design do protocolo
- Projeto Ollama por tornar a execução local de LLMs acessível
- Todos os contribuidores deste projeto