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

Tests

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

  1. Instale o Pharo e o NeoConsole
  2. Defina a variável de ambiente PHARO_DIR para o diretório de instalação do seu Pharo (padrão: ~/pharo)
  3. Garanta que NeoConsole.image esteja disponível no diretório do Pharo

Instalação

  1. Clone o repositório:
git clone <repository-url>
cd pharo-nc-mcp-server
  1. 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