smalltalk-mcp
MCPを通じてライブのSmalltalkイメージ(SqueakやCuis)と対話できます。実行中のSmalltalk環境でコードを評価し、クラスを閲覧し、メソッドのソースコードを表示し、クラスとメソッドを定義・変更し、階層とカテゴリを照会することができます。
description の原文を見る
Interact with live Smalltalk images (Squeak, Cuis) via MCP. Evaluate code, browse classes, view method source, define and modify classes and methods, query hierarchies and categories in a running Smalltalk environment.
SKILL.md 本文
Smalltalk MCP スキル
このスキルは Claude を MCP 経由でライブの Smalltalk イメージ (Cuis または Squeak) に接続します。
セットアップ (ツールがまだ接続されていない場合)
Smalltalk MCP ツールが利用できない場合は、ユーザーが以下を設定するのをサポートしてください:
前提条件
- Python 3.10 以上
- Smalltalk VM: Cuis または Squeak
- ClaudeSmalltalk リポジトリ:
git clone https://github.com/CorporateSmalltalkConsultingLtd/ClaudeSmalltalk.git - CUIS-SETUP.md に従って
ClaudeCuis.imageをビルドしてください。Squeak の場合は SQUEAK-SETUP.md を参照してください。
ステップ 1: Python 依存関係をインストール
pip install httpx
エージェント LLM プロバイダーとして Anthropic を使用する場合は、さらに: pip install anthropic
ステップ 2: smalltalk-mcp.json を作成
このファイルを ClaudeSmalltalk リポジトリディレクトリに作成してください。すべてのパスは絶対パスである必要があります。
Anthropic を使用する例 (examples/smalltalk-mcp-anthropic.json からコピー):
{
"version": "1.0",
"model": {
"provider": "anthropic",
"name": "claude-sonnet-4-6",
"maxTokens": 256000,
"apiKeyEnv": "ANTHROPIC_API_KEY"
},
"vm": {
"squeak": "/absolute/path/to/Squeak6.0.app/Contents/MacOS/Squeak",
"cuis": "/absolute/path/to/CuisVM.app/Contents/MacOS/Squeak"
},
"image": {
"selected": "cuis",
"squeak": "/absolute/path/to/ClaudeSqueak.image",
"cuis": "/absolute/path/to/ClaudeSmalltalk/ClaudeCuis.image"
},
"transport": {
"type": "stdio",
"args": ["--mcp"],
"timeout": 180
}
}
ユーザーは API キーを設定する必要があります: export ANTHROPIC_API_KEY=sk-ant-...
その他のプロバイダーの例は examples/ フォルダーにあります (Ollama、OpenAI、xAI、MQTT)。
ステップ 3: Claude Desktop を設定
ユーザーは ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) を編集する必要があります:
{
"mcpServers": {
"smalltalkAgent": {
"command": "python3",
"args": ["/absolute/path/to/ClaudeSmalltalk/smalltalk_agent_mcp.py"],
"env": {
"SMALLTALK_MCP_CONFIG": "/absolute/path/to/ClaudeSmalltalk/.smalltalk-mcp.json"
}
}
}
}
例は examples/claude_desktop_config.json にあります。すべてのパスは絶対パスである必要があります。
保存後、Claude Desktop が再読み込みされ、13 個の Smalltalk ツールが利用可能になります。
ツールの使い方
接続すると、ライブの Smalltalk イメージ用に 13 個の MCP ツールが利用できます。
smalltalk_task と個別ツールの使い分け
smalltalk_task を使う 複雑な複数ステップの作業の場合:
- 「Random クラスをレビューしてください」— エージェントが閲覧し、メソッドを読んで評価を出します
- 「Set クラスの正確性を監査してください」
- 「increment/decrement メソッドとテストを備えた Counter クラスを定義してください」
- 「OrderedCollection と Array の実装を比較してください」
smalltalk_task は .smalltalk-mcp.json で設定された別の LLM にタスクを委譲します。自然言語タスクを提供すると、完全な結果が返されます。複数の閲覧/評価ステップを必要とするいかなる作業でも、これが推奨ツールです。
個別ツールを使う 迅速な単一操作の場合:
smalltalk_evaluate— コードを実行:3 factorial、Date todaysmalltalk_browse— クラスメタデータを取得 (スーパークラス、インスタンス変数、メソッドリスト)smalltalk_method_source— 1 つのメソッドのソースコードを読むsmalltalk_list_classes— プレフィックスでクラスを検索smalltalk_hierarchy/smalltalk_subclasses— 継承を探索
ベストプラクティス
修正前に必ず閲覧してください。 メソッドを定義または変更する前に、smalltalk_browse を使ってクラス構造を理解し、smalltalk_method_source で既存の実装を読んでください。
クラス側メソッド。 クラス側メソッドを表示または定義する場合は、side パラメーターに "class" を使用してください。smalltalk_browse ツールはインスタンスメソッドとクラスメソッドの両方を返します。
クラス定義。 標準的な Smalltalk クラス定義構文を使用してください:
Object subclass: #MyClass
instanceVariableNames: 'foo bar'
classVariableNames: ''
poolDictionaries: ''
category: 'MyCategory'
メソッドソース形式。 セレクター行を含む完全なメソッドソースを提供してください:
increment
count := (count ifNil: [0]) + 1.
^ count
テスト。 メソッド定義後、smalltalk_evaluate で検証してください:
MyClass new increment
SUnit テストを実行: MyClassTest buildSuite run
システムの探索。 広く始めて、その後絞り込みます:
smalltalk_list_categories— イメージに何があるか見てくださいsmalltalk_classes_in_category— カテゴリーを探索smalltalk_browse— クラスを理解smalltalk_method_source— 特定のメソッドを読む
ツール リファレンス
| ツール | 説明 |
|---|---|
smalltalk_task | エージェントループ経由で複雑なタスクを実行 (複数ステップの作業に推奨) |
smalltalk_evaluate | Smalltalk コードを実行して結果を返す |
smalltalk_browse | クラスメタデータを取得: スーパークラス、インスタンス変数、インスタンスメソッドおよびクラスメソッド |
smalltalk_method_source | メソッドのソースコードを表示 (クラス側の場合は side: "class" を使用) |
smalltalk_define_class | クラス定義を作成または修正 |
smalltalk_define_method | クラスにメソッドを追加または更新 |
smalltalk_delete_method | クラスからメソッドを削除 |
smalltalk_delete_class | システムからクラスを削除 |
smalltalk_list_classes | プレフィックスに一致するクラスをリスト |
smalltalk_hierarchy | クラスのスーパークラスチェーンを取得 |
smalltalk_subclasses | クラスの直接サブクラスを取得 |
smalltalk_list_categories | すべてのシステムカテゴリーをリスト |
smalltalk_classes_in_category | カテゴリー内のクラスをリスト |
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- CorporateSmalltalkConsultingLtd
- ライセンス
- MIT
- 最終更新
- 2026/3/12
Source: https://github.com/CorporateSmalltalkConsultingLtd/ClaudeSmalltalk / ライセンス: MIT