MCP实践示例
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 对话", 如图:
测试
完成应用创建后,就试一下(保存 -> 调试) 如图:
然后就试试看看,MCP服务相关函数是否能被成功被调用, 一些结果如下:
结束语
MCP的服务能否被调用有点靠运气,应该调用MCP,但不调用(或调用了参数错误)的感受特别明显.
在Ollama上的大语言模型,目前只发现qwen2.5系在MaxKB上可以成功调用MCP服务的功能/函数.
特别火的DeepSeek也试了, 没能成功的调用MCP服务的函数, MCP还没有被广泛支持.