pharo-nc-mcp-server

mumez/pharo-nc-mcp-server

3.3

If you are the rightful owner of pharo-nc-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Pharo-NC-MCP-Server is a local Model Context Protocol (MCP) server designed to evaluate Pharo Smalltalk expressions and retrieve system information using NeoConsole.

Tools
  1. evaluate_smalltalk_with_neo_console

    Execute Smalltalk expressions in Pharo using NeoConsole.

  2. evaluate_simple_smalltalk

    Execute Smalltalk expressions using Pharo's simple -e option.

  3. get_pharo_metric

    Retrieve system metrics from Pharo.

  4. get_class_comment

    Get the comment of a Pharo class.

  5. get_class_definition

    Get the definition of a Pharo class.

  6. get_method_list

    Get the list of method selectors for a Pharo class.

  7. get_method_source

    Get the source code of a specific method in a Pharo class.

pharo-nc-mcp-server

Tests

A local MCP server to evaluate Pharo Smalltalk expressions and get system information via NeoConsole.

Prerequisites

  • Python 3.10 or later
  • uv package manager
  • Pharo with NeoConsole installed

Pharo Setup

  1. Install Pharo and NeoConsole
  2. Set the PHARO_DIR environment variable to your Pharo installation directory (default: ~/pharo)
  3. Ensure NeoConsole.image is available in the Pharo directory

Installation

  1. Clone the repository:
git clone <repository-url>
cd pharo-nc-mcp-server
  1. Install dependencies using uv:
uv sync --dev

Usage

Running the MCP Server

Start the server:

uv run pharo-nc-mcp-server

Cursor MCP settings

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

MCP Tools Available

evaluate_smalltalk_with_neo_console

Execute Smalltalk expressions in Pharo using NeoConsole:

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

Execute Smalltalk expressions using Pharo's simple -e option:

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

Retrieve system metrics from Pharo:

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

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

Get the comment of a Pharo class:

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

Get the definition of a Pharo class:

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

Get the list of method selectors for a Pharo class:

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

Get the source code of a specific method in a Pharo class:

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

Environment Variables

  • PHARO_DIR: Path to Pharo installation directory (default: ~/pharo)

Development

Code Formatting and 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

Development Scripts

The project includes several convenience scripts in the scripts/ directory:

scripts/format.sh

Formats all code and documentation files in one command:

  • Formats Python code using Black
  • Formats markdown files using mdformat
  • Runs linting checks with Ruff
./scripts/format.sh
scripts/test.sh

Runs the test suite using pytest:

./scripts/test.sh