🚀 TCL MCP Server
AIエージェントがTCLスクリプトを実行し、MCPツールエコシステムを管理できるようにするモデルコンテキストプロトコル(MCP)サーバーです。安全性と開発者体験を重視して構築されています。

🚀 クイックスタート
cargo install tcl-mcp-server
tcl-mcp-server
git clone https://github.com/cyberdione/mcp-tcl-udf-server
cd mcp-tcl-udf-server
cargo build --release
./target/release/tcl-mcp-server
✨ 主な機能
- TCLスクリプトの実行:MCPを通じて、高度な安全制御を伴ってTCLコードを実行します。
- MCPエコシステムの管理:他のMCPサーバーの追加、削除、および調整を行います。
- デフォルトで安全:サンドボックス化された実行環境で、Molt(メモリ安全なTCL)を使用します。
- ツール管理:カスタムツールの作成、バージョン管理、および整理を行います。
- クロスプラットフォーム対応:Linux、macOS、およびWindowsで動作します。
🔧 ランタイムオプション
2つのTCLランタイム実装から選択できます。
🔒 Moltランタイム(デフォルト - 安全)
- メモリ安全:Rustで書かれ、組み込みの安全保証があります。
- サンドボックス化:ファイルI/O、システムコマンド、ネットワークアクセスができません。
- サブセット:データ処理とアルゴリズムのための核心的なTCL機能を備えています。
- 推奨:本番環境や信頼できない環境での使用に適しています。
- ドキュメント:Molt TCL Book
⚠️ TCLランタイム(完全 - 不安全)
- 完全な機能:すべての機能を備えた完全なTCL言語を使用できます。
- システムアクセス:ファイルI/O、システムコマンド、ネットワーク操作が可能です。
- 強力:高度なスクリプト機能とシステム統合が可能です。
- リスクあり:信頼できる環境と注意深い入力検証が必要です。
- ドキュメント:公式TCLドキュメント
🔧 技術詳細
🔒 安全を第一に
- 制限モード(デフォルト):制限されたコマンドで安全なTCL実行を行います。
- 特権モード:高度なユースケースでの完全なTCLアクセスを提供します。
- ランタイム選択:安全な(Molt)と完全な(TCL)実装の間で選択できます。
🛠️ MCP管理
tcl-mcp-server mcp add claude-flow "Claude Flow" -- npx claude-flow@alpha mcp start
tcl-mcp-server mcp list
tcl-mcp-server mcp ping claude-flow
📦 ツールの整理
ツールは、MCP互換の命名規則を持つ名前空間システムを使用して整理されます。
bin__tcl_execute
- TCLスクリプトを実行します。
user__alice__utils__reverse_string
- ユーザーが作成したツールです。
mcp__context7__get_library_docs
- 外部のMCPサーバーツールです。
💻 使用例
サーバーの実行
デフォルト(読み取り専用モード)
tcl-mcp-server
特権モード(スクリプトの保存/格納)
tcl-mcp-server --privileged
tcl-mcp-server-admin
必須コマンド
tcl-mcp-server run tcl_execute '{"script": "expr {2 + 2}"}'
tcl-mcp-server list
tcl-mcp-server info tcl_execute
tcl-mcp-server mcp add my-server "My Server" -- node server.js
tcl-mcp-server mcp remove my-server
MCPクライアントの統合
Claude Desktop
{
"mcpServers": {
"tcl": {
"command": "/path/to/tcl-mcp-server",
"args": ["--runtime", "molt", "--privileged"]
}
}
}
Claude Code
claude mcp add tcl /path/to/tcl-mcp-server
📚 ドキュメント
組み込みツール
コアツール(常に利用可能)
bin__tcl_execute
- TCLスクリプトを実行します。
{
"script": "set x 5; set y 10; expr {$x + $y}"
}
bin__list_tools
- 利用可能なツールをリスト表示します。
{
"namespace": "user",
"filter": "utils*"
}
docs__molt_book
- TCLドキュメントにアクセスします。
{
"topic": "basic_syntax"
}
管理ツール(特権モードのみ)
sbin__tcl_tool_add
- カスタムツールを作成します。
{
"user": "alice",
"package": "utils",
"name": "reverse_string",
"version": "1.0",
"description": "文字列を反転する",
"script": "return [string reverse $text]",
"parameters": [
{
"name": "text",
"description": "反転するテキスト",
"required": true,
"type_name": "string"
}
]
}
sbin__mcp_add
- プログラムでMCPサーバーを追加します。
{
"id": "context7",
"name": "Context7 Server",
"command": "npx",
"args": ["@modelcontextprotocol/server-everything"],
"auto_start": true
}
コンパイルとランタイム設定
ビルドオプション
サーバーは、コンパイル時に選択する必要がある2つのTCLランタイム実装をサポートしています。
デフォルトビルド(Moltランタイム - 安全)
cargo build --release
./target/release/tcl-mcp-server
TCLランタイムでビルド(完全だが不安全)
cargo build --release --no-default-features --features tcl
./target/release/tcl-mcp-server
両方のランタイムでビルド
cargo build --release --features molt,tcl
./target/release/tcl-mcp-server --runtime molt
./target/release/tcl-mcp-server --runtime tcl
ランタイム選択(複数ランタイムビルド)
複数のランタイムでビルドされた場合、起動時に選択できます。
tcl-mcp-server --runtime molt
tcl-mcp-server --runtime tcl
export TCL_MCP_RUNTIME=molt
tcl-mcp-server
システム要件
Moltランタイム(デフォルト)の場合
- Rustツールチェーンのみ
- 外部依存関係なし
- すべてのプラットフォームで動作
TCLランタイムの場合
事前ビルド済みラッパースクリプト
ビルドプロセスで自動的に便利なラッパーが生成されます。
./target/release/tcl-mcp-server-admin
./target/release/tcl-mcp-server-molt
./target/release/tcl-mcp-server-admin-molt
./target/release/tcl-mcp-server-ctcl
./target/release/tcl-mcp-server-admin-ctcl
MCPサーバーの管理
サーバーの追加
tcl-mcp-server mcp add my-server "My Server" -- node server.js
tcl-mcp-server mcp add my-server "My Server" \
--env "NODE_ENV=production" \
--env "API_KEY=secret" \
-- node server.js
tcl-mcp-server mcp add my-server "My Server" \
--timeout-ms 60000 \
--max-retries 5 \
-- node server.js
サーバー情報
tcl-mcp-server mcp list
tcl-mcp-server mcp list --detailed
tcl-mcp-server mcp info my-server
接続管理
tcl-mcp-server mcp connect my-server
tcl-mcp-server mcp ping my-server
tcl-mcp-server mcp disconnect my-server
tcl-mcp-server mcp remove my-server
セキュリティモデル
デフォルトのセキュリティ(推奨)
- 制限モード:必須のツールのみが利用可能です。
- Moltランタイム:メモリ安全でサンドボックス化された実行環境(Moltドキュメントを参照)。
- ファイルI/Oなし:不正なファイルアクセスを防止します。
- システムコマンドなし:システムレベルの操作をブロックします。
特権モード
⚠️ 注意して使用してください
- 完全なTCL言語へのアクセスが可能です。
- ツール管理機能があります。
- システムレベルの操作が可能です(特にTCLランタイムの場合)。
- 信頼できる環境でのみ推奨されます。
- TCLランタイムを使用する場合:完全なシステムアクセスが可能です(TCLドキュメントを参照)。
アーキテクチャ
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ AI Agent ├────►│ MCP Server ├────►│TCL Executor │
│ (Claude) │ │ (JSON-RPC) │ │ (Molt) │
└─────────────┘ └──────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ MCP Manager │
│ (External │
│ Servers) │
└─────────────┘
高度な使用方法
カスタムツールの作成
- ツールを追加(特権モードが必要)
tcl-mcp-server run sbin__tcl_tool_add '{
"user": "dev",
"package": "math",
"name": "fibonacci",
"version": "1.0",
"description": "フィボナッチ数を計算する",
"script": "proc fib {n} { if {$n <= 1} {return $n} else {return [expr {[fib [expr {$n-1}]] + [fib [expr {$n-2}]]}]} }; return [fib $n]",
"parameters": [
{
"name": "n",
"description": "フィボナッチ数を計算する数",
"required": true,
"type_name": "integer"
}
]
}'
- ツールを使用
tcl-mcp-server run user__dev__math__fibonacci '{"n": 10}'
ランタイム機能の検出
インテリジェントなコード生成のためにランタイム機能をクエリします。
tcl-mcp-server run tcl_runtime_info '{
"include_examples": true,
"category_filter": "safe"
}'
ランタイム機能比較
機能 |
Moltランタイム |
TCLランタイム |
メモリ安全性 |
✅ Rustベースでメモリ安全 |
⚠️ Cベースで手動メモリ管理 |
ファイルI/O |
❌ セキュリティ上の理由でブロック |
✅ 完全なファイル操作 |
システムコマンド |
❌ exec やシステム呼び出しなし |
✅ 完全なシステム統合 |
ネットワーキング |
❌ ソケット操作なし |
✅ 完全なネットワーク機能 |
パフォーマンス |
⚡ 高速起動、低オーバーヘッド |
🐌 起動が遅く、メモリ使用量が多い |
互換性 |
📚 核心的なTCLサブセット |
🔧 完全なTCL言語 + 拡張機能 |
ユースケース |
データ処理、アルゴリズム、安全なスクリプト |
システム管理、複雑なアプリケーション |
ドキュメント |
Molt Book |
TCLドキュメント |
コンテナデプロイメント
FROM rust:1.70 as builder
WORKDIR /app
COPY . .
RUN cargo build --release
FROM debian:bookworm-slim
COPY --from=builder /app/target/release/tcl-mcp-server /usr/bin/
COPY --from=builder /app/target/release/tcl-mcp-server-admin /usr/bin/
CMD ["/usr/bin/tcl-mcp-server"]
テスト
./scripts/run_mcp_tests.sh
python3 tests/test_bin_exec_tool_mcp.py
データストレージ
サーバーの設定は、プラットフォームに適した場所に保存されます。
- Linux:
~/.local/share/tcl-mcp-server/
- macOS:
~/Library/Application Support/tcl-mcp-server/
- Windows:
%APPDATA%\tcl-mcp-server\
トラブルシューティング
一般的な問題
サーバーが起動しない場合
tcl-mcp-server --runtime molt --privileged
RUST_LOG=debug tcl-mcp-server
MCPサーバーの接続が失敗する場合
tcl-mcp-server mcp ping server-id
TCL_MCP_DEBUG_STDERR=1 tcl-mcp-server
ツールが見つからない場合
tcl-mcp-server list
tcl-mcp-server list --namespace user
コントリビュート
- リポジトリをフォークします。
- 機能ブランチを作成します。
- 新機能のテストを追加します。
- すべてのテストが通過することを確認します。
- プルリクエストを送信します。
📄 ライセンス
MITライセンス - 詳細についてはLICENSEファイルを参照してください。