【华为开发者空间 x DeepSeek】手把手教你开发一个地区智能查询MCP,赋能地理位置类MCP服务的“零输入”无感交互
华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。手把手教你开发一个地区智能查询MCP,赋能地理位置类MCP服务的“零输入”无感交互

1. 华为开发者空间介绍
华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。
2. 免费领取开发者空间云主机
3. 本案例介绍
以天气查询服务为例,在传统气象查询模式中,用户通过高德等地图等MCP获取天气信息时,需主动输入目标地区名称。尽管“查询杭州明天天气”这类指令已形成使用习惯,但在AI大模型技术普及的当下,这种依赖手动输入地理信息的交互方式,未免显得刻板机械。
为此,我们提出基于实时定位的MCP服务端开发方案——通过集成动态地理位置识别模块,构建具备“自动定位-城市识别-天气检索”闭环能力的智能服务架构。该方案打破传统“用户主动报址”的交互壁垒,当用户触发天气查询需求时,系统将自动完成以下流程:
- 基于IP地址获取当前所在城市;
- 通过地理信息数据库解析定位对应的城市名称;
- 自动调取气象API接口完成天气数据检索与展示。
看似细微的技术改进,实则带来用户体验的颠覆性升级:一方面,实现“零输入”的无感交互,避免跨应用查询的繁琐操作;另一方面,通过动态定位消除“所在地区”的表述歧义,使天气服务从“被动响应”进化为“主动适配”。这种将定位技术与气象服务深度耦合的方案,正是智能时代服务精准化升级的典型实践,为构建更具场景化的生活服务生态奠定技术基础。
为了更好的使用DeepSeek服务和MCP功能,本案例中,我们将在华为开发者空间提供的云主机中安装ChatBoxAI并进行相关功能展示。
4. 华为云空间核心功能解析
4.1 云主机

在华为开发者空间,华为云为每个开发者免费提供一台云主机,每个用户每年可享有180个小时的云主机使用时长。
4.2 开发工具

云主机预集成CodeArts IDE、代码仓及JDK、Python等运行时插件,解决本地开发环境中配置复杂、稳定性不足和依赖等问题,为开发者提供性能强大、安全、稳定、高效的开发环境。
4.3 云存储

提供高大5G的免费云上存储空间。开发者可存储云主机配置、工具配置、代码工程等数据资产,灵活支撑开发者各类资产存储及中转。华为云存储空间在数据加密、备份恢复等方面有非常完善的保障措施,让用户无需担心内容的丢失和泄露风险。
4.4 应用场景
● 个人开发者:为开发者提供丰富的开发工具,支持开发者应用构建;
● 高校师生:支持教师开课、设计实验项目,学生学习课程及开发实践;
● 开源共创:开发者进行开源适配和开发,完成项目并发布开源仓库和云商店,获得开源激励。
5. DeepSeek 核心功能解析
5.1 技术背景

DeepSeek 是由 杭州深度求索人工智能基础技术研究有限公司 推出的 AI助手 ,于2025年1月15日正式上线。DeepSeek凭借自然语言处理、机器学习与深度学习、大数据分析等核心技术优势,在多个领域表现出色。DeepSeek的核心技术包括自然语言处理、机器学习与深度学习、大数据分析等。它在推理、自然语言理解与生成、图像与视频分析、语音识别与合成、个性化推荐、大数据处理与分析、跨模态学习以及实时交互与响应等八大领域表现出色。
5.2 核心能力

具体来说,DeepSeek能够进行逻辑推理、解决复杂问题、理解和生成高质量文本、精准分析图像和视频内容、准确识别和合成语音、根据用户偏好提供个性化推荐、高效处理大规模数据并挖掘有价值信息、实现多模态数据融合与学习,以及通过智能助手和聊天机器人实现快速的自然语言交互。
5.3 最新进展
1. DeepSeek-V3迭代:3月发布的V3-0324版本支持128K上下文窗口,可解析50页PDF或完整代码库,单次生成400+行生产级代码。
2. DeepSeek-R1小版本升级:5月28日,DeepSeek宣布R1模型完成试升级,优化了写作自然度、长上下文处理、推理速度及代码生成能力,性能接近OpenAI的o3高版本。
6. ChatboxAI 能力分析

6.1 什么是ChatboxAI?
Chatbox AI是一款功能强大且独具特色的 AI 客户端应用与智能助手,宛如一座连接用户与前沿 AI 技术的桥梁。它支持众多先进的 AI 模型和 API,无论是 OpenAI 的 GPT 系列,还是 Anthropic 公司的 Claude、Google 的 Gemini 等,都能在 Chatbox AI 中得以调用 。这意味着用户无需在多个平台间来回切换,即可体验不同模型的优势,满足多样化的需求 。
从使用场景来看,Chatbox AI 拥有极为广泛的适用性。它支持 Windows、MacOS、Android、iOS、Linux 以及网页版等多平台使用,无论你是在办公室使用 Windows 电脑办公,还是在家中通过 MacOS 设备学习,亦或是在移动途中借助 Android 或 iOS 手机获取信息,Chatbox AI 都能随时为你服务,实现跨设备的无缝衔接。
6.2 ChatboxAI的优势
- 多模型集成:Chatbox AI 的多模型集成堪称一大亮点。它能无缝连接如 GPT-4、Claude、Gemini 等前沿 AI 模型,用户仅需一键即可在不同模型间自由切换。例如,在进行学术论文创作时,GPT-4 强大的知识储备和语言生成能力可辅助撰写复杂的理论部分;而在进行逻辑推理分析时,Claude 在推理方面的优势便得以彰显。这种多模型的灵活选择,让用户得以根据具体任务需求,挑选最合适的模型,极大地提升了工作和学习效率 。
- 隐私安全保障:在数据安全备受关注的当下,Chatbox AI 将用户数据安全放在首位。它采用本地加密存储对话记录与文件的方式,所有数据都存储在用户设备上,从根本上杜绝了数据泄露风险,为用户提供企业级的数据安全保障。例如,企业用户在使用 Chatbox AI 处理商业机密文件或敏感信息时,无需担忧数据会被第三方获取,真正做到数据主权掌握在自己手中 。
- 智能文件解析:Chatbox AI 支持对 PDF、代码、图片等多种格式文件进行深度解析。当用户上传一份代码文件时,它能快速理解代码逻辑,辅助开发者进行代码调试、优化;对于 PDF 文件,不仅能提取文字信息,还能自动生成摘要,将冗长的文档内容以简洁明了的方式呈现给用户。此外,它还具备将文件内容转化为可视化图表的能力,帮助用户更直观地理解数据和信息,在学术研究、项目汇报等场景中发挥重要作用 。
- 开发者友好:对于开发者而言,Chatbox AI 是一款不可多得的利器。它为代码生成与调试提供全流程辅助,无论是 Python、Java 还是其他编程语言,都能提供有效的代码建议和错误排查帮助。同时,其支持的 LaTeX/Markdown 实时渲染功能,能让开发者在撰写技术文档、代码注释时,更清晰地表达复杂的公式和格式,显著提升开发效率 。
- 全平台覆盖:如前文所述,Chatbox AI 实现了 Windows、macOS、Linux 及移动端的完美适配,跨设备数据实时同步。用户在电脑上与 Chatbox AI 进行的对话记录、设置偏好等信息,在手机端登录时能实时同步,无需重新配置,真正做到随时随地延续使用体验,满足现代用户多设备办公、学习的需求 。
- 生态扩展性:Chatbox AI 通过开放 API 接入第三方服务,构建起个性化的 AI 协作生态。用户可以根据自身需求,引入更多功能和服务,例如与企业内部的 CRM 系统对接,实现客户信息的智能化管理;或与特定的行业数据库连接,获取专业领域的知识支持,进一步拓展了 Chatbox AI 的应用边界 。
6.3 安装使用
- 打开下载链接:https://chatboxai.app/zh#download。根据领取云主机的配置选择64位还是ARM64位。

下载后,在~/Downloads目录下可以找到它。右键打开终端,通过如下命令赋予可执行权限:
sudo chmod +x Chatbox-1.14.1-arm64.AppImage
然后运行它。

发现会报错:
./Chatbox-1.14.1-arm64.AppImage: error while loading shared libraries: libz.so: cannot open shared object file: No such file or directory
解决办法,安装缺少的运行库:
sudo apt install zlib1g-dev

再次运行,发现依然缺少运行库:
dlopen(): error loading libfuse.so.2
AppImages require FUSE to run.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
See [https://github.com/AppImage/AppImageKit/wiki/FUSE](https://github.com/AppImage/AppImageKit/wiki/FUSE)
for more information
解决办法,安装缺少的运行库:
sudo apt install libfuse2

再次运行。
./Chatbox-1.14.1-arm64.AppImage --no-sandbox
就可以正常启动了,如下图所示:

在使用之前,需要先配置模型提供方,这里你可以选择付费订阅ChatBox AI云,⼀个License可以⽀持五个设备,也可以领取华为云免费赠送的DeepSeek满血版 200W tokens来配置使用。
6.3.1 免费领取华为云200W tokens
访问华为云首页:https://www.huaweicloud.com/。搜索DeepSeek。然后在搜索结果里点击立即体检。

继续点击立即体验。

在线推理的预置服务中,找到免费服务,就可以看到华为云给我们赠送了DeepSeek r1和v3各200万,合计400万的DeepSeek满血版模型额度,大家可以领取使用。
6.3.2 ChatBox配置华为云DeepSeek
领取成功之后,点击右侧的使用说明按钮,根据提示获取API地址和模型名称。
- 进入API Key管理页面:https://console.huaweicloud.com/modelarts/?locale=zh-cn®ion=cn-southwest-2#/model-studio/authmanage。点击 创建API Key按钮,根据提示创建即可。

创建成功之后,就会自动创建秘钥,复制。

回到ChatBox主界面,点击设置,选择模型提供方,然后最下面找到添加按钮。

名字输入华为云,API模式选OpenAI API兼容,点击添加按钮。

然后填入API秘钥、API主机和API路径。

点击模型的新建按钮,输入DeepSeek-R1,点击保存即可。

到此为止,华为云免费赠送的DeepSeek就配置好了。接下来我们试用一下,点击新会话,右下角切换模型为华为云的DeepSeek-R1,prompt使用:用老舍的风格写一篇描述春天很美的200字作文。如下所示,分别是深度思考的过程和回答,可以看出,DeepSeek非常了解老舍的京味儿风格,不管是思考过程还是给出的实例文章,都紧贴老舍的写作风格,非常完美的再现了老舍先生朴实无华的文风。
- 深度思考过程:

- 回答:

7. MCP插件调用
在之前的文章中,我们提到过ChatBoxAI是支持联网搜索的,它是通过web_search插件来实现的该功能扩展,那么你是不是想问:除了ChatBoxAI工具,我们能不能也来调用一些插件来增加大模型的能力呢?答案是可以的,这就是本节课要讲的MCP了。
7.1 关于MCP
7.1.1 什么是MCP?

MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
7.1.2 MCP应用价值
在过去,大模型等 AI 应用使用数据时只能通过复制粘贴或上传知识库,这种方式极为局限,即便最强大的模型也会因数据隔离形成信息孤岛,每个新数据源都需重新定制实现,导致真正互联的系统难以扩展。而现在,MCP 通过服务器和客户端在 AI 与数据(包括本地数据和互联网数据)间架起桥梁,只要遵循这套协议就能实现 “万物互联”,其可与数据和文件系统、开发工具、Web 和浏览器自动化、生产力与通信工具及各种社区生态能力全部集成,形成强大的协作工作能力,价值不可估量。
7.1.3 MCP中的几个重要角色
在MCP协议中,有几个重要角色:
- MCP服务器:作为协议中枢,负责数据路由、规则管理和跨源协调,整合不同数据源并提供统一交互标准。比如:高德地图的MCP服务就通过MCP协议对外提供了ip地理位置、天气查询、POI查询、导航路线规划等等一系列能力。
- MCP客户端:部署在数据或AI应用端,按协议实现数据接入与AI能力调用,完成数据封装和通信交互。 比如ChatBoxAI就是众多支持MCP协议的客户端之一,我们可以在ChatBoxai上通过调用高德地图MCP实现天气查询功能。
- MCP市场:MCP工具的聚合与分发平台、MCP 工具市场和 MCP 导航平台。这类市场汇集了全球范围内可接入的 MCP Server 工具资源,为开发者提供了一个标准化工具的共享平台。
这几个核心角色通过MCP协议形成协作网络,打破数据孤岛,实现了数据与AI的互联。
7.2 接入高德地图MCP来实现天气查询
7.2.1 获取SSE url
参考mcpstore提供的高德地图MCP server页面,这次我们采取SSE方式来接入。
在页面上直接点击生成按钮(需登录),mcpstore会为我们生成一个高德地图MCP server的SSE url,直接复制它。
7.2.2 ChatBoxAI添加mcp server
打开ChatBoxAI,依次找到左下角设置-MCP-添加服务器
点击添加自定义服务器:
如下图所示,配置名称和URL之后,点击测试按钮,测试成功找到接口列表之后,点击保存按钮即可。
7.2.3 测试验证
同样,mcp server添加成功之后,在对话框下方点击MCP按钮,启用高德地图这个MCP。
然后询问:杭州明天早上8点下雨吗?,神奇的一幕又出现了,ChatBoxAI成功调用高德地图MCP的天气接口,帮我们查询到了明天的天气,并根据我的需求,帮我把明天早上8点的天气进行了归纳总结,因为下雨,还贴心了提醒我们记得带伞。到此,我们的第二个生活小助手也顺利搞定了。
8. 开发一个地区智能查询MCP
8.1 为什么要开发这个MCP?
在上一节内容中,为大家演示了通过高德地图MCP来查询杭州天气的功能。那么,如果我不明确说查询杭州天气,只问明天上午8点有雨吗,大模型因为不知道我们要查询哪个地区的天气,所以是无法调用MCP查询到天气的,是不是根据很傻很天真?
8.2 基于FastMCP开发MCP server
8.2.1 FastMCP简介
FastMCP作为新一代Python风格的MCP服务开发框架,相较传统MCP Server开发需手动编写代码处理协议解析、服务发现、错误处理等底层功能,通过标准化协议实现和自动化代码生成,减少开发者代码编写量70%以上,大大降低了MCP Server或Clients的开发门槛。
8.2.2 搭建开发环境
使用FastMCP开发MCP Server,只需要安装一个fastmcp库就可以了。可以通过pip来安装:
sudo pip3 install fastmcp -i https://mirrors.aliyun.com/pypi/simple
下面代码演示了一个最小MCP Server的,通过触发默认接口hello(),来返回一段打招呼的话。
from fastmcp import FastMCP
# 创建MCP实例
mcp = FastMCP("simple-server")
@mcp.tool()
def hello() -> str:
"""问候语"""
return "Hello from MCP Server!"
if __name__ == "__main__":
mcp.run()
8.2.3 实现地区查询功能

https://ipinfo.io/json是一个提供IP地址详细信息的Web服务接口。当你访问这个URL时(通常是通过HTTP GET请求),它会返回一个JSON格式的响应,其中包含与请求者的IP地址相关的各种信息。以下是对该服务的详细介绍:
- 返回的数据结构
{ "ip": "112.49.236.237", "hostname": "112.49.236.237clouds.com", "city": "Hangzhou", "region": "Zhejiang", "country": "CN", "loc": "29.8782,121.5494", "org": "AS9808 China Mobile Communications Group Co., Ltd.", "postal": "315000", "timezone": "Asia/Shanghai", "readme": "https://ipinfo.io/missingauth" }
其中,
- ip: 请求者的IP地址。例如:“112.49.236.237”。
- city: 请求者IP地址所在的城市。例如:“Ningbo”。
- region: 请求者IP地址所在的省份或地区。例如:“Zhejiang”。
- country: 请求者IP地址所在的国家代码。例如:“CN”(代表中国)。
- loc: 经纬度信息,用于地理位置定位。例如:“29.8782,121.5494”。
- org: 请求者IP地址所属的网络组织或ISP(互联网服务提供商)。例如:“AS9808 China Mobile Communications Group Co., Ltd.”。
- postal: 请求者IP地址所在的邮政编码。例如:“315000”。
- timezone: 请求者IP地址所在时区。例如:“Asia/Shanghai”。
- readme: 一个链接,通常用于提供关于API使用限制、认证要求或其他重要信息的页面。例如:“https://ipinfo.io/missingauth”(在没有适当认证时可能会返回此链接)。
- 使用场景
- 地理位置定位:通过IP地址获取用户的地理位置信息,用于本地化服务或分析用户分布。
- 网络安全:识别请求者的网络组织或ISP,用于网络安全分析或防范欺诈行为。
- 时区处理:根据用户的地理位置自动调整时间显示,提高用户体验。
- 数据分析:结合其他数据,对用户的行为进行更深入的分析和理解。
8.2.4 实现地区查询MCP server
话不多说,直接上代码,我实现了2个功能,一个是查询当前公网ip,对应API为get_public_ip;一个是获取当前所在城市,对应API为get_current_city。完整代码如下所示:
import httpx
from mcp.server.fastmcp import FastMCP
import mcp.types as types
from mcp.types import TextContent, ImageContent, EmbeddedResource
# 创建MCP服务器实例
mcp = FastMCP(
name="location-server",
version="1.0.0",
instructions="A MCP server for IP and location services."
)
async def get_public_ip(arguments: dict) -> list[types.TextContent]:
"""获取当前公网IP地址"""
try:
async with httpx.AsyncClient() as client:
response = await client.get("http://ifconfig.me")
response.raise_for_status()
return [types.TextContent(type="text", text=response.text.strip())]
except Exception as e:
return [types.TextContent(type="text", text=f"Error: {str(e)}")]
async def get_current_city(arguments: dict) -> list[types.TextContent]:
"""获取当前所在城市"""
try:
async with httpx.AsyncClient() as client:
response = await client.get("https://ipinfo.io/json")
response.raise_for_status()
result = response.json()
city = result.get("city", "Unknown")
return [types.TextContent(type="text", text=city)]
except Exception as e:
return [types.TextContent(type="text", text=f"Error: {str(e)}")]
async def list_tools() -> list[types.Tool]:
"""列出所有可用的工具"""
return [
types.Tool(
name="get_public_ip",
description="获取当前公网IP地址",
inputSchema={
"type": "object",
"properties": {}
}
),
types.Tool(
name="get_current_city",
description="获取当前所在城市名称",
inputSchema={
"type": "object",
"properties": {}
}
)
]
async def dispatch(name: str, arguments: dict) -> list[TextContent | ImageContent | EmbeddedResource] | None:
"""调度工具函数"""
match name:
case "get_public_ip":
return await get_public_ip(arguments)
case "get_current_city":
return await get_current_city(arguments)
case _:
raise ValueError(f"Unknown tool: {name}")
# 注册list_tools方法
mcp._mcp_server.list_tools()(list_tools)
# 注册dispatch方法
mcp._mcp_server.call_tool()(dispatch)
if __name__ == "__main__":
mcp.run()
8.2.5 在ChatBoxAI添加地区查询MCP server
打开ChatBoxAI,依次找到左下角设置-MCP-添加服务器
点击添加自定义服务器:
如下图所示,配置名称、类型(本地)、命令之后,点击测试按钮,测试成功找到我们的2个接口列表之后,点击保存按钮即可。
8.2.6 测试验证
在只启用我们这一个MCP server时,使用prompt查询mcp信息:请列出当前可用的所有MCP工具及其功能。如下所示,成功识别到。
再次询问:我在哪里?,可以看到,成功调用了我们实现的位置查询MCP。
此时,开启一个新对话,我们直接问:我这里明天下雨吗?,如下图所示,可以看到DeepSeek自动查询了当前位置然后调用了高德的天气接口,得到了我所在地区的天气信息,顺利实现功能!
9. 总结
到这里,本次案例就结束了。看似细微的技术改进,实则带来的是用户体验的颠覆性升级:一方面,实现“零输入”的无感交互,避免跨应用查询的繁琐操作;另一方面,通过动态定位消除“所在地区”的表述歧义,使天气服务从“被动响应”进化为“主动适配”。这种将定位技术与气象服务深度耦合的方案,正是智能时代服务精准化升级的典型实践,为构建更具场景化的生活服务生态奠定技术基础。
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐



所有评论(0)