关于 LivebookTools
LivebookTools 是用于 livebook.dev 的命令行工具,可将 .livemd 文件同步到打开的 Livebook 会话,也可将其转换为 Elixir 脚本运行。它面向 Elixir 和 Livebook 用户,并支持让 AI 编码 Agent 连接 Livebook 会话。
主要功能
- 01将 .livemd 文件同步到 Livebook 会话进行编辑
- 02通过 STDIO 运行的 MCP 服务
- 03将 Livebook 转换为 Elixir 脚本并从命令行运行
- 04通过分布式 Elixir 连接正在运行的 Livebook 服务
适用场景
- 01在 Cursor 等 AI 代码编辑器中编辑 Livebook 文件
- 02让编码 Agent 访问并操作 Livebook 会话
- 03将 Livebook 作为定时任务从命令行运行
MCP 相关
该项目包含一个 MCP 服务,通过 STDIO 运行,使 AI 编码 Agent 能够连接到 Livebook 会话。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
LivebookTools
Livebook Tools 是一款 CLI 工具,可让你在处理 .livemd 文件时如虎添翼。
其主要功能包括:
- BYOE(自带编辑器) - 将
.livemd文件同步到已打开的 Livebook 会话,这样你就可以在 Cursor 等 AI 驱动的代码编辑器中编辑这些文件。 - MCP 服务 - 一个简单的模型上下文协议服务,可将 AI 编码 Agent 连接到你的 Livebook 会话。下文将详细介绍。
- 从 CLI 运行 Livebook - 将
.livemd文件转换为 Elixir 脚本,并像.exs脚本一样从上到下运行。如果你想将 Livebook 转为 cron 作业,这会很有用。
安装
Livebook Tools 是一个 Elixir escript。
你可以使用 mix escript.install 命令安装。
mix escript.install github thmsmlr/livebook_tools
安装后,请确保 escript 目录位于你的路径中。
# for normal elixir users
export PATH="$HOME/.mix/escripts:$PATH"
# for asdf elixir users
for escripts_dir in $(find "${ASDF_DATA_DIR:-$HOME/.asdf}/installs/elixir" -type d -name "escripts" 2>/dev/null); do
export PATH="$escripts_dir:$PATH"
done
运行 Livebook
为了让 Livebook Tools 正常工作,它需要使用分布式 Elixir 连接到正在运行的 Livebook 服务。
具体操作取决于你运行 Livebook 的方式。
最简单的做法是在 ~/.bashrc 或 ~/.zshrc 文件中添加这两个环境变量。
export LIVEBOOK_NODE="[email protected]"
export LIVEBOOK_COOKIE="secret"
之后,无论运行 Livebook Tools 还是 Livebook,这两个程序都会读取这些值,并确保彼此能够连接。
如果你使用 Livebook Desktop 运行,则可能还需要将这些值添加到 ~/.livebookdesktop.sh 文件中。
有关 Livebook Desktop 的更多信息,请查看 Livebook HexDocs。
设置 MCP 服务
MCP 服务是一个简单的模型上下文协议服务,可将 AI 编码 Agent 连接到你的 Livebook 会话。
我亲自使用 Cursor 测试过此实现,不过它应该也适用于任何支持 MCP 协议的 AI 代码编辑器。
MCP 服务通过 STDIO 运行,因此你只需告诉 Cursor 使用该命令进行连接,它便会自动发现工具并将其连接到自己的编码 Agent。
有关 Cursor 如何使用 MCP 的更多信息,请查看 Cursor MCP 文档。

实用技巧
有时你可能想自定义代码的运行方式,无论它是在 Livebook 中运行,还是通过命令行使用 livebook_tools run <file> 运行。
有一些简单的代码片段可用于检测代码是在 Livebook 中运行还是在命令行中运行,
# Detect if we're running in a livebook
is_livebook = !String.ends_with?(__ENV__.file, ".exs")
# If we're running in a livebook, argv doesn't really make sense, so we'll just return an empty list
argv = if is_livebook, do: [], else: System.argv()
# Parse command line arguments
# We'll use OptionParser to handle both flags and positional arguments
{parsed_opts, positional_args, invalid_opts} =
OptionParser.parse(
argv,
strict: [
dry_run: :boolean,
limit: :integer
],
aliases: [
d: :dry_run,
l: :limit
]
)
# Extract options with default values, in livebook it'll just use the default values
dry_run = Keyword.get(parsed_opts, :dry_run, false)
limit = Keyword.get(parsed_opts, :limit, 10)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。