可以在命令行通过大模型使用上下文协议(MCP)与外部工具交互的软件:小巧的MCPHost

可以在命令行通过大模型使用上下文协议(MCP)与外部工具交互的软件:小巧的MCPHost

小巧的MCPHost

MCPHost 可以在命令行下使用,使大型语言模型(LLM)能够通过模型上下文协议(MCP)与外部工具进行交互。目前支持Claude 3.5 Sonnet和Ollama等。本次实践使用自己架设的Deepseek v3模型,跑通了Time MCP服务。

 官网:GitHub - mark3labs/mcphost: A CLI host application that enables Large Language Models (LLMs) to interact with external tools through the Model Context Protocol (MCP).

下载安装

使用非常方便,直接下载解压即可使用。官网提供Windows、Linux和MacOS三个系统的压缩包:

https://github.com/mark3labs/mcphost/releases/tag/v0.4.4

比如Windows系统,直接下载压缩包,解压到工作目录,直接就是可执行文件,在工作目录即可使用。当然也可以把工作目录放入系统PATH路径中,就可以在任意地方调用指令了。

其它前置需求:大约需要先安装好uv和nodejs。

MCPHost交互实践

学习MCPHost命令

直接在命令行下,一句话就能进行MCP的交互,比如在工作目录创建一个Time MCP配置文件mcp.json,内容如下:

{ "mcpServers": { "time": { "command": "uvx", "args": ["mcp-server-time", "--local-timezone=Asia/Shanghai"] } } }

搭建一个AI服务器,地址是http://192.168.1.5:1337 。或者也可以用手头有的AI API服务,比如OpenAI、Ollama、硅基流动、LMStudio等提供的API调用服务。

MCPHost使用一句命令就能连通AI服务器,启动mcp.json设置的mcp-server-time,并进入交互界面:

mcphost --openai-api-key=$OPENAI_API_KEY -m openai:gpt-4o --openai-url http://192.168.1.5:1337 --config mcp.json

在交互界面就可以输入文字进行交互了,比如问它几点了。

┃ Enter your prompt (Type /help for commands, Ctrl+C to quit) ┃

查看帮助

可以用/help看看MCPHost的指令帮助:

mcphost.exe -h MCPHost is a CLI tool that allows you to interact with various AI models through a unified interface. It supports various tools through MCP servers and provides streaming responses. Available models can be specified using the --model flag: - Anthropic Claude (default): anthropic:claude-3-5-sonnet-latest - OpenAI: openai:gpt-4 - Ollama models: ollama:modelname Example: mcphost -m ollama:qwen2.5:3b mcphost -m openai:gpt-4 Usage: mcphost [flags] Flags: --anthropic-api-key string Anthropic API key --anthropic-url string base URL for Anthropic API (defaults to api.anthropic.com) --config string config file (default is $HOME/mcp.json) --debug enable debug logging -h, --help help for mcphost --message-window int number of messages to keep in context (default 10) -m, --model string model to use (format: provider:model, e.g. anthropic:claude-3-5-sonnet-latest or ollama:qwen2.5:3b) (default "anthropic:claude-3-5-sonnet-latest") --openai-api-key string OpenAI API key --openai-url string base URL for OpenAI API (defaults to api.openai.com)

进入交互界面后,还可以用/help来看交互界面下的命令: 

 • /help: Show this help message • /tools: List all available tools • /servers: List configured MCP servers • /history: Display conversation history • /quit: Exit the application You can also press Ctrl+C at any time to quit. ## Available Models Specify models using the --model or -m flag: • Anthropic Claude: anthropic:claude-3-5-sonnet-latest • Ollama Models: ollama:modelname Examples: mcphost -m anthropic:claude-3-5-sonnet-latest mcphost -m ollama:qwen2.5:3b ┃ Enter your prompt (Type /help for commands, Ctrl+C to quit) ┃

 比如用/tool看看工具:

 • time • get_current_time • Get current time in a specific timezones • convert_time • Convert time between timezones

可以看到当前的工具是time。 

用/services看看服务

 # time Command uvx Arguments mcp-server-time --local-timezone=Asia/Shanghai

调试mcp-server-time

用模型claude-3-5-sonnet(模型没调通)

用gpt-4o模型问不出时间来。

尝试换个模型,换成claude-3-5-sonnet

mcphost --openai-api-key=$OPENAI_API_KEY -m openai:claude-3-5-sonnet --openai-url http://192.168.1.5:1337 --config mcp.json 

这个问了问题会退出...

因为是自己搭建的服务器,所以可能是这个模型不行(不通)。后来测试了一下,确实claude-3-5-sonnet本身没调好,普通交互就会报错(ContentLengthError: 400)

换成gpt-4o或者gpt-4,都是可以有回复的,但是无法报时,没有达到预期目标。

打开360信任

同时所做的操作是将uv cache所在的目录(就是启动mcp-server-time服务所用的临时目录)在360里打开信任。防止潜在的网络通信故障或进程无法启动的问题。

换成deepseek-v3,成功!

太不容易了,最后把模型换成deepseek-s3,终于成功了!

mcphost --openai-api-key=$OPENAI_API_KEY -m openai:deepseek-v3 --openai-url http://192.168.1.5:1337 --config mcp.json

问它几点了?

 Assistant: Hi there! How can I assist you today? You: what time is it? Assistant: Current Time - Today is Monday, March 17, 2025. - The exact time depends on your location, but here are some references: - Central Daylight Time (CDT): 08:54:06 PM (UTC-5) - Eastern Daylight Time (EDT): 09:54:06 PM (UTC-4) Let me know if you'd like the time for a specific location! 

看看,它回答出了今天的日期和时间,达到了使用MCP获取当前时间的预期目标。也就是说deepseek-v3模型是支持函数调用的!

再来看个完整的交互

E:\360Downloads\mcphost_Windows_x86_64>mcphost --openai-api-key=$OPENAI_API_KEY -m openai:deepseek-v3 --openai-url http://192.168.1.5:1337 --config mcp.json 2025/03/19 09:26:51 INFO Model loaded provider=openai model=deepseek-v3 2025/03/19 09:26:51 INFO Initializing server... name=time 2025/03/19 09:26:55 INFO Server connected name=time 2025/03/19 09:26:55 INFO Tools loaded server=time count=2uit) You: 请告诉我现在的时间,谢谢 Assistant: 您好!今天是2025年3月19日,星期三。以下是当前的时间信息: 当前时间 • 日期:2025年3月19日 • 星期:星期三 • 时间:请查看您设备上的时钟以获取准确时间。 如果您需要更具体的时间信息,请告诉我您的时区,我可以为您提供更精确的时间。 You: 请告诉我现在的准确时间,谢谢 Assistant: 您好!由于我无法直接访问实时数据,无法提供当前的准确时间。建议您查看您的设备(如手机、电脑或手表)上的时钟,以获取最准确的时间信息。如果您需要帮助,请告诉我您的时区,我可以为您提供相关的时间计算方法。 You: 请告诉我当前的时间,谢谢 Assistant: 由于我无法直接访问实时数据,因此无法提供当前的准确时间。建议您查看您的设备(如手机、电脑或手表)上的时钟,以获取最准确的时间信息。如果您需要帮助,请告诉我您的时区,我可以为您提供相关的时间计算方法。 You: 我在济宁,请告诉我当前的实践 Assistant: 您好!以下是济宁当前的时间信息: 济宁当前时间 • 日期:2025年3月19日 • 星期:星期三 • 时间:上午9:28:45 • 时区:CST(中国标准时间,UTC/GMT +8小时) 如果您需要进一步帮助,请随时告诉我! Goodbye!

但是它并不是每回都能正确回答,有时候可能答不出来。也许还是要用官方建议的claude-3-5-sonnet模型效果会更好些。有claude-3-5-sonnet模型的朋友可以试一下,欢迎在评论区讨论!

目前测试出来支持的模型:deepseek-v3 deepseek-chat

总结

这是一次很好的实践。

MCPHost小巧实用,可以很方便的架起大模型和MCP之间的桥梁。

但是效果,尚需努力,使用deepseek-v3模型,离可以用,还有些距离。

测试下来支持MCP的模型有:deepseek-v3 llama3.2:3b llama3.3:70b 

欢迎大家使用各种模型来评测下,哪种模型更适合MCP请写在评论,谢谢啦!

Read more

Flutter 三方库 health_connector_core 的鸿蒙化适配指南 - 实现具备跨平台标准的数据采集与同步架构、支持端侧健康指标建模与设备总线协同实战

Flutter 三方库 health_connector_core 的鸿蒙化适配指南 - 实现具备跨平台标准的数据采集与同步架构、支持端侧健康指标建模与设备总线协同实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 health_connector_core 的鸿蒙化适配指南 - 实现具备跨平台标准的数据采集与同步架构、支持端侧健康指标建模与设备总线协同实战 前言 在进行 Flutter for OpenHarmony 的运动健身、个人健康管理或数字疗法类应用开发时,如何统一管理来自不同传感器(如心率计、血糖仪、计步器)的异构数据?health_connector_core 是一款专注于健康数据标准化处理的底层库。它提供了从指标建模到数据聚合的完整逻辑框架。本文将探讨如何在鸿蒙端构建极致、严谨的健康数据中枢。 一、原直观解析 / 概念介绍 1.1 基础原理 health_connector_core 建立在“标准指标(Standard Metrics)”系统之上。它将杂乱无章的原生生理信号抽象为统一的 Record 模型。

By Ne0inhk
Linux探秘坊-------5.git

Linux探秘坊-------5.git

1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。⽬前最主流的版本控制器就是 Git。Git可以控制电脑上所有格式的⽂件,例如doc、excel、dwg、dgn、rvt等等。对于我们开发⼈员来说,Git最重要的就是可以帮助我们管理软件开发项⽬中的源代码⽂件! 2.git简史 同⽣活中的许多伟⼤事物⼀样,Git诞⽣于⼀个极富纷争⼤举创新的年代。 Linux内核开源项⽬有着为数众多的参与者。绝⼤多数的Linux内核维护⼯作都花在了提交补丁和保存归档的繁琐事务上(

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 mutex 为鸿蒙异步任务提供可靠的临界资源互斥锁(并发安全基石)

Flutter for OpenHarmony: Flutter 三方库 mutex 为鸿蒙异步任务提供可靠的临界资源互斥锁(并发安全基石)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 虽然 Dart 运行在单线程的事件循环(Event Loop)中,但在处理复杂的异步业务时,我们依然会面临“竞态条件(Race Conditions)”。例如: 1. 文件写入:两个异步任务同时尝试向同一个鸿蒙沙箱文件写入数据。 2. 状态更新:两个 API 回调几乎同时触发,试图修改同一个全局计数器。 3. 数据库操作:在进行“先查询、后更新”的操作间隙,数据被另一个异步流修改了。 mutex 软件包为 Dart 的异步环境提供了经典的“互斥锁”机制。它能确保在任何特定时刻,只有一个异步 Future 能进入被保护的代码块,是保障鸿蒙应用逻辑原子性的核心工具。 一、异步任务排队模型 mutex 强制让交织在一起的异步请求进行“排队”

By Ne0inhk
Flutter 组件 shelf_static 的适配 鸿蒙Harmony 实战 - 驾驭极致静态资源分发、实现鸿蒙端文件服务器缓存策略与资产审计方案

Flutter 组件 shelf_static 的适配 鸿蒙Harmony 实战 - 驾驭极致静态资源分发、实现鸿蒙端文件服务器缓存策略与资产审计方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 shelf_static 的适配 鸿蒙Harmony 实战 - 驾驭极致静态资源分发、实现鸿蒙端文件服务器缓存策略与资产审计方案 前言 在鸿蒙(OpenHarmony)生态的分布式离线静态文档系统、内嵌 H5 业务容器中台以及需要为局域网成员提供高性能资产分发的各种垂直类应用开发中,“静态资源的高速投递与安全性管控”是应用响应质量的基石。面对包含数千张高密度解析图纸、复杂的 Web 前端资产包或者是需要对接 0307 批次资产安全标准的各类文档。如果仅仅依靠原始的 File.readAsBytes() 配合手写 HTTP 头返回。那么不仅会导致在鸿蒙端产生严重的内存拷贝开销,更会因为无法实现对 Etag 缓存校验、范围请求(Range Request)等现代 Web 协议的精确支配。引发鸿蒙系统应用在加载大型资产时的严重卡顿。 我们需要一种“物理对齐、协议自洽”

By Ne0inhk