Pharo NeoConsole

Evalúa expresiones de Pharo Smalltalk y obtén información del sistema a través de un servidor NeoConsole local.

Documentación

pharo-nc-mcp-server

Tests

Un servidor MCP local para evaluar expresiones de Pharo Smalltalk y obtener información del sistema a través de NeoConsole.

Requisitos previos

  • Python 3.10 o posterior
  • Gestor de paquetes uv
  • Pharo con NeoConsole instalado

Configuración de Pharo

  1. Instala Pharo y NeoConsole
  2. Establece la variable de entorno PHARO_DIR a tu directorio de instalación de Pharo (por defecto: ~/pharo)
  3. Asegúrate de que NeoConsole.image esté disponible en el directorio de Pharo

Instalación

  1. Clona el repositorio:
git clone <repository-url>
cd pharo-nc-mcp-server
  1. Instala las dependencias usando uv:
uv sync --dev

Uso

Ejecutar el servidor MCP

Inicia el servidor:

uv run pharo-nc-mcp-server

Configuración de MCP en Cursor

{
  "mcpServers": {
    "pharo-nc-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/your-path/to/pharo-nc-mcp-server",
        "run",
        "pharo-nc-mcp-server"
      ]
    }
  }
}

Herramientas MCP disponibles

evaluate_smalltalk_with_neo_console

Ejecuta expresiones de Smalltalk en Pharo usando NeoConsole:

# Example usage in MCP client
evaluate_smalltalk_with_neo_console(expression="42 factorial", command="eval")

evaluate_simple_smalltalk

Ejecuta expresiones de Smalltalk usando la opción simple -e de Pharo:

# Simple evaluation
evaluate_simple_smalltalk(expression="Time now")

get_pharo_metric

Recupera métricas del sistema desde Pharo:

# Get system status
get_pharo_metric(metric="system.status")

# Get memory information
get_pharo_metric(metric="memory.free")

get_class_comment

Obtén el comentario de una clase de Pharo:

# Get Array class comment
get_class_comment(class_name="Array")

get_class_definition

Obtén la definición de una clase de Pharo:

# Get Array class definition
get_class_definition(class_name="Array")

get_method_list

Obtén la lista de selectores de métodos para una clase de Pharo:

# Get all method selectors for Array class
get_method_list(class_name="Array")

get_method_source

Obtén el código fuente de un método específico en una clase de Pharo:

# Get source code for Array>>asSet method
get_method_source(class_name="Array", selector="asSet")

Variables de entorno

  • PHARO_DIR: Ruta al directorio de instalación de Pharo (por defecto: ~/pharo)

Desarrollo

Formato de código y linting

# Format code
uv run black pharo_nc_mcp_server/

# Lint code
uv run ruff check pharo_nc_mcp_server/

# Run tests
uv run python -m pytest

# Or use the test script
./scripts/test.sh

Scripts de desarrollo

El proyecto incluye varios scripts de conveniencia en el directorio scripts/:

scripts/format.sh

Formatea todos los archivos de código y documentación en un solo comando:

  • Formatea código Python usando Black
  • Formatea archivos markdown usando mdformat
  • Ejecuta verificaciones de linting con Ruff
./scripts/format.sh

scripts/test.sh

Ejecuta la suite de pruebas usando pytest:

./scripts/test.sh