Pharo NeoConsole
Avalie expressões Pharo Smalltalk e obtenha informações do sistema através de um servidor NeoConsole local.
Documentação
pharo-nc-mcp-server
Um servidor MCP local para avaliar expressões Pharo Smalltalk e obter informações do sistema via NeoConsole.
Pré-requisitos
- Python 3.10 ou posterior
- uv gerenciador de pacotes
- Pharo com NeoConsole instalado
Configuração do Pharo
- Instale o Pharo e o NeoConsole
- Defina a variável de ambiente
PHARO_DIRpara o diretório de instalação do seu Pharo (padrão:~/pharo) - Garanta que
NeoConsole.imageesteja disponível no diretório do Pharo
Instalação
- Clone o repositório:
git clone <repository-url>
cd pharo-nc-mcp-server
- Instale as dependências usando uv:
uv sync --dev
Uso
Executando o servidor MCP
Inicie o servidor:
uv run pharo-nc-mcp-server
Configurações do MCP no Cursor
{
"mcpServers": {
"pharo-nc-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/your-path/to/pharo-nc-mcp-server",
"run",
"pharo-nc-mcp-server"
]
}
}
}
Ferramentas MCP disponíveis
evaluate_smalltalk_with_neo_console
Execute expressões Smalltalk no Pharo usando NeoConsole:
# Example usage in MCP client
evaluate_smalltalk_with_neo_console(expression="42 factorial", command="eval")
evaluate_simple_smalltalk
Execute expressões Smalltalk usando a opção -e simples do Pharo:
# Simple evaluation
evaluate_simple_smalltalk(expression="Time now")
get_pharo_metric
Obtenha métricas do sistema do Pharo:
# Get system status
get_pharo_metric(metric="system.status")
# Get memory information
get_pharo_metric(metric="memory.free")
get_class_comment
Obtenha o comentário de uma classe Pharo:
# Get Array class comment
get_class_comment(class_name="Array")
get_class_definition
Obtenha a definição de uma classe Pharo:
# Get Array class definition
get_class_definition(class_name="Array")
get_method_list
Obtenha a lista de seletores de métodos para uma classe Pharo:
# Get all method selectors for Array class
get_method_list(class_name="Array")
get_method_source
Obtenha o código-fonte de um método específico em uma classe Pharo:
# Get source code for Array>>asSet method
get_method_source(class_name="Array", selector="asSet")
Variáveis de ambiente
PHARO_DIR: Caminho para o diretório de instalação do Pharo (padrão:~/pharo)
Desenvolvimento
Formatação de código e 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 desenvolvimento
O projeto inclui vários scripts de conveniência no diretório scripts/:
scripts/format.sh
Formata todos os arquivos de código e documentação em um único comando:
- Formata código Python usando Black
- Formata arquivos markdown usando mdformat
- Executa verificações de linting com Ruff
./scripts/format.sh
scripts/test.sh
Executa a suíte de testes usando pytest:
./scripts/test.sh