mcp-client-cli
在终端里调用 AI Agent 的 MCP 客户端,支持工具调用、图片分析和对话记忆
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在终端里调用 AI Agent 的 MCP 客户端,支持工具调用、图片分析和对话记忆
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有遇到过这样的场景:正在 terminal 里处理一堆文件,突然想问问 AI 某个错误日志的含义,或者想用 AI 搜索一下 Hacker News 的热门文章,却不想切换到 Claude Desktop 或者打开浏览器?MCP CLI Client 正是为这类需求而生的。
这是一款由独立开发者 Adhika Setya Pramudita 构建的开源工具,它将 Model Context Protocol(MCP)的生态与轻量级命令行界面结合,让 AI Agent 的工具调用能力直接在终端触手可及。
Model Context Protocol 是 Anthropic 在 2024 年底推出的开放协议,旨在标准化大语言模型与外部工具/数据源之间的通信方式。你可以把它理解为 AI 世界的 USB 接口——只要设备支持 MCP,就能无缝接入各种 MCP-compatible 服务器(搜索、文件获取、数据库查询等),无需为每个 LLM 提供商单独适配。
然而目前大多数 MCP 客户端(如 Claude Desktop)都是 GUI 应用,对于习惯在终端工作的开发者来说,频繁切换界面是一种不必要的摩擦。MCP CLI Client 的出现填补了这个空白:它让你在 bash/zsh 环境中直接调用 AI,并通过 MCP 服务器访问真实世界的工具。
如果把 AI LLM 比作一位知识渊博但行动受限的顾问,MCP 协议就是赋予这位顾问手脚的神经系统,而 MCP CLI Client 则是让这整套能力在你终端里运行的驱动程序。就像 VS Code 的 DevContainer 让你不用手动配置开发环境一样,这个工具让你"开箱即用"地获得 AI Agent 能力。
项目基于 LangChain 的 multimodal 能力,支持图片输入管道(image piping)。用户可以直接将截图或照片通过管道符 | 传给 LLM 分析:
$ cat screenshot.png | llm "Is there any error in this screenshot?"
这对开发者调试日志截图、UI 问题排查特别有用——无需截图上传到 GUI,直接在终端搞定。
这是 MCP CLI Client 最核心的价值。它内置了对 MCP 协议客户端的支持,通过配置文件 ~/.llm/config.json 定义要连接的 MCP 服务器,即可让 LLM 调用真实世界的工具。例如配置 Brave Search 服务器后,AI 就能实时搜索网页:
$ llm "What is the top article on hackernews today?"
# AI 自动调用 brave_web_search 工具
# 获取 Hacker News 热门文章并总结
工具调用前可以设置 requires_confirmation,需要用户手动确认后才执行,防止 AI 误操作风险。
内置的 prompt 模板系统支持预设指令,开发者可以定义自己的模板并在命令行中调用:
$ llm p review # Git 代码审查
$ llm p commit # 自动生成 commit message
$ llm p yt url=https://youtube.com/... # YouTube 视频摘要
支持从系统剪贴板读取文本或图片内容:
$ llm cb "What language is this code?" # 分析剪贴板代码
$ llm cb "What do you see in this image?" # 分析剪贴板图片
覆盖了 Windows (PowerShell)、macOS (pbpaste/pngpaste)、Linux (xclip) 以及 WSL 环境。
内置 SQLite + 向量搜索持久化记忆机制,通过 save_memory 工具保存用户偏好的上下文,下次对话自动加载。c 前缀用于继续上一轮对话:
$ llm c "Tell me more about what you see"
配置文件中可指定 OpenAI、Anthropic、Google GenAI 等提供商,也可通过 base_url 接入 OpenRouter 等兼容 OpenAI API 格式的第三方服务。甚至支持本地 LLM(通过 llama.cpp),实现完全本地化的 AI 终端体验。
代码核心是 cli.py 中的 AgentState 类和 LangGraph 的 create_react_agent 工厂函数。AgentState 维护对话消息历史、is_last_step 标志(控制对话轮次上限,默认 5 步)、以及记忆数据。ReAct(Reason + Act)模式让 AI 在每轮对话中交替进行推理和工具调用,直到得出答案或达到步数上限。
tool.py 中的 McpToolkit 类是 MCP 协议的核心实现。它在启动时通过 stdio_client 以标准输入/输出方式连接到 MCP 服务器(通过 npx / uvx 等命令启动),动态获取服务器暴露的工具列表,将其转换为 LangChain 的 BaseTool 对象,最后注册到 Agent 的工具集中。这一切都在异步上下文中完成,使用 asyncio.Lock 保证并发安全。
memory.py 实现了基于 SQLite 的 SqliteStore,继承 LangGraph 的 BaseStore 接口。底层使用 aiosqlite 实现异步读写,命名空间设计为 ("memories", user_id) 的二元组结构,配合向量搜索(需要外部 embedding 模型)实现语义记忆检索。这为 AI 提供了跨会话的上下文连续性。
input.py 封装了跨平台的剪贴板读取逻辑,PowerShell(Windows/WSL)和原生命令(macOS/Linux)各有实现路径。output.py 则使用 rich 库提供实时渲染的 Markdown 输出,通过 Live 对象实现流式输出的视觉效果,让 AI 的思考过程和中间结果在终端实时可见。
项目采用标准的 Python 3.12+ 类型注解体系,Pydantic v2 数据模型验证配置结构,整体代码风格清晰、模块边界明确。依赖管理使用 Hatch 构建系统,pyproject.toml 中声明了所有外部依赖(langchain、langgraph、mcp-python-sdk、rich 等)。缺陷方面:目前没有配套的测试套件(.github/workflows/test.yml 存在但可能未完善),文档质量较高(README + CONFIG.md + AGENTS.md 三件套),代码可维护性良好但测试覆盖率有待提升。
配置复杂度:虽然 pip 安装极简,但 ~/.llm/config.json 的 JSON 配置对非技术用户仍有一定门槛,MCP 服务器的安装(如 uvx mcp-server-fetch)还需要额外依赖。
无 Docker 支持:项目完全面向本地 Python 环境,对习惯容器化部署的用户不友好,也不支持快速部署场景。
MCP 服务器生态碎片化:MCP 协议仍处于快速发展期,服务器质量参差不齐,部分服务器需要申请 API Key(Brave Search 等),增加了实际使用成本。
安全边界:AI 通过 MCP 工具执行真实命令(如运行脚本),即使有 requires_confirmation 机制,在脚本自动化场景中仍需谨慎。
MCP CLI Client 代表了 AI 工具的一个新兴方向——终端原生 AI Agent。随着 LLM 推理能力的提升和 MCP 生态的成熟,类似的 CLI 工具将成为开发者日常工作的标配。它的出现印证了三个趋势:AI 能力从 GUI 向 CLI 迁移、MCP 协议逐步成为 AI 工具互联的事实标准、以及本地化/私有化 AI 部署需求的增长。截至 2026 年中,该项目已获得 677 stars、MIT License,活跃维护中(最近更新于 2026 年 6 月),社区参与度高(22 个 open issues),是 MCP 生态中值得关注的项目之一。