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
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
- Instala Pharo y NeoConsole
- Establece la variable de entorno
PHARO_DIRa tu directorio de instalación de Pharo (por defecto:~/pharo) - Asegúrate de que
NeoConsole.imageesté disponible en el directorio de Pharo
Instalación
- Clona el repositorio:
git clone <repository-url>
cd pharo-nc-mcp-server
- 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