smalltalk-interop-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SIS_PORT | No | Port number for the Smalltalk Interop Server | 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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| evalB | Evaluate a Smalltalk expression via the Smalltalk Interop Server. |
| get_class_sourceB | Get the source code of a Smalltalk class. |
| get_method_sourceB | Get the source code of a specific method in a class. |
| get_class_commentA | Get the comment of a Smalltalk class. |
| search_classes_likeB | Find classes matching a pattern. |
| search_methods_likeC | Find methods matching a pattern. |
| search_implementorsA | Get all implementors of a method selector. |
| search_referencesB | Get all references to a method selector or a symbol. |
| 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. |
| export_packageA | Export a package in Tonel format. |
| import_packageB | Import a package from specified path. |
| run_package_testB | Run tests for a package. |
| run_class_testA | Run tests for a class. |
| list_extended_classesA | Get list of extended classes in a package. |
| list_methodsB | Get list of methods in a package. |
| search_traits_likeB | Find traits matching a pattern. |
| search_references_to_classC | Find references to a class. |
| install_projectB | Install a project using Metacello. |
| read_screenA | Comprehensive UI screen reader for debugging Smalltalk interfaces. Captures screenshot and extracts complete UI structure for World morphs (Pharo and Squeak), and Spec presenters and Roassal visualizations (Pharo only). |
| 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. |
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
Most tools have a clear verb+resource pairing, and search/list operations are separated by target. However, search_references and search_references_to_class are easy to confuse, and list_classes/list_extended_classes have somewhat similar boundaries.
All tools use snake_case verb_noun naming, with consistent prefixes such as get_, search_, list_, and run_. Multi-word targets like list_extended_classes and search_references_to_class still follow the same readable pattern.
22 tools is on the heavy side for a single server, though the set covers several distinct subdomains: evaluation, source retrieval, search, package management, testing, UI inspection, and settings. A few peripheral tools could reasonably be split out, but the count is not unreasonable.
The server covers discovery, source access, package import/export, and test running, but has notable gaps such as no way to list methods for a specific class, no class hierarchy queries, and no single-test-method runner. Eval and import can cover some mutations indirectly, but the surface is unevenly complete.