大模型应用开发-MCP本地开发
本文介绍了如何搭建本地MCP服务的完整流程。首先通过uv工具初始化Python项目并安装MCP包,然后使用FastMCP SDK开发了一个查询天气的MCP Server工具。文章详细演示了调试过程,包括使用MCP Inspector测试工具功能,以及通过Cherry Studio客户端连接本地MCP服务的配置方法。最后还展示了如何编写自定义MCP Client来连接本地MCP Server。整个流
大模型应用开发-MCP本地开发
之前介绍了如何使用别人提供的MCP服务,今天我们来看一看如何搭建自己的MCP服务。目前MCP Server 官方给出了两种语言的SDK,分别是 NodeJS 以及 Python,由于笔者自工作以来一直使用Python,因此使用该语言来开发MCP Server和Client。
前置环境准备
在着手开发之前,先要把需要的环境准备好,MCP 官方推荐使用 uv 来进行 Python 工程的管理。
我们可以到uv官网下载安装包,依据自己的开发平台找到对应的版本,windows64一般选择如下版本:uv-x86_64-pc-windows-msvc.zip。将该压缩包解压到指定目录后,会得到如下三个文件:

为了能在电脑的命令行中使用该命令,需要将解压后的目录配置在环境变量中。

然后我们打开命令行,就可以执行uv命令了,比如我们执行uv --version就可以看到其版本信息:

MCP Server
配置好uv工具后,我们就可以使用如下命令初始化一个MCP项目了。
uv init achievement --python=3.13
初始化成功后,会自动创建一个名为achievement的文件夹,里面主要包含了一个测试文件 hello.py,项目包管理文件 pyproject.toml 以及 README.md。

然后我们可以进入到achievement文件夹中,执行如下命令安装mcp包。
uv add "mcp[cli]"
此时,该目录下会创建一个.venv虚拟环境,并自动安装一堆依赖。

环境配置完成后,我们就可以正式开发一个MCP Server了。MCP Server 的 Python SDK,分为 FastMCP SDK 和 Low-Level SDK 两种。FastMCP 是在 Low-Level 的基础上又做了一层封装,不论是写代码,还是项目依赖等,操作起来都更加简单,容易上手。在achievement文件夹下新建一个server.py的文件,并在其中定义了一个查询天气的Tool,其内容如下:
import requests
from mcp.server.fastmcp import FastMCP
# Create an MCP server
mcp = FastMCP("achievement")
# Add an get score tool
@mcp.tool()
def get_weather(location):
# 内置city代码
cities = {
"北京": "101010100",
"上海": "101020100",
"成都": "101270101"
}
# api地址
url = 'http://t.weather.sojson.com/api/weather/city/'
# 通过城市的中文获取城市代码
city_code = cities.get(location)
# 网络请求,传入请求api+城市代码
response = requests.get(url + city_code)
# 将数据以json形式返回,这个d就是返回的json数据
d = response.json()
res = str(d)
return res
if __name__ == "__main__":
mcp.run(transport='stdio')
在使用这个Tool之前,我们还要先在此项目的虚拟环境中下载requests包,在achievement文件夹下执行下列命令:
uv add requests

这个Tool能不能使用呢?我们可以执行以下命令来进行调试:
.\.venv\Scripts\mcp.exe dev server.py
或者
npx @modelcontextprotocol/inspector .\.venv\Scripts\python.exe server.py

按住ctrl点击带token的链接,就可以进入如下页面:
点击Connect后状态变为绿色,表示连接成功。

进入到Tools选项中,点击List Tools即可列出当前可用的工具列表:get_weather,选择该工具后,右侧就会出现该工具需要输入的参数,这里我输入了北京,为了能够获取输出,需要在左侧的Configuration中将Request Timeout参数更改为100000,否则会显示超时。

调试成功后,我们就可以找个MCP Host工具来加载了,之前已经介绍过Cline了,这里再介绍一个Cherry Studio。

进入到官网主页后,点击下载客户端,会得到一个exe文件,直接运行即可安装,不在此赘述。
安装完成后,为了更好地使用模型,首先进入左下角的设置界面,选择模型服务,可以照图中的一样将阿里云百炼、深度求索、硅基流动设置好。设置过程很简单,把申请的API密钥填写后点击检测,成功后将右上方的开关开启即可使用。

设置好模型后,选择MCP服务器,首先点击右上角的图标,配置好相应的工具。

若是相应的目录里有以下三个文件,就说明工具已经配置完成了。

然后点击上方的编辑按钮。

将下面的内容填入JSON即可,记得更换为自己的程序目录。
{
"mcpServers": {
"achievement": {
"name": "achievement",
"type": "stdio",
"isActive": true,
"registryUrl": "",
"command": "uv",
"args": [
"run",
"--directory",
"F:\\PycharmProject\\BigModel\\DeepSeek\\achievement",
"server.py"
]
}
}
}

点击确定后,我们就可以在页面看到MCP Server已经正确连接了。

此时,再回到对话界面,选中我们已经连接的MCP Server,模型我用的是阿里云百炼的qwen-max。

我们输入问题:北京的天气怎么样,模型便可自动调用MCP Server中的工具,并将结果反馈给我们。

这里需要注意的是,要想调用MCP Server的话,还需要模型具备调用工具的能力,以及开启该能力。

MCP Client
上面我们都是用已有的MCP Host来完成对MCP Server的连接,下面我们来看看如何通过Python语言编写一个自定义的MCP Client。
由于我们的MCP Server是在本地运行的,因此Client也需要采用Stdio模式来进行连接。
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# Create server parameters for stdio connection
server_params = StdioServerParameters(
command="uv", # Executable
args=[
"run",
"--directory",
"F:\\PycharmProject\\BigModel\\DeepSeek\\achievement",
"server.py"
], # Optional command line arguments
env=None # Optional environment variables
)
async def run():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# Initialize the connection
await session.initialize()
# List available tools
tools = await session.list_tools()
print("Tools:", tools)
# call a tool
weather = await session.call_tool(name="get_weather", arguments={"location": "北京"})
print("weather: ", weather)
if __name__ == "__main__":
import asyncio
asyncio.run(run())
上述代码实际上就是启动一个stdio的client,维持一个会话,等到初始化完成后,就执行工具列表查询,以及调用工具的功能。
首先我们在命令行窗口中通过以下命令把MCP Server运行起来。
uv run server.py

然后再打开一个命令行窗口,执行下列命令,就可以把Client运行起来了。
uv run client.py

总结
此篇文章主要介绍了如何在本地环境下开发一个MCP Server和MCP Client,实际上通过Fast MCP接口,可以很方便地创建。此外还介绍了Cherry Stduio的使用,它是一个时下非常流行的AI桌面客户端,功能非常强大,非常建议大家去使用起来。
最近这几年,经济形式下行,IT行业面临经济周期波动与AI产业结构调整的双重压力,很多人都迫于无奈,要么被裁,要么被降薪,苦不堪言。但我想说的是一个行业下行那必然会有上行行业,目前AI大模型的趋势就很不错,大家应该也经常听说大模型,也知道这是趋势,但苦于没有入门的契机,现在他来了,我在本平台找到了一个非常适合新手学习大模型的资源。大家想学习和了解大模型的,可以**点击这里前往查看**
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)