pharo-smalltalk-interop-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PHARO_SIS_PORT | No | Port number for PharoSmalltalkInteropServer (default: 8086) | 8086 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| evalB | Evaluate a Pharo Smalltalk expression with PharoSmalltalkInteropServer. Args: code: The Smalltalk code to evaluate Returns: dict: API response with success/error and result - Success: {"success": True, "result": any} - result contains the evaluation result - Error: {"success": False, "error": str} - error contains error message |
| get_class_sourceA | Get the source code of a Smalltalk class. Args: class_name: The name of the class to retrieve source for Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains the class source code - Error: {"success": False, "error": str} - error contains error message |
| get_method_sourceB | Get the source code of a specific method in a class. Args: class_name: The name of the class containing the method method_name: The name of the method to retrieve source for is_class_method: True for class-side methods, False for instance methods (default: False) Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains the method source code - Error: {"success": False, "error": str} - error contains error message |
| get_class_commentA | Get the comment of a Smalltalk class. Args: class_name: The name of the class to retrieve comment for Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains the class comment - Error: {"success": False, "error": str} - error contains error message |
| search_classes_likeA | Find classes matching a pattern. Args: class_name_query: The pattern to search for in class names Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of matching class names - Error: {"success": False, "error": str} - error contains error message |
| search_methods_likeA | Find methods matching a pattern. Args: method_name_query: The pattern to search for in method names Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of matching method names - Error: {"success": False, "error": str} - error contains error message |
| search_implementorsA | Get all implementors of a method selector. Args: method_name: The method name to find implementors for Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[dict]} - result contains list of implementors Each implementor: {"class": str, "method": str, "package": str} - Error: {"success": False, "error": str} - error contains error message |
| search_referencesA | Get all references to a method selector or a symbol. Args: method_name_or_symbol: The method name to find references for Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[dict]} - result contains list of references Each reference: {"class": str, "method": str, "package": str} - Error: {"success": False, "error": str} - error contains error message |
| list_packagesA | Get list of all packages. Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of all package names - Error: {"success": False, "error": str} - error contains error message |
| list_classesA | Get list of classes in a package. Args: package_name: The name of the package Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of class names in package - Error: {"success": False, "error": str} - error contains error message |
| export_packageB | Export a package in Tonel format. Args: package_name: The name of the package to export path: The path where to export the package (default: /tmp) Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains export success message with path - Error: {"success": False, "error": str} - error contains error message |
| import_packageA | Import a package from specified path. Args: package_name: The name of the package to import path: The path to the package file to import (default: /tmp) Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains import success message - Error: {"success": False, "error": str} - error contains error message |
| run_package_testB | Run tests for a package. Args: package_name: The package name to run tests for Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains test results summary - Error: {"success": False, "error": str} - error contains error message |
| run_class_testB | Run tests for a class. Args: class_name: The class name to run tests for Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains test results summary - Error: {"success": False, "error": str} - error contains error message |
| list_extended_classesA | Get list of extended classes in a package. Args: package_name: The name of the package Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of extended class names - Error: {"success": False, "error": str} - error contains error message |
| list_methodsA | Get list of methods in a package. Args: package_name: The name of the package Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of method signatures Each method: "ClassName>>#methodName" - Error: {"success": False, "error": str} - error contains error message |
| search_traits_likeA | Find traits matching a pattern. Args: trait_name_query: The pattern to search for in trait names Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of matching trait names - Error: {"success": False, "error": str} - error contains error message |
| search_references_to_classA | Find references to a class. Args: class_name: The name of the class to find references for Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[dict]} - result contains list of class references Each reference: {"package": str, "class": str, "method": str} - Error: {"success": False, "error": str} - error contains error message |
| install_projectA | Install a project using Metacello. Args: project_name: The name of the project to install repository_url: The repository URL for the project load_groups: Comma-separated list of groups to load (optional) Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains installation success message - Error: {"success": False, "error": str} - error contains error message |
| read_screenA | Comprehensive UI screen reader for debugging Pharo interfaces. Captures screenshot and extracts complete UI structure for World morphs, Spec presenters, and Roassal visualizations. Args: target_type: 'world' for morphs, 'spec' for Spec windows, 'roassal' for visualizations capture_screenshot: Include PNG screenshot in response (default: true) Returns: dict: UI structure and metrics - screenshot: Path to PNG file in /tmp/ (if capture_screenshot=true) - target_type: Which UI type was inspected - structure: Complete UI hierarchy data - summary: Human-readable description |
| get_settingsA | Retrieve current server configuration. Returns: dict: API response with success/error and result - Success: {"success": True, "result": dict} - result contains current server settings - Error: {"success": False, "error": str} - error contains error message |
| apply_settingsB | Modify server configuration dynamically. Args: settings: Dictionary containing server settings to modify Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains confirmation message - Error: {"success": False, "error": str} - error contains error message |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Each tool targets a distinct operation: settings management, code evaluation, package operations, code browsing, searching, testing, and UI reading. No two tools have overlapping purposes.
All tools follow a consistent verb_noun pattern (e.g., get_class_source, list_packages, search_methods_like) with clear and predictable naming.
22 tools is on the higher side but still reasonable for a comprehensive Smalltalk interop server covering many aspects; each tool serves a distinct purpose.
Covers many areas (evaluation, browsing, searching, testing, package management, UI reading) but lacks write operations for code (no create/update/delete for classes or methods), which is a notable gap for a development tool.