news 2026/5/15 21:44:33

claude code(五):【Claude Code官方最佳实践3️⃣】:mcp实战-写一个mcp,并在claude使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
claude code(五):【Claude Code官方最佳实践3️⃣】:mcp实战-写一个mcp,并在claude使用

一、编写mcp工具并提供出来

1.1 第一步:获取高德地图 API 密钥 (Key)

  1. 访问高德开放平台官网,注册一个开发者账号。
  2. 进入控制台,点击“应用管理” -> “我的应用” -> “创建新应用”。
  3. 创建好应用后,点击“添加 Key”,服务平台选择 Web服务。
  4. 复制生成的那串 Key(一串字母和数字的组合),待会儿代码里要用。

1.2 第二步:编写天气 MCP 服务端代码

在你的电脑上创建一个文件夹(比如叫 weather-mcp),在里面新建一个 weather.py 文件,把下面的代码复制进去,记得把 你的_高德_API_KEY 替换成你刚才申请的真实 Key:

importosimporthttpxfrommcp.server.fastmcpimportFastMCP# 替换为你自己的高德地图 API KeyAMAP_KEY="你的_高德_API_KEY"mcp=FastMCP("AmapWeather")@mcp.tool()asyncdefget_weather(city:str)->str:""" 查询指定城市的实时天气情况 Args: city: 城市名称(例如:宁波、北京)或城市编码(adcode) """# 高德天气API接口url="https://restapi.amap.com/v3/weather/weatherInfo"params={"key":AMAP_KEY,"city":city,"extensions":"base"# base返回实况天气,all返回预报天气}asyncwithhttpx.AsyncClient()asclient:resp=awaitclient.get(url,params=params)data=resp.json()ifdata.get("status")=="1"anddata.get("lives"):live=data["lives"][0]return(f"📍 城市:{live['province']}{live['city']}\n"f"🌤️ 天气:{live['weather']}\n"f"🌡️ 温度:{live['temperature']}°C\n"f"💨 风向:{live['winddirection']}{live['windpower']}级\n"f"💧 湿度:{live['humidity']}%\n"f"🕒 发布时间:{live['reporttime']}")else:returnf"❌ 查询失败:{data.get('info','未知错误,请检查城市名或API Key')}"if__name__=="__main__":mcp.run()

注:运行前请确保你安装了必要的依赖库,可以在终端执行:pip install mcp httpx

1.3 第三步:将天气服务接入 Claude Code

代码写好后,打开你的 Claude Code 终端,直接对它说下面这句话(把路径换成你 weather.py 所在的真实绝对路径):

“帮我添加一个本地 MCP 服务器,名字叫 weather,执行命令是 python 你的文件夹绝对路径/weather.py。”

Claude Code 会自动帮你修改配置文件。配置完成后,重启一下 Claude Code 或者重新开启一个对话,就可以开始验收成果了!

你可以直接问它:

  • “宁波现在的天气怎么样?”
  • “北京今天冷不冷?”

二、执行步骤

  1. 启动vscode,mcp程序;

  2. 在weather_gd路径创建.mcp.json文件,并设置mcpServiers:

  3. 你的claude目录,新增.mcp.json文件(这一步我不知道是不是必须的,等我下次验证后,再来改):

  4. 重启claude,并询问当前mcp工具:

  5. 在claude code里问:

我的疑问,为啥我vscode控制台没有打印日志:

三、问题与解决

3.1 python环境问题

基于mac环境,升级python环境问题解决

3.2 安装pip3 install httpx "fastmcp[all]"出错问题解决

执行下面命令:

pip3installhttpx"fastmcp[all]"


3.2.1 报错原因:

这个报错是 Python 3.11+ 版本引入的一种保护机制(PEP 668)。它的意思是:“这是一个由外部(Homebrew)管理的 Python 环境,为了防止把你的 Python 环境搞乱,我不允许你直接用 pip 往里面强行安装包。”
既然你是在做开发(写.py文件),最标准、最推荐的做法是使用“虚拟环境”

3.2.2 解决方法

请在终端中依次运行以下三行命令:

  1. 创建虚拟环境
    在你的项目文件夹(weather_gd)里创建一个独立的“小环境”
python3-mvenv .venv
  1. 激活虚拟环境
    告诉终端“我现在要用这个小环境”:
source.venv/bin/activate

行完这一步后,你会看到终端提示符前面多了一个 (.venv),说明激活成功了。

  1. 再次安装库
    现在你可以随意安装库了,不会再报错:
pipinstallhttpx"fastmcp[all]"

3.2.3 后续开发注意事项

  1. 每次打开终端都要激活
    以后每次你关闭终端再重新打开,或者重启电脑后,如果要继续写代码,都需要先运行第 2 步的激活命令:
source.venv/bin/activate
  1. VS Code 设置(如果你用 VS Code)
  • 按下Cmd + Shift + P打开命令面板。
  • 输入Python: Select Interpreter并回车。
  • 选择那个带有.venv字样的解释器。
  • 这样VS Code就能识别你安装的库,代码里的红线也会消失。

3.2.3 为什么不推荐其他方法?

  • 不推荐 --break-system-packages:虽然加上这个参数能强行安装,但这会污染你的 Python 全局环境,可能导致 Homebrew 管理的其他 Python 工具出问题。
  • 不推荐 --user:这会把包安装到用户目录下,虽然不报错,但不利于项目管理和环境隔离。

3.2 执行【1.2】的python脚步出现错误


看报错信息Invalid JSON: expected value at line 1 column 2input_value='source ...',原因非常明确:MCP 服务器把虚拟环境的激活命令输出了,导致 Claude 读到了非 JSON 格式的乱码
MCP 的stdio模式要求服务端只能输出标准的 JSON 通信数据,任何printsource命令的输出或日志都会破坏协议。

解决方法

请按照以下步骤修改你的配置或启动方式:

  1. 新增.mcp.json配置文件,文件内容如下:
{"mcpServers":{"weather":{"command":"/Users/qian/Document_Management/Test_Space/weather_gd/.venv/bin/python","args":["/Users/qian/Document_Management/Test_Space/weather_gd/weather.py"]}}}

  1. 启动vscode,mcp程序

重启成功。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 21:43:27

合规API中转访问Claude Code避坑指南

要在中国大陆地区稳定、合规地访问Claude Code并有效规避Anthropic对国内IP和虚拟卡的严格风控,通过合规中转平台(如infai示例cc)无限API部署技术方案是目前被广泛验证的有效路径。该方案的核心是构建一个“用户-合规中转平台-官方API”的技术…

作者头像 李华
网站建设 2026/5/15 21:40:00

Claw一键部署方案:Docker Compose自动化配置与生产级优化指南

1. 项目概述:一个让Claw变得触手可及的部署方案如果你在GitHub上搜索过Claw相关的项目,大概率会看到stfurkan/claw-easy-setup这个仓库。这个名字本身就充满了吸引力——“easy setup”,对于任何一个被复杂配置和依赖关系折磨过的开发者来说&…

作者头像 李华
网站建设 2026/5/15 21:39:52

终极解放:如何用bili2text将B站视频秒变可编辑文字笔记

终极解放:如何用bili2text将B站视频秒变可编辑文字笔记 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 你是否曾为了整理一个精彩的B站视频内容&a…

作者头像 李华
网站建设 2026/5/15 21:38:23

80.人工智能实战:企业大模型平台如何分层设计?从零散应用到统一网关、评测、知识库、Agent 与治理平台

人工智能实战:企业大模型平台如何分层设计?从零散应用到统一网关、评测、知识库、Agent 与治理平台 一、问题场景:每个团队都在接大模型,最后变成一堆烟囱系统 企业开始使用大模型时,通常是从单点应用开始: 客服团队做客服助手 HR 做制度问答 研发做代码助手 运营做文案…

作者头像 李华
网站建设 2026/5/15 21:27:07

Aseprite插件AseIcoExport:一键生成Windows与macOS应用图标

1. 项目概述:一个被低估的图标导出工具如果你是一个独立开发者,或者在一个小团队里负责UI/UX设计到前端实现的完整链路,那你一定对“图标导出”这个环节又爱又恨。爱的是,一个精心设计的图标集能让产品界面瞬间提升质感&#xff1…

作者头像 李华