贵州省建设厅的网站,安卓优化大师老版本下载,东莞建设建网站,深圳设计网站有限公司MCP简介
MCP#xff08;Model Context Protocol#xff09;#xff0c;模型上下文协议#xff0c;是由美国科技公司Anthropic#xff08;Claude就是是由Anthropic公司打造的一系列高性能且智能的AI大语言模型#xff09;在2024年11月份开源的一项用于解决LLM与外部数据源…MCP简介
MCPModel Context Protocol模型上下文协议是由美国科技公司AnthropicClaude就是是由Anthropic公司打造的一系列高性能且智能的AI大语言模型在2024年11月份开源的一项用于解决LLM与外部数据源和工具之间集成问题的标准化协议。更直白一些的说法就是MCP为LLM应用标准化了手脚让LLM可以根据需要获取一切可以连接的数据、直接执行一切可以连接的工具。
引入MCP后的变化[1] 引入MCP后核心变化在于如何连接数据和调用工具的方式。MCP定义了一套协议和规范其中包括MCP的客户端clients这些客户端被包裹在AI应用中。而MCP服务器Server则与应用分离如果需要在本地计算机上操作则需在本地计算机上启动MCP服务器。这样AI应用便可与服务器通过MCP协议如JSON RPC进行通信以完成数据读取、文件操作等各种动作。 本篇文章是一篇基础且快速的MCP实践博文因此暂不对MCP的概念、核心架构及其的提出对生成式AI应用发展的影响等做更多深入的介绍感兴趣的朋友可以阅读以下好文自行学习了解
[1] 因为Manus爆火的 Claude MCP90%人的认知可能都是错的
MCP 快速上手Quick Hands-On
首先去官网下载 Claude Desktop然后我们按照 官方文档 提供给 MCP servers Developers的命令进行基于Python开发运行 MCP servers环境的安装部署。
实践环境介绍
机型 Apple M1 Pro
操作系统 macOS Sequoia version 15.5打开终端执行以下命令安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh重启终端后查看 uv 版本验证 uv 已成功安装
uv --version
uv 0.7.12 (dc3fd4647 2025-06-06)初始化一个名为weather的MCP server项目该项目包含两个服务获取美国某州的气象预警 获取指定经纬度的天气预报
# 第一次初始化uv项目环境的话需要使用--no-workspace否则会报错用于忽略父目录的 pyproject.toml直接在 weather 目录下初始化环境
uv init --no-workspace weather
# 进入到执行上一步命令生成的项目目录
cd weather
# 创建 Python 虚拟环境会在当前目录下生成 .venv 文件夹
# 需要注意一点如果你和我一样是使用miniconda进行多python环境的管理请确保在Python3.10或更高版本的环境下执行以下命令
uv venv
# 激活虚拟环境
source .venv/bin/activate
# 安装 mcp带 cli 工具和 httpx 依赖包到当前虚拟环境
uv add mcp[cli] httpx
# 创建一个空的 weather.py 文件用于编写你的 FastMCP 服务器代码
touch weather.py编辑 weather.py 文件写入拷贝自 MCP 官方 github repo 的如下完整代码为了方便大家更快熟悉代码我请github copilot GPT-4.1给关键代码行加上了中文注释
from typing import Any
import httpx
from mcp.server.fastmcp import FastMCP# 初始化 FastMCP 服务器服务名为 weather
mcp FastMCP(weather)# 常量NWS API 基础地址和 User-Agent
NWS_API_BASE https://api.weather.gov
USER_AGENT weather-app/1.0# 异步请求 NWS API带异常处理返回字典或 None
async def make_nws_request(url: str) - dict[str, Any] | None:向 NWS API 发起请求异常时返回 None。headers {User-Agent: USER_AGENT,Accept: application/geojson}async with httpx.AsyncClient() as client:try:response await client.get(url, headersheaders, timeout30.0)response.raise_for_status()return response.json()except Exception:return None# 格式化单条气象预警信息为可读字符串
def format_alert(feature: dict) - str:将单条预警 feature 格式化为可读字符串。props feature[properties]return f
Event: {props.get(event, Unknown)}
Area: {props.get(areaDesc, Unknown)}
Severity: {props.get(severity, Unknown)}
Description: {props.get(description, No description available)}
Instructions: {props.get(instruction, No specific instructions provided)}
# 工具函数获取指定州的气象预警
mcp.tool()
async def get_alerts(state: str) - str:获取美国某州的气象预警。参数state - 两位州代码如 CA, NYurl f{NWS_API_BASE}/alerts/active/area/{state}data await make_nws_request(url)if not data or features not in data:return 无法获取预警或无预警信息。if not data[features]:return 该州暂无有效预警。alerts [format_alert(feature) for feature in data[features]]return \n---\n.join(alerts)# 工具函数获取指定经纬度的天气预报
mcp.tool()
async def get_forecast(latitude: float, longitude: float) - str:获取指定位置的天气预报。参数latitude - 纬度longitude - 经度# 先获取该点的 forecast 网格接口points_url f{NWS_API_BASE}/points/{latitude},{longitude}points_data await make_nws_request(points_url)if not points_data:return 无法获取该位置的预报数据。# 从 points 响应中获取 forecast 详细预报 URLforecast_url points_data[properties][forecast]forecast_data await make_nws_request(forecast_url)if not forecast_data:return 无法获取详细预报信息。# 格式化前 5 个时段的预报信息periods forecast_data[properties][periods]forecasts []for period in periods[:5]: # 只显示最近 5 个时段forecast f
{period[name]}:
Temperature: {period[temperature]}°{period[temperatureUnit]}
Wind: {period[windSpeed]} {period[windDirection]}
Forecast: {period[detailedForecast]}
forecasts.append(forecast)return \n---\n.join(forecasts)if __name__ __main__:# 启动 FastMCP 服务器使用 stdio 作为通信方式mcp.run(transportstdio)在第3步创建的虚拟Python环境下运行 weather.py 代码若无异常输出则可进行到下一步打开下载的 Claude Desktop 应用点击 settings - Developer - 点击左下方的 “Edit Config” 按钮 编辑选中的 claude_desktop_config.json 文件写入以下内容注意“command” 字段的值是 uv 的路径可通过 which uv 获取
{mcpServers: {weather: {command: /Users/xxx/.local/bin/uv,args: [--directory,/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather,run,weather.py]}}
}写入保存后重启 Claude Desktop 应用在对话栏的左下角点击 “Search and tools” 图标就可以看到识别成功的名为weather的MCP服务 再点入进去就可以看到服务里包含的两个具体工具get_alerts() 用于获取美国某州的气象预警 get_forecast()获取指定经纬度的天气预报 我们来提问看看实际效果。 10.1 询问天气How is the weather in Sacramento? 10.2 获取加利福尼亚州的天气预警What are the current weather warnings for the state of California?
总体效果还是很不错的 MCP servers对于实力强劲的LLM底座简直是如虎添翼从此LLM有了标准化的手脚可以做更多实际又落地、对各行各业有意义和价值的事
话不多说一起来探索吧
MCP相关资源
官方文档教程https://modelcontextprotocol.io/introductionMCP 官方 servers repo: https://github.com/modelcontextprotocol/serversMCP官方文档之支持MCP集成的应用列表MCP Clientshttps://modelcontextprotocol.io/clientsMCP Hub: https://github.com/ravitemer/mcp-hubAwesome MCP Clients