Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pharo-nc-mcp-servershow me the definition of the OrderedCollection class"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pharo-nc-mcp-server
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
Install Pharo and NeoConsole
Set the
PHARO_DIRenvironment variable to your Pharo installation directory (default:~/pharo)Ensure
NeoConsole.imageis available in the Pharo directory
Installation
Clone the repository:
git clone <repository-url>
cd pharo-nc-mcp-serverInstall dependencies using uv:
uv sync --devUsage
Running the MCP Server
Start the server:
uv run pharo-nc-mcp-serverCursor 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.shDevelopment 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.shscripts/test.sh
Runs the test suite using pytest:
./scripts/test.sh