MCP实践示例

最近关于MCP(Model Context Protocol)的新闻挺多的。

但是这个MCP该如开发和使用呢?我因为种种原因用过MaxKB,

虽然MaxKB的新版说是支持MCP,但在TA的文档中并没有关于MCP该如何配置使用

的内容。那就只能自己摸索了.....

安装ollama

ollama是大模型推理服务平台,使用TA来跑大模型特别省事。

具体安装方法,请看:https://ollama.com/download

然后照做即可。我的ollama是安装到Uubntu系统上,

所以很多操作,默认操作系统是ubuntu。

安装大模型

大模型就选qwen2.5系的,qwen2.5个人感觉比较靠谱。

下载模型并跑起来:

ollama run qwen2.5:1.5b

配置ollama的可访问范围

ollama的接口默认的监听地址为:127.0.0.1:11434(仅本机能访问)
但为了方便,需要修改一下:

sudo mkdir -p /etc/systemd/system/ollama.service.d

编辑文件:

sudo nano /etc/systemd/system/ollama.service.d/env.conf

内容:

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

重启ollama服务:

sudo systemctl daemon-reload
sudo systemctl restart ollama.service

这样ollama接口的监听地址就是:0.0.0.0:11434

安装MaxKB

MaxKB是个开源的大模型应用,安装方法参看:https://maxkb.cn/ 。就选新版就行了。

添加模型到MaxKB

系统设置 -> 模型设置 -> 添加模型 -> ollama -> 模型名称:qwen2.5:1.5b

-> 模型类型:大语言模型-> 基础模型:qwen2.5:1.5b

-> API URL:http://172.17.0.1:11434/ -> API Key:ollama -> 保存

API URL: 还需要根据ollama的实际部署情况填写

编写一个简单MCP服务

fastmcp

我们使用fastcmp来开发MCP服务比较省事

首先需要准备Python 3.10+的环境

安装

git clone https://github.com/jlowin/fastmcp.git
cd fastmcp
python3 -m pip install .

注意:

不要使用 ```python3 -m pip install fastmcp```, 因为有问题(2025-04-13).

代码

mcp_server.py:

#!/usr/bin/env python3

import os
import time
from fastmcp import FastMCP
import requests,json


# Create an MCP server
mcp = FastMCP("MCP-Server")

@mcp.tool()
def get_file(filename: str) -> str:
    """
    Get File Content
    :param filename file fullpath
    """
    txt = ''
    with open(filename,'r') as fp:
        txt = fp.read()
    print(filename,":",txt)
    return txt

@mcp.tool()
def get_weather(province,city,county=""):
    """
    获取天气情况
    :param province 省,自治区,直辖市,特别行政区
    :param city    城市名称
    :param county  县名,城市的区名
    """
    uri = f"https://wis.qq.com/weather/common?source=pc&weather_type=observe&province={province}&city={city}&county={county}"
    rsp = requests.get(uri)
    ret = {}
    if rsp.ok:
        ret = rsp.json()['data']['observe']
    ret = json.dumps(ret,ensure_ascii=False,indent=1)
    print(uri,":",ret)
    return ret

@mcp.tool()
def write_file(text):
    """
    把@text写入文件并返回文件名
    :param text 文本内容
    return: 文件路径
    """
    f = os.path.join("/tmp/",'{:.0f}.txt'.format(time.time()*1000))
    with open(f,'w') as fp:
        fp.write(text)
    ret = f"Text was written to {f}"
    print('```',text,'```',ret)
    return ret


if __name__ == '__main__':
    mcp.run(transport='sse')

MCP服务起来

fastmcp run -t sse mcp_server.py

创建MaxKB应用

MaxKB支持中英文, 为保持一致性, 操作时最好把浏览器语言支持, 调整为中文优先.

1

应用 -> 创建应用 -> 名称:MCP测试 -> 描述:试试MCP -> 类型:高级编排 -> 模板:空白应用 -> 创建

2

添加组件 -> 基础组件 -> AI 对话 -> AI 模型:qwen2.5:1.5b ->

提示词:{{开始.question}} -> 工具 -> MCP:开启 -> MCP Server Config:

{
    "MCP-Server":{
        "url":"http://172.17.0.1:8000/sse",
        "transport":"sse"
    }
}

-> 返回内容:开启 -> 连接组件 "开始" 到 "AI 对话", 如图:
start_to_aichat.png

测试

完成应用创建后,就试一下(保存 -> 调试) 如图:
debug.png

然后就试试看看,MCP服务相关函数是否能被成功被调用, 一些结果如下:
get_weather_0.png

get_weather_1.png

get_file.png

write_file.png

结束语

MCP的服务能否被调用有点靠运气,应该调用MCP,但不调用(或调用了参数错误)的感受特别明显.

在Ollama上的大语言模型,目前只发现qwen2.5系在MaxKB上可以成功调用MCP服务的功能/函数.

特别火的DeepSeek也试了, 没能成功的调用MCP服务的函数, MCP还没有被广泛支持.

参考链接

https://blog.csdn.net/qq_34786108/article/details/141857870

https://maxkb.cn/docs/

https://ollama.com/

标签: none

添加新评论