一个简单的命令行程序,用于运行大语言模型提示并实现 Model Context Protocol (MCP) 客户端。
您可以在终端的便利性下使用任何 与MCP兼容的服务器。
这作为Claude Desktop之外的替代客户端。此外,您可以使用任何大语言模型提供商,如OpenAI、Groq或通过llama的本地大语言模型。

使用pip安装:
pip install mcp-client-cli
创建一个 ~/.llm/config.json 文件来配置您的大语言模型和MCP服务器:
{
"systemPrompt": "您是一个帮助软件工程师的人工智能助手...",
"llm": {
"provider": "openai",
"model": "gpt-4",
"api_key": "your-openai-api-key",
"temperature": 0.7,
"base_url": "https://api.openai.com/v1" // 可选,对于OpenRouter或其他提供商
},
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"],
"requires_confirmation": ["fetch"],
"enabled": true, // 可选,默认为true
"exclude_tools": [] // 可选,要排除的工具名称列表
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your-brave-api-key"
},
"requires_confirmation": ["brave_web_search"]
},
"youtube": {
"command": "uvx",
"args": ["--from", "git+https://github.com/adhikasp/mcp-youtube", "mcp-youtube"]
}
}
}
注意事项:
requires_confirmation 来指定哪些工具在执行前需要用户确认LLM_API_KEY 或 OPENAI_API_KEY 设置~/.llm/config.json 或 $PWD/.llm/config.json// 注释运行CLI:
llm "北苏门答腊省的首府是什么?"
$ llm 北苏门答腊省的首府是什么?
北苏门答腊省的首府是棉兰。
您可以省略引号,但要注意像 &, |, ; 这样的bash特殊字符可能会被shell解释。
您还可以从其他命令或文件中传递输入:
$ echo "北苏门答腊省的首府是什么?" | llm
北苏门答腊省的首府是棉兰。
$ echo "给定一个地点,请告诉我它的首府。" > 指令.txt
$ cat 指令.txt | llm 西爪哇
西爪哇的首府是万隆。
您可以传递图像文件以使用多模态大语言模型进行分析:
$ cat 图片.jpg | llm "你在图片中看到了什么?"
[大语言模型将分析并描述图片]
$ cat 截图.png | llm "截图中有错误吗?"
[大语言模型将分析截图并指出任何错误]
您可以使用预定义的提示模板,方法是在模板名称及其参数之前加上 p 前缀:
# 列出可用的提示模板
$ llm --list-prompts
# 使用一个模板
$ llm p review # 审查git更改
$ llm p commit # 生成提交信息
$ llm p yt url=https://youtube.com/... # 概述YouTube视频
$ llm 今天黑客新闻上的头条文章是什么?
================================== Ai 消息 ==================================
工具调用:
brave_web_search (call_eXmFQizLUp8TKBgPtgFo71et)
调用ID:call_eXmFQizLUp8TKBgPtgFo71et
参数:
查询:site:news.ycombinator.com
数量:1
Brave 搜索 MCP 服务器正在标准输入输出上运行
# 如果工具需要确认,您将被提示:
确认工具调用? [y/n]:y
================================== Ai 消息 ==================================
工具调用:
fetch (call_xH32S0QKqMfudgN1ZGV6vH1P)
调用ID:call_xH32S0QKqMfudgN1ZGV6vH1P
参数:
URL:https://news.ycombinator.com/
================================= 工具消息 =================================
名称:fetch
[TextContent(type='text', text='内容 [已删除]]
================================== Ai 消息 ==================================
今天黑客新闻上的头条文章是:
### [为什么管道有时会“卡住”:缓冲](https://jvns.ca)
- **得分:** 31
- **发布者:** tanelpoder
- **发布时间:** 1小时前
您可以在[Hacker News](https://news.ycombinator.com/)查看全部文章列表
要绕过工具确认要求,使用 --no-confirmations 标志:
$ llm --no-confirmations "今天黑客新闻上的头条文章是什么?"
要在bash脚本中使用,添加 --no-intermediates,这样它不会打印中间消息,只打印最终消息。
$ llm --no-intermediates "现在东京的时间是什么?"
在您的消息前加上 c 前缀以继续上次对话。
$ llm asldkfjasdfkl
看起来您的消息可能是打字错误或错误。能否请您澄清或提供更多关于您需要帮助的信息?
$ llm c 我之前说了什么?
您之前输入了 "asldkfjasdfkl",这似乎是一串随机字符。如果您有具体的问题或疑问,请告诉我!
您可以使用剪贴板中的内容,使用 cb 命令:
# 在复制文本到剪贴板后
$ llm cb
[大语言模型将处理剪贴板文本]
$ llm cb "这段代码是什么语言写的?"
[大语言模型将分析剪贴板文本并回答问题]
# 在复制图像到剪贴板后
$ llm cb "你在图片中看到了什么?"
[大语言模型将分析剪贴板中的图片]
# 您可以结合续谈
$ llm cb c "告诉我更多你看到的内容"
[大语言模型将继续讨论剪贴板内容]
剪贴板功能适用于:
pbpaste 处理文本,pngpaste 处理图片(可选)xclip(需要剪贴板支持)powershell.exe剪贴板支持所需工具:
pbpaste(内置)处理文本pngpaste(可选)处理图片:brew install pngpastexclip:sudo apt install xclip 或等效命令CLI自动检测剪贴板内容是文本还是图片,并适当处理。
$ llm --list-tools # 列出所有可用工具
$ llm --list-prompts # 列出可用的提示模板
$ llm --no-tools # 不使用任何工具运行
$ llm --force-refresh # 强制刷新工具能力缓存
$ llm --text-only # 输出纯文本,不带markdown格式
$ llm --show-memories # 显示用户记忆
$ llm --model gpt-4 # 覆盖配置中指定的模型
欢迎提交问题和拉取请求以改进或修复错误。