🚀 TCL MCP 服务器
TCL MCP 服务器是一个模型上下文协议(MCP)服务器,它使 AI 代理能够执行 TCL 脚本并管理 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 上运行。
🔧 运行时选项
可以在两种 TCL 运行时实现之间进行选择:
🔒 Molt 运行时(默认 - 安全)
- 内存安全:用 Rust 编写,具有内置的安全保证。
- 沙盒化:无文件 I/O、无系统命令、无网络访问。
- 子集功能:具备用于数据处理和算法的核心 TCL 功能。
- 推荐使用:适用于生产环境和不可信环境。
- 文档:Molt TCL 手册
⚠️ TCL 运行时(完整 - 不安全)
- 完整功能:具备完整的 TCL 语言特性。
- 系统访问:支持文件 I/O、系统命令和网络操作。
- 功能强大:具有高级脚本功能和系统集成能力。
- 存在风险:需要可信环境并仔细验证输入。
- 文档:官方 TCL 文档
💻 使用示例
基础用法
运行服务器
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
高级用法
创建自定义工具
tcl-mcp-server run sbin__tcl_tool_add '{
"user": "dev",
"package": "math",
"name": "fibonacci",
"version": "1.0",
"description": "Calculate Fibonacci number",
"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": "Number to calculate Fibonacci for",
"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"
}'
📚 详细文档
内置工具
核心工具(始终可用)
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": "Reverse a string",
"script": "return [string reverse $text]",
"parameters": [
{
"name": "text",
"description": "Text to reverse",
"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
./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 运行时:
- 需要系统安装 TCL(8.6+)
- 编译时需要开发头文件
- 特定平台设置:
sudo apt-get install tcl-dev
brew install tcl-tk
预构建包装脚本
构建过程会自动生成便捷包装器:
./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) │
└─────────────┘
高级用法
容器部署
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 文件。