mcpField
M
MCP-CLI-HOST

MCP-CLI-HOST

github.com/vincent-pli框架与 SDK2148 周前更新

关于 MCP-CLI-HOST

MCP-CLI-HOST 是一个命令行形式的 MCP 客户端,让 LLM 通过 Model Context Protocol 调用外部工具。它支持 OpenAI、Azure OpenAI、Deepseek、Ollama 和 Gemini 等模型,适合希望在终端中统一使用多个模型和 MCP 服务的用户。

主要功能

  1. 01支持同时连接多个 MCP 服务
  2. 02动态发现并集成工具
  3. 03可配置 MCP 服务的位置与参数
  4. 04支持消息历史窗口管理上下文
  5. 05支持 Sampling、Roots、Elicitation 及资源和提示词获取
  6. 06支持 Streamable HTTP 远程服务

适用场景

  1. 01在命令行中与不同 LLM 模型交互并调用本地或远程工具
  2. 02通过 SQLite 或文件系统等 MCP 服务查询与操作数据
  3. 03在运行时排除特定工具以控制对话中可用的能力

MCP 相关

作为 MCP 客户端,它读取 ~/.mcp.json 等配置文件,连接 STDIO 或 Streamable HTTP 类型的 MCP 服务,并把服务提供的工具、资源和提示词提供给 LLM 使用。

详细介绍

MCPCLIHost 🤖

一个 CLI 宿主应用,可让大语言模型(LLM)通过 Model Context Protocol(MCP)与外部工具交互。目前支持 Openai、Azure Openai、Deepseek 和 Ollama 模型。

英语 | 简体中文

效果展示:🤠

snapshot

功能 ✨

  • 与多个 LLM 模型进行交互式对话
  • 支持多个并发 MCP 服务
  • 动态发现并集成工具
  • 可配置 MCP 服务的位置和参数
  • 可配置用于上下文管理的消息历史窗口
  • 监控/追踪服务端错误
  • 支持 Sampling、Roots、Elicitation、检索 Resource、Prompts
  • 支持在运行时排除特定工具
  • 连接后显示 MCP 服务卡片
  • 显示工具调用输出中的图片

最新更新 💌

  • [2025-11-26] 支持显示工具调用输出中的图片
  • [2025-07-18] 支持 Streamable HTTP MCP 服务,暂不支持 OAuth 流程
  • [2025-07-02] 支持 Elicitation
  • [2025-06-27] 处理 MCP 服务中的 Prompts:链接
  • [2025-06-20] 处理 MCP 服务中的 Resources:链接

环境设置 🔧

  1. 对于 Openai 和 Deepseek:
export OPENAI_API_KEY='your-api-key'

Openai 的默认 base_url 为 "https://api.openai.com/v1" Deepseek 的默认值为 "https://api.deepseek.com",你可以通过 --base-url 更改

  1. 对于 Ollama,需先进行设置:
ollama pull mistral
  • 确保 Ollama 正在运行:
ollama serve
  1. 对于 Azure Openai:
export AZURE_OPENAI_DEPLOYMENT='your-azure-deployment'
export AZURE_OPENAI_API_KEY='your-azure-openai-api-key'
export AZURE_OPENAI_API_VERSION='your-azure-openai-api-version'
export AZURE_OPENAI_ENDPOINT='your-azure-openai-endpoint'
  1. 对于 Google Gemini
export GEMINI_API_KEY='your-gemini-api-token'

安装 📦

pip install mcp-cli-host

配置 ⚙️

MCPCLIHost 会自动查找 ~/.mcp.json 配置文件。你也可以使用 --config 标志指定自定义位置:

STDIO MCP 服务
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/tmp/foo.db"
      ]
    },
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/tmp"
      ]
    }
  }
}

每个 MCP 服务条目都需要:

  • command:要运行的命令(例如 uvx、npx)
  • args:命令参数数组:
    • 对于 SQLite 服务:mcp-server-sqlite 和数据库路径
    • 对于文件系统服务:@modelcontextprotocol/server-filesystem 和目录路径
远程 MCP 服务(仅支持 Streamable HTTP)
{
  "mcpServers": {
    "github": {
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {"Authorization": "Bearer <your PAT>"}
    }
  }
}

用法 🚀

MCPCLIHost 是一个 CLI 工具,可让你通过统一界面与各种 AI 模型交互。它通过 MCP 服务支持各种工具。

可用模型

可使用 --model(-m)标志指定模型:

  • Deepseek:deepseek:deepseek-chat
  • OpenAI:openai:gpt-4
  • Ollama 模型:ollama:modelname
  • Azure Openai:azure:gpt-4-0613
  • Gemini:gemini:gemini-2.5-flash
示例
# Use Ollama with Qwen model
mcpclihost -m ollama:qwen2.5:3b

# Use Deepseek
mcpclihost -m deepseek:deepseek-chat --sys-prompt 'You are a slightly playful assistant, please answer questions in a cute tone!'
标志
  • --config string:配置文件位置(默认为 $HOME/mcp.json)
  • --debug:启用调试日志
  • --message-window int:上下文中保留的消息数量(默认值:10)
  • -m, --model string:要使用的模型(格式:provider:model)(默认值 "anthropic:claude-3-5-sonnet-latest")
  • --base-url string:OpenAI API 的基础 URL(默认为 api.openai.com)
  • --roots string:向服务公开文件系统“roots”的 MCP 客户端
  • --sys-prompt string:系统提示词
交互式命令

聊天时,你可以使用:

  • /help:显示可用命令
  • /tools:列出所有可用工具
  • /exclude_tool tool_name:将指定工具排除在对话之外
  • /resources:列出所有可用资源
  • /get_resource:按 uri 获取指定资源,例如:/get_resource resource_uri
  • /prompts:列出所有可用提示词
  • /get_prompt:按名称获取指定提示词,例如:/get_prompt prompt_name
  • /servers:列出已配置的 MCP 服务
  • /history:显示对话历史
  • /quit:随时退出

MCP 服务兼容性 🔌

MCPCliHost 可与任何符合 MCP 规范的服务配合使用。示例和参考实现请参阅 MCP 服务仓库。

已知问题 🐛

  • 在 Sampling 和 Elicitation 场景中,输入 "Ctrl+c" 时,进程会因类似 asyncio.exceptions.CancelledError 的错误而崩溃,之后会修复。

许可证 📄

本项目采用 Apache 2.0 License 许可,详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。