苹果容器MCP服务器
这 苹果容器MCP服务器 是模型上下文协议(MCP)和苹果开源之间的桥梁 container CLI。它使开发人员能够通过LLM接口(如Claude、Cursor、Antigravity和VSCode)使用自然语言无缝管理轻量级macOS原生容器。
通过充当MCP服务器,此工具抽象了特定CLI标志、网络挂载和系统级配置的复杂性,让LLM代表您检查、分析和自动运行macOS容器工作流。
______________________________________________________________________
🚀 先决条件
- Python 3.11+ 安装在您的机器上。
uv包管理器:用于快速环境设置和执行。
brew install uv- 苹果容器命令行界面:由苹果的虚拟化框架提供。 需要v0.12.0或更高版本。 通过Homebrew安装,然后启动系统服务:
brew install container
container system start______________________________________________________________________
📥 安装和设置
安装和运行Apple Container MCP服务器有两种选择:使用 uvx 直接从GitHub运行它(推荐),或克隆存储库在本地运行它。
这两种方法都需要将服务器添加到您首选的MCP客户端的配置文件中。
选项A:通过直接执行 uvx (推荐)
这种方法不需要克隆存储库。 uvx 将自动获取、沙盒并运行最新版本的服务器。确保你有 uv 已安装(brew install uv).
选项B:克隆和本地环境
如果您想在本地检查或修改代码,请使用此方法。
git clone https://github.com/joeshirey/AppleContainerMCP.git
cd AppleContainerMCP*注意:对于选项B,您必须替换 /path/to/uv 与你的实际 uv 路径(例如。 /opt/homebrew/bin/uv)以及 /absolute/path/to/AppleContainerMCP 使用您克隆到的目录。*
______________________________________________________________________
按工具配置
以下是将MCP服务器添加到主要LLM工具的具体说明。使用 选项A 或 选项B 片段。
1.反重力(谷歌)
*(有关完整详细信息,请参阅 反重力MCP安装和配置文档 或谷歌内部文档)。*
打开全局MCP设置文件(通常 ~/.gemini/settings.json)并添加:
选项A(uvx):
{
"mcpServers": {
"apple-container-mcp": {
"command": "/usr/bin/env",
"args": [
"FASTMCP_SHOW_SERVER_BANNER=false",
"uvx",
"--from",
"git+https://github.com/joeshirey/AppleContainerMCP.git",
"apple-container-mcp"
]
}
}
}选项B(克隆):
{
"mcpServers": {
"apple-container-mcp": {
"command": "/usr/bin/env",
"args": [
"FASTMCP_SHOW_SERVER_BANNER=false",
"/path/to/uv",
"--directory",
"/absolute/path/to/AppleContainerMCP",
"run",
"--quiet",
"apple-container-mcp"
]
}
}
}2.光标
*(见 光标MCP文档 更多信息)。*
- 打开光标设置->功能->MCP
- 点击 +添加新的MCP服务器
- 选择 命令 类型。
- 名称:
apple-container - 命令:
- 选项A(uvx): /usr/bin/env FASTMCP_SHOW_SERVER_BANNER=false uvx --from git+https://github.com/joeshirey/AppleContainerMCP.git apple-container-mcp - 选项B(克隆): /usr/bin/env FASTMCP_SHOW_SERVER_BANNER=false /path/to/uv run --directory /absolute/path/to/AppleContainerMCP --quiet apple-container-mcp
3.克劳德桌面
*(见 MCP官方快速入门 有关完整的设置说明)。*
打开Claude Desktop配置文件(~/Library/Application Support/Claude/claude_desktop_config.json)并添加:
选项A(uvx):
{
"mcpServers": {
"apple-container-mcp": {
"command": "/usr/bin/env",
"args": [
"FASTMCP_SHOW_SERVER_BANNER=false",
"uvx",
"--from",
"git+https://github.com/joeshirey/AppleContainerMCP.git",
"apple-container-mcp"
]
}
}
}选项B(克隆):
{
"mcpServers": {
"apple-container-mcp": {
"command": "/usr/bin/env",
"args": [
"FASTMCP_SHOW_SERVER_BANNER=false",
"/path/to/uv",
"--directory",
"/absolute/path/to/AppleContainerMCP",
"run",
"--quiet",
"apple-container-mcp"
]
}
}
}*(更新后重新启动Claude Desktop)。*
4.VSCode(通过Cline/RooCode)
*(见 临床MCP文档 更多细节)。*
打开扩展MCP设置文件(例如。, ~/.vscode/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json)并添加:
选项A(uvx):
{
"mcpServers": {
"apple-container": {
"command": "/usr/bin/env",
"args": [
"FASTMCP_SHOW_SERVER_BANNER=false",
"uvx",
"--from",
"git+https://github.com/joeshirey/AppleContainerMCP.git",
"apple-container-mcp"
]
}
}
}选项B(克隆):
{
"mcpServers": {
"apple-container": {
"command": "/usr/bin/env",
"args": [
"FASTMCP_SHOW_SERVER_BANNER=false",
"/path/to/uv",
"--directory",
"/absolute/path/to/AppleContainerMCP",
"run",
"--quiet",
"apple-container-mcp"
]
}
}
}5.Gemini CLI
*(见 Gemini CLI文档 有关设置详细信息)。*
打开Gemini CLI设置文件(通常 ~/.gemini/settings.json)并添加:
选项A(uvx):
{
"mcpServers": {
"apple-container-mcp": {
"command": "/usr/bin/env",
"args": [
"FASTMCP_SHOW_SERVER_BANNER=false",
"uvx",
"--from",
"git+https://github.com/joeshirey/AppleContainerMCP.git",
"apple-container-mcp"
]
}
}
}选项B(克隆):
{
"mcpServers": {
"apple-container-mcp": {
"command": "/usr/bin/env",
"args": [
"FASTMCP_SHOW_SERVER_BANNER=false",
"/path/to/uv",
"--directory",
"/absolute/path/to/AppleContainerMCP",
"run",
"--quiet",
"apple-container-mcp"
]
}
}
}______________________________________________________________________
💬 10个自然语言提示示例
在LLM客户端中配置MCP服务器后,您可以使用自然语言来管理Mac容器,而无需手动键入命令。尝试以下提示:
- “你能检查我的苹果容器系统服务当前是否正在运行吗?”
- “列出我当前在本地下载的所有图像。”
- “运行一个带有2个CPU和4GB内存的新的分离式Debian容器。”
- “我的机器上当前正在运行哪些容器?”
- “请拉最新的
nginx图像给我” - 启动一个名为“web测试”的Ubuntu容器,暴露端口8080:80,并设置ENV变量FOO=bar
- “停止ID为的容器
abc12345安全。如果它挂了,就强行杀死它。” - “你能从我的‘网络测试’容器中获取最后50行日志吗?”
- “我需要从当前目录中的Dockerfile构建一个映像,并将其标记为‘my app:v1’。”
- “通过移除所有停止的容器来清理我的环境。”
______________________________________________________________________
🛠 主动能力
暴露的工具
- 系统:
check_apiserver_status,start_system,stop_system,system_status,system_version - 容器:
run_container(支持--init-image、rosetta、平台、标签等),list_containers,start_container,stop_container,remove_container,export_container,inspect_container,exec_in_container,get_logs,prune_containers,stats_container - 图像:
list_images,pull_image,build_image,check_build_status,list_builds,tag_image,push_image,inspect_image,remove_image,prune_images - 网络:
create_network,remove_network,list_networks,inspect_network,prune_networks - 卷:
create_volume,remove_volume,list_volumes,inspect_volume,prune_volumes - 注册表:
registry_login,registry_logout - 建造者:
builder_start,builder_stop,builder_status
提示已暴露
troubleshoot_container:检查和调试故障容器的指导工作流程。build_and_run_workflow:从本地项目构建映像并运行它的分步指南。cleanup_environment:安全地检查和修剪已停止的容器、未使用的映像、卷和网络。setup_private_registry:通过私有容器注册表进行身份验证。
暴露的资源
- 系统状态:
apple-container://system/status
______________________________________________________________________
🔒 安全模型
此服务器应用了几个有意的限制来保证LLM驱动的容器操作的安全:
- 路径验证:
build_imagescontext_path和run_containersenv_file仅限于主目录中的路径。支票使用os.path.realpath以及尾部分隔符后缀测试,以防止前缀匹配绕过(例如。/Users/joe对比/Users/joey). - 参数阻止列表:
run_containersargs_override参数拒绝提升权限、削弱隔离或暴露主机凭据的标志:--privileged,--cap-add,--cap-drop,--security-opt,--device,--pid,--ipc,--userns,--cgroupns,--no-new-privileges,--kernel/-k,--ssh. - Linux功能(苹果容器0.12+): 容器0.12已升级
--cap-add/--cap-drop有记录的公共旗帜。 此MCP故意不将它们作为工具参数公开。 能力选择有意义地削弱了过程隔离;如果你需要它,调用container run直接。我们可能会在未来的版本中重新审视这一点,并采用异体机制。 --kernel和--ssh此 路 不通:--kernel(其将任意主机文件系统路径作为客户内核加载)是特权升级向量;--ssh(将主机SSH代理套接字转发到容器中)是凭证泄漏向量。两者都被阻止args_override.- 无外壳注射:
subprocess.run总是用参数列表调用,从不用shell=True. - 凭证处理:
registry_login通过传递密码stdin(--password-stdin)因此,它从未出现在过程论证中。
