一个模型上下文协议(MCP)服务器,使AI代理能够执行TCL脚本并管理MCP工具生态系统。该服务器在设计时考虑了安全性和开发者体验。
# 安装并运行(使用Molt运行时的安全模式)
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运行时构建(需要系统TCL安装)
# cargo build --release --features tcl
选择两种TCL运行时实现之一:
# 添加外部MCP服务器
tcl-mcp-server mcp add claude-flow "Claude Flow" -- npx claude-flow@alpha mcp start
# 列出所有服务器
tcl-mcp-server mcp list
# 测试连接性
t
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
tcl-mcp-server run tcl_execute '{"script": "expr {2 + 2}"}'
# 列出可用工具
tcl-mcp-server list
# 获取工具信息
tcl-mcp-server info tcl_execute
# 管理MCP服务器
tcl-mcp-server mcp add my-server "My Server" -- node server.js
tcl-mcp-server mcp remove my-server
Claude桌面
{
"mcpServers": {
"tcl": {
"command": "/path/to/tcl-mcp-server",
"args": ["--runtime", "molt", "--privileged"]
}
}
}
Claude代码
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
}
服务器支持两种TCL运行时实现,必须在编译时选择:
# 仅使用Molt运行时构建(推荐)
cargo build --release
# 生成的二进制文件默认使用Molt
./target/release/tcl-mcp-server
# 使用完整TCL运行时构建(需要系统TCL安装)
cargo build --release --no-default-features --features tcl
# 生成的二进制文件使用完整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 # 安全:Molt运行时
tcl-mcp-server --runtime tcl # 不安全:完整TCL运行时
# 环境变量
export TCL_MCP_RUNTIME=molt
tcl-mcp-server
# 优先级:CLI参数 > 环境变量 > 默认(Molt)
对于Molt运行时(默认):
对于TCL运行时:
# Ubuntu/Debian
sudo apt-get install tcl-dev
# macOS
brew install tcl-tk
# Windows
# 从 https://www.tcl-lang.org/software/tcltk/ 安装TCL
构建过程会自动生成便利的包装脚本:
# 构建过程中生成
./target/release/tcl-mcp-server-admin # 特权模式
./target/release/tcl-mcp-server-molt # 强制使用Molt运行时
./target/release/tcl-mcp-server-admin-molt # 特权 + Molt
./target/release/tcl-mcp-server-ctcl # 强制使用TCL运行时
./target/release/tcl-mcp-server-admin-ctcl # 特权 + TCL
# 基本服务器
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
⚠️ 谨慎使用
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ AI代理 ├────►│ MCP服务器 ├────►│TCL执行器 │
│ (Claude) │ │ (JSON-RPC) │ │ (Molt) │
└─────────────┘ └──────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ MCP管理器 │
│ (外部 │
│ 服务器) │
└─────────────┘
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手册 | 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
服务器配置存储在适合各平台的位置:
~/.local/share/tcl-mcp-server/~/Library/Application Support/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文件