mcphost

GitHub
1.6k 230 简单 1 次阅读 今天MIT语言模型Agent插件
AI 解读 由 AI 自动生成,仅供参考

mcphost 是一款基于命令行的主机应用,旨在通过模型上下文协议(MCP)搭建大语言模型与外部工具之间的桥梁。它解决了当前大模型难以安全、统一地调用本地资源或第三方服务的痛点,让 AI 不仅能“对话”,还能实际执行文件操作、运行脚本或获取实时数据。

这款工具特别适合开发者、技术研究人员以及希望构建自动化工作流的进阶用户。无论是需要调试 MCP 服务器的工程师,还是希望将 AI 能力集成到现有脚本系统中的运维人员,都能从中受益。mcphost 兼容主流模型,包括 Claude、OpenAI、Google Gemini 以及本地部署的 Ollama,确保了极高的灵活性。

其核心技术亮点在于完善的架构设计与丰富的功能集:支持同时连接多个 MCP 服务器,并提供精细的工具过滤机制以保障安全;内置文件系统、Bash 执行等常用服务,无需额外配置即可上手;独有的钩子(Hooks)系统允许用户自定义集成逻辑与安全策略;此外,它还支持非交互模式和基于 YAML 的脚本自动化,非常适合融入 CI/CD 流程或编写复杂的自动化任务。通过 mcphost,用户可以轻松构建一个既能理解自然语言指令,又能精准操控外部环境的智能代理系统。

使用场景

某后端开发团队需要让 AI 助手自动执行复杂的本地运维任务,包括读取日志文件、运行诊断脚本并更新任务看板。

没有 mcphost 时

  • 能力割裂:AI 只能生成代码或命令文本,开发者必须手动复制粘贴到终端执行,无法形成闭环。
  • 上下文丢失:每次执行新命令都需要重新向 AI 描述之前的报错信息和环境状态,沟通效率极低。
  • 安全隐患:为了让 AI 操作本地文件,开发者往往被迫将敏感数据上传至云端对话窗口,存在泄露风险。
  • 集成困难:若要实现自动化,需编写大量胶水代码来连接 LLM API 与本地工具,维护成本高昂。

使用 mcphost 后

  • 原生工具调用:mcphost 作为主机直接挂载本地文件系统、Bash 和 HTTP 等 MCP 服务器,AI 可直接安全地读取日志或执行脚本。
  • 状态自动保持:工具执行结果自动回传给模型作为上下文,AI 能基于实时输出连续决策,无需人工重复陈述背景。
  • 数据本地闭环:所有敏感数据和命令执行均保留在本地环境中,仅通过标准协议交互,彻底杜绝数据外泄。
  • 脚本化自动化:利用 YAML 脚本模式,可将“检查日志 - 重启服务 - 通知团队”的复杂流程固化为一键执行的自动化任务。

mcphost 通过标准化的 Model Context Protocol,将大语言模型从单纯的“聊天机器人”升级为能安全操控本地环境的“智能运维代理”。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes该工具基于 Go 语言开发,无需 Python 环境。若使用 Ollama 模型需本地安装 Ollama;若使用云端模型(OpenAI, Anthropic, Google Gemini)需配置对应的 API Key。支持通过 Docker 运行部分 MCP 服务器。
python不需要
Go 1.23+
mcphost hero image

快速开始

MCPHost 🤖

一个命令行主机应用程序,使大型语言模型(LLMs)能够通过模型上下文协议(MCP)与外部工具交互。目前支持Claude、OpenAI、Google Gemini和Ollama模型。

Discord上讨论该项目

目录

概述 🌟

MCPHost 在 MCP 客户端-服务器架构中充当主机角色,其中:

  • 主机(如 MCPHost)是管理连接和交互的 LLM 应用程序
  • 客户端与 MCP 服务器保持一对一连接
  • 服务器为 LLM 提供上下文、工具和能力

这种架构允许语言模型:

  • 访问外部工具和数据源 🛠️
  • 在多次交互中保持一致的上下文 🔄
  • 安全地执行命令并获取信息 🔒

目前支持:

  • Anthropic Claude 模型(Claude 3.5 Sonnet、Claude 3.5 Haiku 等)
  • OpenAI 模型(GPT-4、GPT-4 Turbo、GPT-3.5 等)
  • Google Gemini 模型(Gemini 2.0 Flash、Gemini 1.5 Pro 等)
  • 任何支持函数调用的 Ollama 兼容模型
  • 任何 OpenAI 兼容的 API 端点

功能 ✨

  • 与多个 AI 模型进行交互式对话
  • 非交互模式,用于脚本和自动化
  • 脚本模式,用于基于 YAML 的可执行自动化脚本
  • 支持多个并发的 MCP 服务器
  • 工具过滤,可通过每个服务器的 allowedToolsexcludedTools 进行配置
  • 动态工具发现与集成
  • 所有支持的模型均具备工具调用能力
  • 可配置的 MCP 服务器位置和参数
  • 跨模型类型的统一命令接口
  • 可配置的消息历史窗口,用于管理上下文
  • OAuth 认证支持 Anthropic(替代 API 密钥)
  • 钩子系统,用于自定义集成和安全策略
  • 配置和脚本中的环境变量替换
  • 内置服务器,用于常见功能(文件系统、bash、待办事项、http)

要求 📋

  • Go 1.23 或更高版本
  • 对于 OpenAI/Anthropic:相应提供商的 API 密钥
  • 对于 Ollama:本地安装的 Ollama 及所需模型
  • 对于 Google/Gemini:Google API 密钥(详见 https://aistudio.google.com/app/apikey)
  • 一个或多个与 MCP 兼容的工具服务器

环境设置 🔧

  1. API 密钥:
# 适用于所有提供商(使用 --provider-api-key 标志或以下环境变量)
export OPENAI_API_KEY='your-openai-key'        # 用于 OpenAI
export ANTHROPIC_API_KEY='your-anthropic-key'  # 用于 Anthropic
export GOOGLE_API_KEY='your-google-key'        # 用于 Google/Gemini
  1. Ollama 设置:
ollama pull mistral
  • 确保 Ollama 正在运行:
ollama serve

您还可以使用标准环境变量配置 Ollama 客户端,例如 OLLAMA_HOST 用于 Ollama 基础 URL。

  1. Google API 密钥(用于 Gemini):
export GOOGLE_API_KEY='your-api-key'
  1. OpenAI 兼容设置:
  • 获取您的 API 服务器基础 URL、API 密钥和模型名称
  • 使用 --provider-url--provider-api-key 标志,或设置环境变量
  1. 自签名证书(TLS): 如果您使用的提供商采用自签名证书(例如本地 Ollama 使用 HTTPS),可以跳过证书验证:
mcphost --provider-url https://192.168.1.100:443 --tls-skip-verify

⚠️ 警告:仅在开发阶段或连接到受信任的自签名证书服务器时使用 --tls-skip-verify。这会禁用 TLS 证书验证,在生产环境中不安全。

安装 📦

go install github.com/mark3labs/mcphost@latest

SDK 使用 🛠️

MCPHost 还提供了一个 Go SDK,用于无需启动操作系统进程即可进行编程访问。该 SDK 与 CLI 保持完全相同的行为,包括配置加载、环境变量和默认值。

快速示例

package main

import (
    "context"
    "fmt"
    "github.com/mark3labs/mcphost/sdk"
)

func main() {
    ctx := context.Background()
    
    // 创建具有默认配置的 MCPHost 实例
    host, err := sdk.New(ctx, nil)
    if err != nil {
        panic(err)
    }
    defer host.Close()
    
    // 发送提示并获取响应
    response, err := host.Prompt(ctx, "2+2 是多少?")
    if err != nil {
        panic(err)
    }
    
    fmt.Println(response)
}

SDK 特性

  • ✅ 无需启动进程即可进行编程访问
  • ✅ 配置行为与 CLI 完全一致
  • ✅ 会话管理(保存/加载/清除)
  • ✅ 工具执行回调,用于监控
  • ✅ 流式传输支持
  • ✅ 与所有提供商和 MCP 服务器完全兼容

有关详细的 SDK 文档、示例和 API 参考,请参阅 SDK README

配置 ⚙️

MCP 服务器

如果 MCPHost 的主目录中不存在配置文件,它将自动创建一个。它会按以下顺序查找配置文件:

  • .mcphost.yml.mcphost.json(首选)
  • .mcp.yml.mcp.json(向后兼容)

各操作系统上的配置文件位置:

  • Linux/macOS~/.mcphost.yml~/.mcphost.json~/.mcp.yml~/.mcp.json
  • Windows%USERPROFILE%\.mcphost.yml%USERPROFILE%\.mcphost.json%USERPROFILE%\.mcp.yml%USERPROFILE%\.mcp.json

您也可以使用 --config 标志指定自定义位置。

环境变量替换

MCPHost 支持在配置文件和脚本的 Frontmatter 中使用环境变量替换,语法如下:

  • ${env://VAR} - 必需的环境变量(未设置时会失败)
  • ${env://VAR:-default} - 可选的环境变量,带有默认值

这使得您可以将 API 密钥等敏感信息保存在环境变量中,同时保持配置的灵活性。

示例:

mcpServers:
  github:
    type: local
    command: ["docker", "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN=${env://GITHUB_TOKEN}", "ghcr.io/github/github-mcp-server"]
    environment:
      DEBUG: "${env://DEBUG:-false}"
      LOG_LEVEL: "${env://LOG_LEVEL:-info}"

model: "${env://MODEL:-anthropic/claude-sonnet-4-5-20250929}"
provider-api-key: "${env://OPENAI_API_KEY}"  # 必需 - 未设置时会失败

使用方法:

# 设置必需的环境变量
export GITHUB_TOKEN="ghp_your_token_here"
export OPENAI_API_KEY="your_openai_key"

# 可选地覆盖默认值
export DEBUG="true"
export MODEL="openai/gpt-4"

# 运行 mcphost
mcphost

简化配置模式

MCPHost 现在支持一种简化的配置模式,包含三种服务器类型:

本地服务器

用于在您的机器上运行命令的本地 MCP 服务器:

{
  "mcpServers": {
    "filesystem": {
      "type": "local",
      "command": ["npx", "@modelcontextprotocol/server-filesystem", "${env://WORK_DIR:-/tmp}"],
      "environment": {
        "DEBUG": "${env://DEBUG:-false}",
        "LOG_LEVEL": "${env://LOG_LEVEL:-info}",
        "API_TOKEN": "${env://FS_API_TOKEN}"
      },
      "allowedTools": ["read_file", "write_file"],
      "excludedTools": ["delete_file"]
    },
    "github": {
      "type": "local",
      "command": ["docker", "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN=${env://GITHUB_TOKEN}", "ghcr.io/github/github-mcp-server"],
      "environment": {
        "DEBUG": "${env://DEBUG:-false}"
      }
    },
    "sqlite": {
      "type": "local",
      "command": ["uvx", "mcp-server-sqlite", "--db-path", "${env://DB_PATH:-/tmp/foo.db}"],
      "environment": {
        "SQLITE_DEBUG": "${env://DEBUG:-0}",
        "DATABASE_URL": "${env://DATABASE_URL:-sqlite:///tmp/foo.db}"
      }
    }
  }
}

每个本地服务器条目需要:

  • type:必须设置为 "local"
  • command:包含命令及其所有参数的数组
  • environment:(可选)环境变量键值对对象
  • allowedTools:(可选)要包含的工具名称数组(白名单)
  • excludedTools:(可选)要排除的工具名称数组(黑名单)

远程服务器

用于通过 HTTP 访问的远程 MCP 服务器:

{
  "mcpServers": {
    "websearch": {
      "type": "remote",
      "url": "${env://WEBSEARCH_URL:-https://api.example.com/mcp}",
      "headers": ["Authorization: Bearer ${env://WEBSEARCH_TOKEN}"]
    },
    "weather": {
      "type": "remote", 
      "url": "${env://WEATHER_URL:-https://weather-mcp.example.com}"
    }
  }
}

每个远程服务器条目需要:

  • type:必须设置为 "remote"
  • url:MCP 服务器可访问的 URL
  • headers:(可选)用于身份验证和其他自定义头的 HTTP 头数组

远程服务器会自动使用 StreamableHTTP 传输方式以获得最佳性能。

内置服务器

用于在进程中运行以获得最佳性能的内置 MCP 服务器:

{
  "mcpServers": {
    "filesystem": {
      "type": "builtin",
      "name": "fs",
      "options": {
        "allowed_directories": ["${env://WORK_DIR:-/tmp}", "${env://HOME}/documents"]
      },
      "allowedTools": ["read_file", "write_file", "list_directory"]
    },
    "filesystem-cwd": {
      "type": "builtin",
      "name": "fs"
    }
  }
}

每个内置服务器条目需要:

  • type:必须设置为 "builtin"
  • name:内置服务器的内部名称(例如,"fs" 表示文件系统)
  • options:特定于内置服务器的配置选项

可用的内置服务器:

  • fs(文件系统):具有可配置允许目录的安全文件系统访问
    • allowed_directories:服务器可以访问的目录路径数组(未指定时默认为当前工作目录)
  • bash:执行带有安全限制和超时控制的 Bash 命令
    • 无需任何配置选项
  • todo:管理会话期间的任务跟踪临时待办事项列表
    • 无需任何配置选项(待办事项存储在内存中,重启后会重置)
  • http:获取网页内容并将其转换为文本、Markdown 或 HTML 格式
    • 工具:fetch(获取并转换网页内容)、fetch_summarize(使用 AI 获取并总结网页内容)、fetch_extract(使用 AI 提取特定数据)、fetch_filtered_json(获取 JSON 并使用 gjson 路径语法进行过滤)
    • 无需任何配置选项

内置服务器示例

{
  "mcpServers": {
    "filesystem": {
      "type": "builtin",
      "name": "fs",
      "options": {
        "allowed_directories": ["/tmp", "/home/user/documents"]
      }
    },
    "bash-commands": {
      "type": "builtin", 
      "name": "bash"
    },
    "task-manager": {
      "type": "builtin",
      "name": "todo"
    },
    "web-fetcher": {
      "type": "builtin",
      "name": "http"
    }
  }
}

工具过滤

所有类型的 MCP 服务器都支持工具过滤,以限制可用的工具:

  • allowedTools:白名单 - 仅允许服务器提供指定的工具
  • excludedTools:黑名单 - 除指定工具外,其他所有工具均可使用
{
  "mcpServers": {
    "filesystem-readonly": {
      "type": "builtin",
      "name": "fs",
      "allowedTools": ["read_file", "list_directory"]
    },
    "filesystem-safe": {
      "type": "local", 
      "command": ["npx", "@modelcontextprotocol/server-filesystem", "/tmp"],
      "excludedTools": ["delete_file"]
    }
  }
}

注意allowedToolsexcludedTools 是互斥的,每个服务器只能使用其中之一。

遗留配置支持

MCPHost 保持与先前配置格式的完全向后兼容性。注意:最近的一项错误修复提高了外部 MCP 服务器(Docker、NPX 等)的旧版 stdio 传输可靠性。

遗留 STDIO 格式

{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/tmp/foo.db"],
      "env": {
        "DEBUG": "true"
      }
    }
  }
}

遗留 SSE 格式

{
  "mcpServers": {
    "server_name": {
      "url": "http://some_host:8000/sse",
      "headers": ["Authorization: Bearer my-token"]
    }
  }
}

遗留 Docker/容器格式

{
  "mcpServers": {
    "phalcon": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/mark3labs/phalcon-mcp:latest",
        "serve"
      ]
    }
  }
}

遗留可流式 HTTP 格式

{
  "mcpServers": {
    "websearch": {
      "transport": "streamable",
      "url": "https://api.example.com/mcp",
      "headers": ["Authorization: Bearer your-api-token"]
    }
  }
}

传输类型

MCPHost 支持四种传输类型:

  • stdio:启动本地进程并通过 stdin/stdout 进行通信(用于 "local" 服务器)
  • sse:使用 Server-Sent Events 连接到服务器(遗留格式)
  • streamable:使用可流式 HTTP 协议连接到服务器(用于 "remote" 服务器)
  • inprocess:在进程中运行内置服务器以获得最佳性能(用于 "builtin" 服务器)

简化后的模式会自动映射:

  • "local" 类型 → stdio 传输
  • "remote" 类型 → streamable 传输
  • "builtin" 类型 → inprocess 传输

系统提示

您可以使用 --system-prompt 标志指定自定义系统提示。您可以通过以下两种方式之一:

  1. 直接传递提示文本:

    mcphost --system-prompt "你是一位以友好语气回应的帮助型助手。"
    
  2. 传递包含提示的文本文件路径:

    mcphost --system-prompt ./prompts/assistant.md
    

    示例 assistant.md 文件:

    你是一位有用编码助手。
    
    请:
    - 编写整洁易读的代码
    - 添加有用的注释
    - 遵循最佳实践
    - 解释你的思路
    

使用方法 🚀

MCPHost 是一个 CLI 工具,允许您通过统一的界面与各种 AI 模型交互。它通过 MCP 服务器支持多种工具,并且可以在交互式和非交互式模式下运行。

交互模式(默认)

开始一次交互式对话会话:

mcphost

脚本模式

运行支持变量替换的 YAML 基础自动化脚本:

# 使用 script 子命令
mcphost script myscript.sh

# 带有变量
mcphost script myscript.sh --args:directory /tmp --args:name "John"

# 直接执行(如果具有可执行权限且包含 shebang)
./myscript.sh

脚本格式

脚本将 YAML 配置与提示结合在一个可执行文件中。配置必须用 frontmatter 分隔符(---)包裹起来。您可以将提示包含在 YAML 配置中,也可以将其放在结束的 frontmatter 分隔符之后:

#!/usr/bin/env -S mcphost script
---
# 此脚本使用来自 https://github.com/dagger/container-use 的 container-use MCP 服务器
mcpServers:
  container-use:
    type: "local"
    command: ["cu", "stdio"]
prompt: |
  使用 Flask 和 FastAPI 创建两个简单的 Hello World 应用程序变体。每个应用都在各自的环境中运行。请给我这两个应用的 URL。
---

或者,您也可以省略 prompt: 字段,将提示放在 frontmatter 之后:

#!/usr/bin/env -S mcphost script
---
# 此脚本使用来自 https://github.com/dagger/container-use 的 container-use MCP 服务器
mcpServers:
  container-use:
    type: "local"
    command: ["cu", "stdio"]
---
使用 Flask 和 FastAPI 创建两个简单的 Hello World 应用程序变体。每个应用都在各自的环境中运行。请给我这两个应用的 URL。

变量替换

脚本同时支持环境变量替换和脚本参数替换:

  1. 环境变量${env://VAR}${env://VAR:-default} —— 优先处理
  2. 脚本参数${variable}${variable:-default} —— 在环境变量之后处理

变量可以通过命令行参数提供:

# 带有变量的脚本
mcphost script myscript.sh --args:directory /tmp --args:name "John"
变量语法

MCPHost 支持以下变量语法:

  1. 必需的环境变量${env://VAR} —— 必须在环境中设置
  2. 可选的环境变量${env://VAR:-default} —— 如果未设置则使用默认值
  3. 必需的脚本参数${variable} —— 必须通过 --args:variable value 提供
  4. 可选的脚本参数${variable:-default} —— 如果未提供则使用默认值

示例脚本,混合了环境变量和脚本参数:

#!/usr/bin/env -S mcphost script
---
mcpServers:
  github:
    type: "local"
    command: ["gh", "api"]
    environment:
      GITHUB_TOKEN: "${env://GITHUB_TOKEN}"
      DEBUG: "${env://DEBUG:-false}"
  
  filesystem:
    type: "local"
    command: ["npx", "-y", "@modelcontextprotocol/server-filesystem", "${env://WORK_DIR:-/tmp}"]

model: "${env://MODEL:-anthropic/claude-sonnet-4-5-20250929}"
---
你好 ${name:-World}!请列出 ${repo_type:-public} 用户 ${username} 的仓库。工作目录是 ${env://WORK_DIR:-/tmp}。使用 ${command:-gh} 命令获取 ${count:-10} 个仓库。
使用示例
# 先设置环境变量
export GITHUB_TOKEN="ghp_your_token_here"
export DEBUG="true"
export WORK_DIR="/home/user/projects"

# 使用环境变量和默认值:name="World",repo_type="public",command="gh",count="10"
mcphost script myscript.sh

# 覆盖特定脚本参数
mcphost script myscript.sh --args:name "John" --args:username "alice"

# 覆盖多个脚本参数
mcphost script myscript.sh --args:name "John" --args:username "alice" --args:repo_type "private"

# 环境变量、提供的参数与默认值的混合
mcphost script myscript.sh --args:name "Alice" --args:command "gh api" --args:count "5"
默认值特性
  • 空默认值: ${var:-} - 如果未提供则使用空字符串
  • 复杂默认值: ${path:-/tmp/default/path} - 支持路径、URL等
  • 默认值中的空格: ${msg:-Hello World} - 支持默认值中包含空格
  • 向后兼容性: 现有的${variable}语法仍可正常使用,无需更改

重要提示:

  • 无默认值的环境变量(如${env://GITHUB_TOKEN})为必填项,必须在环境中设置。
  • 无默认值的脚本参数(如${username})为必填项,必须通过--args:variable value语法提供。
  • 有默认值的变量为可选,若未提供则使用默认值。
  • 环境变量会优先处理,随后才是脚本参数。

脚本特性

  • 可执行性: 使用 shebang 行可直接执行(#!/usr/bin/env -S mcphost script
  • YAML 配置: 可在脚本中直接定义 MCP 服务器
  • 嵌入式提示: 提示信息可直接包含在 YAML 文件中
  • 变量替换: 使用${variable}${variable:-default}语法,并配合--args:variable value
  • 变量验证: 缺少必填变量时,脚本将退出并显示有用的错误信息。
  • 交互模式: 若提示为空,则进入交互模式(适用于设置脚本)
  • 配置回退: 若未定义mcpServers,则使用默认配置。
  • 工具过滤: 支持按服务器设置allowedTools/excludedTools
  • 干净退出: 完成后自动退出

注意: Shebang 行需要使用env -S来处理多单词命令mcphost script。这在大多数现代类 Unix 系统上都支持。

脚本示例

请参阅examples/scripts/目录下的示例脚本:

  • example-script.sh - 自定义 MCP 服务器的脚本
  • simple-script.sh - 使用默认配置回退的脚本

钩子系统

MCPHost 支持强大的钩子系统,允许您在执行过程中的特定点执行自定义命令。这使得安全策略、日志记录、自定义集成以及自动化工作流成为可能。

快速入门

  1. 初始化钩子配置:

    mcphost hooks init
    
  2. 查看当前生效的钩子:

    mcphost hooks list
    
  3. 验证您的配置:

    mcphost hooks validate
    

配置

钩子通过 YAML 文件进行配置,优先级从高到低如下:

  • .mcphost/hooks.yml(项目专用钩子)
  • $XDG_CONFIG_HOME/mcphost/hooks.yml(用户全局钩子,默认为~/.config/mcphost/hooks.yml

示例配置:

hooks:
  PreToolUse:
    - matcher: "bash"
      hooks:
        - type: command
          command: "/usr/local/bin/validate-bash.py"
          timeout: 5
  
  UserPromptSubmit:
    - hooks:
        - type: command
          command: "~/.mcphost/hooks/log-prompt.sh"

可用钩子事件

  • PreToolUse: 在任何工具执行之前(bash、fetch、todo、MCP 工具)
  • PostToolUse: 工具执行完成后
  • UserPromptSubmit: 用户提交提示时
  • Stop: 代理完成响应时
  • SubagentStop: 子代理(Task 工具)完成时
  • Notification: 当 MCPHost 发送通知时

安全性

⚠️ 警告: 钩子会在您的系统上执行任意命令。请仅使用来自可信来源的钩子,并在启用前始终检查钩子命令。

要临时禁用所有钩子,请使用--no-hooks标志:

mcphost --no-hooks

请参阅examples/hooks/目录下的示例钩子脚本:

  • bash-validator.py - 验证并阻止危险的 bash 命令
  • prompt-logger.sh - 记录所有用户提示及时间戳
  • mcp-monitor.py - 监控并执行关于 MCP 工具使用的政策

非交互模式

运行单个提示并退出——非常适合脚本编写和自动化:

# 基本非交互式用法
mcphost -p "今天天气怎么样?"

# 静默模式——仅输出 AI 回答,不显示 UI 元素
mcphost -p "2+2等于多少?" --quiet

# 使用不同模型
mcphost -m ollama/qwen2.5:3b -p "解释量子计算" --quiet

模型生成参数

MCPHost 支持通过多种参数微调模型行为:

# 控制回答长度
mcphost -p "解释人工智能" --max-tokens 1000

# 调整创造力(0.0 = 专注,1.0 = 创意)
mcphost -p "写一个故事" --temperature 0.9

# 使用核采样控制多样性
mcphost -p "生成创意" --top-p 0.8

# 限制候选词数量以获得更聚焦的回答
mcphost -p "精确作答" --top-k 20

# 设置自定义停止序列
mcphost -p "生成代码" --stop-sequences "```","END"

这些参数适用于所有受支持的提供商(OpenAI、Anthropic、Google、Ollama),前提是底层模型支持。

可用模型

可通过--model-m)选项指定模型:

  • Anthropic Claude(默认):anthropic/claude-sonnet-4-5-20250929anthropic/claude-3-5-sonnet-latestanthropic/claude-3-5-haiku-latest
  • OpenAI: openai/gpt-4openai/gpt-4-turboopenai/gpt-3.5-turbo
  • Google Gemini: google/gemini-2.0-flashgoogle/gemini-1.5-pro
  • Ollama 模型: ollama/llama3.2ollama/qwen2.5:3bollama/mistral
  • OpenAI 兼容模型: 通过自定义端点和--provider-url指定的任何模型

示例

交互模式

# 使用 Ollama 的 Qwen 模型
mcphost -m ollama/qwen2.5:3b

# 使用 OpenAI 的 GPT-4
mcphost -m openai/gpt-4

# 使用 OpenAI 兼容模型,自定义 URL 和 API 密钥
mcphost --model openai/<your-model-name> \
--provider-url <your-base-url> \
--provider-api-key <your-api-key>

非交互模式

# 单一提示,完整 UI
mcphost -p "列出当前目录下的文件"

# 简洁模式,输出更干净,无花哨样式
mcphost -p "列出当前目录下的文件" --compact

# 静默模式,适合脚本编写(仅输出 AI 回答,无 UI 元素)
mcphost -p "法国的首都是哪里?" --quiet

# 在 shell 脚本中使用
RESULT=$(mcphost -p "计算 15 * 23" --quiet)
echo "答案是: $RESULT"

# 与其他命令管道连接
mcphost -p "生成一个随机 UUID" --quiet | tr '[:lower:]' '[:upper:]'

标志

  • --provider-url string: 提供商 API 的基础 URL(适用于 OpenAI、Anthropic、Ollama 和 Google)
  • --provider-api-key string: 提供商的 API 密钥(适用于 OpenAI、Anthropic 和 Google)
  • --tls-skip-verify: 跳过 TLS 证书验证(警告:不安全,仅用于自签名证书)
  • --config string: 配置文件位置(默认为 $HOME/.mcphost.yml)
  • --system-prompt string: 系统提示文件位置
  • --debug: 启用调试日志
  • --max-steps int: 代理的最大步骤数(0 表示无限制,默认:0)
  • -m, --model string: 要使用的模型(格式:提供商/模型)(默认为 "anthropic/claude-sonnet-4-5-20250929")
  • -p, --prompt string: 以非交互模式运行,并使用给定的提示
  • --quiet: 抑制所有输出,仅保留 AI 响应(仅与 --prompt 一起使用)
  • --compact: 启用简洁输出模式,不带花哨的样式(非常适合脚本和自动化)
  • --stream: 启用流式响应(默认:true,使用 --stream=false 可禁用)

身份验证子命令

  • mcphost auth login anthropic: 使用 OAuth 认证 Anthropic(替代 API 密钥)
  • mcphost auth logout anthropic: 删除存储的 OAuth 凭据
  • mcphost auth status: 显示身份验证状态

注意:OAuth 凭据(如果存在)优先于环境变量和 --provider-api-key 标志中的 API 密钥。

模型生成参数

  • --max-tokens int: 响应中最大令牌数(默认:4096)
  • --temperature float32: 控制响应的随机性(0.0-1.0,默认:0.7)
  • --top-p float32: 通过核采样控制多样性(0.0-1.0,默认:0.95)
  • --top-k int32: 通过限制从前 K 个令牌中采样来控制多样性(默认:40)
  • --stop-sequences strings: 自定义停止序列(逗号分隔)

配置文件支持

所有命令行标志都可以通过配置文件进行配置。MCPHost 将按以下顺序查找配置:

  1. ~/.mcphost.yml~/.mcphost.json(首选)
  2. ~/.mcp.yml~/.mcp.json(向后兼容)

配置文件示例(~/.mcphost.yml):

# MCP 服务器 - 新简化格式
mcpServers:
  filesystem-local:
    type: "local"
    command: ["npx", "@modelcontextprotocol/server-filesystem", "/path/to/files"]
    environment:
      DEBUG: "true"
  filesystem-builtin:
    type: "builtin"
    name: "fs"
    options:
      allowed_directories: ["/tmp", "/home/user/documents"]
  websearch:
    type: "remote"
    url: "https://api.example.com/mcp"

# 应用程序设置
model: "anthropic/claude-sonnet-4-5-20250929"
max-steps: 20
debug: false
system-prompt: "/path/to/system-prompt.txt"

# 模型生成参数
max-tokens: 4096
temperature: 0.7
top-p: 0.95
top-k: 40
stop-sequences: ["Human:", "Assistant:"]

# 流式配置
stream: false  # 禁用流式传输(默认:true)

# API 配置
provider-api-key: "your-api-key"      # 对于 OpenAI、Anthropic 或 Google
provider-url: "https://api.openai.com/v1"  # 自定义基础 URL
tls-skip-verify: false  # 跳过 TLS 证书验证(默认:false)

注意:命令行标志优先于配置文件中的值。

交互式命令

聊天时,您可以使用:

  • /help: 显示可用命令
  • /tools: 列出所有可用工具
  • /servers: 列出已配置的 MCP 服务器
  • /history: 显示对话历史
  • /quit: 退出应用程序
  • Ctrl+C: 随时退出

认证命令

可选的 Anthropic OAuth 认证(替代 API 密钥):

  • mcphost auth login anthropic: 使用 OAuth 进行认证
  • mcphost auth logout anthropic: 删除存储的 OAuth 凭据
  • mcphost auth status: 显示身份验证状态。

全局标志

  • --config: 指定自定义配置文件位置

自动化与脚本 🤖

MCPHost 的非交互模式使其非常适合自动化、脚本编写以及与其他工具的集成。

使用场景

Shell 脚本

#!/bin/bash
# 获取天气并保存到文件
mcphost -p "纽约的天气如何?" --quiet > weather.txt

# 使用 AI 处理文件
for file in *.txt; do
    summary=$(mcphost -p "请总结此文件内容:$(cat $file)" --quiet)
    echo "$file: $summary" >> summaries.txt
done

CI/CD 集成

# 代码审查自动化
DIFF=$(git diff HEAD~1)
mcphost -p "请审查这段代码差异并提出改进建议:$DIFF" --quiet

# 生成发布说明
COMMITS=$(git log --oneline HEAD~10..HEAD)
mcphost -p "请根据这些提交记录生成发布说明:$COMMITS" --quiet

数据处理

# 处理 CSV 数据
mcphost -p "请分析这份 CSV 数据并提供见解:$(cat data.csv)" --quiet

# 生成报告
mcphost -p "请根据这份 JSON 数据创建摘要报告:$(cat metrics.json)" --quiet

API 集成

# 作为微服务使用
curl -X POST http://localhost:8080/process \
  -d "$(mcphost -p '生成一个 UUID' --quiet)"

脚本编写技巧

  • 使用 --quiet 标志获取适合解析的干净输出(仅 AI 响应,无 UI)
  • 使用 --compact 标志获得简化输出,去除花哨的样式(当您希望看到 UI 元素时)
  • 注意:--compact--quiet 互斥——使用 --quiet 时,--compact 无效
  • 对于敏感数据,如 API 密钥,使用环境变量代替硬编码
  • 在配置文件和脚本中使用 ${env://VAR} 语法进行环境变量替换
  • 结合标准 Unix 工具(grepawksed 等)
  • 为长时间运行的操作设置适当的超时时间
  • 在脚本中妥善处理错误
  • 生产环境中使用环境变量存储 API 密钥

环境变量最佳实践

# 在环境中设置敏感变量
export GITHUB_TOKEN="ghp_your_token_here"
export OPENAI_API_KEY="your_openai_key"
export DATABASE_URL="postgresql://user:pass@localhost/db"

# 在配置文件中使用
mcpServers:
  github:
    environment:
      GITHUB_TOKEN: "${env://GITHUB_TOKEN}"
      DEBUG: "${env://DEBUG:-false}"

# 在脚本中使用
mcphost script my-script.sh --args:username alice

MCP 服务器兼容性 🔌

MCPHost 可以与任何符合 MCP 标准的服务器配合使用。有关示例和参考实现,请参阅 MCP 服务器仓库

贡献 🤝

欢迎贡献!您可以:

  • 通过问题提交 bug 报告或功能请求
  • 创建拉取请求以改进功能
  • 分享您自定义的 MCP 服务器
  • 改进文档

请确保您的贡献遵循良好的编码实践,并包含适当的测试。

许可证 📄

本项目采用 MIT 许可证授权——详情请参阅 LICENSE 文件。

致谢 🙏

  • 感谢 Anthropic 团队提供的 Claude 模型和 MCP 规范
  • 感谢 Ollama 团队提供的本地大模型运行时
  • 感谢所有帮助改进这款工具的贡献者

版本历史

v0.34.0-beta.12026/02/25
v0.34.02026/02/25
v0.33.42026/02/15
v0.33.32026/02/02
v0.33.22026/01/09
v0.33.12026/01/09
v0.33.02026/01/09
v0.32.02025/12/09
v0.31.42025/11/14
v0.31.32025/10/16
v0.31.22025/10/16
v0.31.12025/10/07
v0.31.02025/09/02
v0.30.12025/09/02
v0.30.02025/09/02
v0.29.02025/08/11
v0.28.12025/08/10
v0.28.02025/08/08
v0.27.12025/08/08
v0.27.02025/08/05

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|5天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

149.5k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|今天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|今天
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|4天前
插件开发框架