Ollama MCP Server

Integrations

  • Enables seamless communication with local Ollama LLM instances, providing capabilities for task decomposition, result evaluation, and direct model execution with configurable parameters.

  • Provides a Python interface for utilizing the MCP server's tools programmatically, allowing developers to implement task decomposition, result evaluation, and model execution in Python applications.

servidor ollama-MCP

Un servidor de Protocolo de Contexto de Modelo (MCP) que se comunica con Ollama

descripción general

Este servidor MCP permite una integración perfecta entre instancias locales de Ollama LLM y aplicaciones compatibles con MCP, proporcionando descomposición de tareas avanzada, evaluación y gestión del flujo de trabajo.

Características principales:

  • Descomposición de tareas de problemas complejos
  • Evaluación y validación de resultados
  • Gestión y ejecución de modelos de Ollama
  • Comunicación estandarizada a través del protocolo MCP
  • Manejo avanzado de errores y mensajes de error detallados
  • Optimización del rendimiento (agrupación de conexiones, caché LRU)

componente

recurso

El servidor implementa los siguientes recursos:

  • task:// - el esquema URI para acceder a tareas individuales
  • result:// - el esquema URI para acceder al resultado de la evaluación
  • model:// - el esquema URI para acceder a los modelos Ollama disponibles.

Cada recurso tiene los metadatos adecuados y el tipo MIME configurados para una interacción LLM óptima.

Relaciones entre indicaciones y herramientas

En un servidor MCP, los mensajes y las herramientas están estrechamente relacionados pero tienen funciones diferentes.

  • Indicaciones : Funciones similares a esquemas que proporcionan una forma específica de pensar y estructurar el LLM.
  • Herramienta : actúa como un controlador que realmente ejecuta la acción.

Cada herramienta requiere un esquema correspondiente (indicador) para alinear efectivamente las habilidades de pensamiento del LLM con las funciones reales del sistema.

inmediato

El servidor proporciona algunas indicaciones especiales:

  • decompose-task : descompone una tarea compleja en subtareas manejables
    • Obtenga la descripción de la tarea y los parámetros opcionales a un nivel granular
    • Devuelve un desglose estructurado de las dependencias y la complejidad estimada.
  • evaluar-resultado : analiza los resultados de la tarea según criterios específicos
    • Obtener resultados y parámetros de evaluación
    • Devuelve una evaluación detallada con una puntuación y sugerencias de mejora.

herramienta

El servidor implementa varias herramientas potentes:

  • agregar tarea
    • Parámetros obligatorios: name (cadena), description (cadena)
    • Parámetros opcionales: priority (número), deadline (cadena), tags (matriz)
    • Crea una nueva tarea en el sistema y devuelve su identificador.
    • Esquema correspondiente: Esquema de validación de datos para la creación de tareas
  • tarea de descomposición
    • Parámetros obligatorios: task_id (cadena), granularity (cadena: "alta"|"media"|"baja")
    • Parámetro opcional: max_subtasks (número)
    • Utilice Ollama para dividir tareas complejas en subtareas manejables
    • Esquema correspondiente: solicitud decompose-task anterior
  • evaluar-resultado
    • Parámetros obligatorios: result_id (cadena), criteria (objeto)
    • Parámetro opcional: detailed (booleano)
    • Evaluar los resultados según criterios específicos y proporcionar retroalimentación.
    • Esquema correspondiente: solicitud evaluate-result anterior
  • modelo de ejecución
    • Parámetros obligatorios: model (cadena), prompt (cadena)
    • Parámetros opcionales: temperature (número), max_tokens (número)
    • Ejecuta el modelo Ollama con los parámetros especificados.
    • Esquema correspondiente: Esquema de validación de parámetros de ejecución del modelo Ollama

Nuevas funciones y mejoras

Manejo de errores extendido

El servidor proporciona mensajes de error más detallados y estructurados. Esto permite que las aplicaciones cliente gestionen los errores de forma más eficiente. Ejemplo de una respuesta de error:

{ "error": { "message": "Task not found: task-123", "status_code": 404, "details": { "provided_id": "task-123" } } }

Optimización del rendimiento

  • Agrupación de conexiones : el uso de un grupo de conexiones HTTP compartido mejora el rendimiento de las solicitudes y reduce la utilización de recursos.
  • Caché LRU : almacenar en caché las respuestas a solicitudes idénticas o similares mejora el tiempo de respuesta y reduce la carga en los servidores Ollama.

Estas configuraciones se pueden ajustar en config.py :

# パフォーマンス関連設定 cache_size: int = 100 # キャッシュに保存する最大エントリ数 max_connections: int = 10 # 同時接続の最大数 max_connections_per_host: int = 10 # ホストごとの最大接続数 request_timeout: int = 60 # リクエストタイムアウト(秒)

Función de especificación del modelo

descripción general

El servidor Ollama-MCP proporciona la flexibilidad de especificar modelos Ollama de múltiples maneras.

Precedencia de la especificación del modelo

Los modelos se especifican en el siguiente orden de prioridad:

  1. Parámetros al llamar a la herramienta (parámetros model )
  2. Sección env del archivo de configuración de MCP
  3. Variable de entorno ( OLLAMA_DEFAULT_MODEL )
  4. Valor predeterminado ( llama3 )

Especificación del modelo mediante archivos de configuración MCP

Para usar con clientes como Claude Desktop, puede especificar el modelo utilizando el archivo de configuración MCP:

{ "mcpServers": { "ollama-MCP-server": { "command": "python", "args": [ "-m", "ollama_mcp_server" ], "env": [ {"model": "llama3:latest"} ] } } }

Consultar modelos disponibles

Al iniciar el servidor, se comprueba la existencia del modelo configurado. Si no se puede encontrar el modelo, se registrará una advertencia. run-model también devuelve una lista de modelos disponibles, lo que permite al usuario seleccionar un modelo válido.

Manejo de errores mejorado

Si el modelo especificado no existe o se produce un error de comunicación, se proporciona un mensaje de error detallado. Los mensajes de error incluyen una lista de modelos disponibles para que los usuarios puedan resolver los problemas rápidamente.

prueba

El proyecto incluye un conjunto completo de pruebas:

  • Pruebas unitarias : prueba de la funcionalidad de componentes individuales
  • Pruebas de integración : prueba del flujo de trabajo de extremo a extremo

Para ejecutar la prueba:

# すべてのテストを実行 python -m unittest discover # 特定のテストを実行 python -m unittest tests.test_integration

configuración

variables ambientales

OLLAMA_HOST=http://localhost:11434 DEFAULT_MODEL=llama3 LOG_LEVEL=info

Configuración de Ollama

Asegúrese de que Ollama esté instalado y ejecutándose en el modelo apropiado:

# Ollamaをインストール(まだインストールされていない場合) curl -fsSL https://ollama.com/install.sh | sh # 推奨モデルをダウンロード ollama pull llama3 ollama pull mistral ollama pull qwen2

Inicio rápido

instalar

pip install ollama-mcp-server

Configuración del escritorio de Claude

Sistema operativo Mac

Ruta: ~/Library/Application\ Support/Claude/claude_desktop_config.json

Ventanas

Ruta: %APPDATA%/Claude/claude_desktop_config.json

"mcpServers": { "ollama-MCP-server": { "command": "uv", "args": [ "--directory", "/path/to/ollama-MCP-server", "run", "ollama-MCP-server" ], "ENV":["model":"deepseek:r14B"] } }
"mcpServers": { "ollama-MCP-server": { "command": "uvx", "args": [ "ollama-MCP-server" ] } }

Ejemplo de uso

Descomposición de tareas

Para dividir una tarea compleja en subtareas manejables:

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 } })

Evaluación de resultados

Para evaluar los resultados según criterios 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 } })

Ejecución del modelo Ollama

Para consultar un modelo Ollama directamente:

response = await mcp.use_mcp_tool({ "server_name": "ollama-MCP-server", "tool_name": "run-model", "arguments": { "model": "llama3", "prompt": "量子コンピューティングを簡単な言葉で説明してください", "temperature": 0.7 } })

desarrollo

Configuración del proyecto

  1. Clonar el repositorio:
git clone https://github.com/yourusername/ollama-MCP-server.git cd ollama-MCP-server
  1. Crear y activar el entorno virtual:
python -m venv venv source venv/bin/activate # Windowsの場合: venv\Scripts\activate
  1. Instalar dependencias de desarrollo:
uv sync --dev --all-extras

Desarrollo local

El proyecto incluye algunos scripts de desarrollo útiles:

Ejecución del servidor

./run_server.sh

opción:

  • --debug : Ejecutar en modo de depuración (nivel de registro: DEBUG)
  • --log=LEVEL : Especifica el nivel de registro (DEBUG, INFO, WARNING, ERROR, CRITICAL)

Ejecución de las pruebas

./run_tests.sh

opción:

  • --unit : Ejecutar solo pruebas unitarias
  • --integration : Ejecutar solo pruebas de integración
  • --all : ejecutar todas las pruebas (predeterminado)
  • --verbose : Salida de prueba detallada

Construir y publicar

Para preparar un paquete para su distribución:

  1. Sincronizar dependencias y actualizar archivos de bloqueo:
uv sync
  1. Construya la distribución del paquete:
uv build

Esto creará una fuente y una distribución de ruedas en dist/ .

  1. Publicar en PyPI:
uv publish

Nota: Debe configurar sus credenciales de PyPI en una variable de entorno o un indicador de comando:

  • Token: --token o UV_PUBLISH_TOKEN
  • O nombre de usuario/contraseña: --username / UV_PUBLISH_USERNAME y --password / UV_PUBLISH_PASSWORD

depurar

Los servidores MCP se ejecutan a través de stdio, por lo que la depuración puede resultar difícil. Para obtener la mejor experiencia de depuración, recomendamos encarecidamente utilizar MCP Inspector .

Para iniciar MCP Inspector usando npm , ejecute el siguiente comando:

npx @modelcontextprotocol/inspector uv --directory /path/to/ollama-MCP-server run ollama-mcp-server

Al iniciarse, el Inspector le mostrará una URL que puede visitar en su navegador para comenzar a depurar.

Arquitecto

contribución

¡Las contribuciones son bienvenidas! No dudes en enviar una solicitud de extracción.

  1. Bifurcar el repositorio
  2. Crear una rama de características ( git checkout -b feature/amazing-feature )
  3. Confirmar los cambios ( git commit -m 'Add some amazing feature' )
  4. Empujar a la rama ( git push origin feature/amazing-feature )
  5. Abrir una solicitud de extracción

licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

Expresiones de gratitud

ID: wqucds7u9n