服务器开发
了解如何构建自己的服务器,以便在 Claude 桌面版及其他客户端中使用。
在本教程中,我们将构建一个简单的 MCP 天气服务器,并将其连接到 Claude 桌面版主机。我们将从基本设置开始,然后逐步过渡到更复杂的用例。
我们将构建什么
目前,大多数大语言模型还不具备直接获取实时天气预报和严重天气警报的能力。通过 MCP 技术,我们可以轻松解决这一问题!
我们将创建一个服务器,提供两个核心工具:get-alerts
(获取警报) 和 get-forecast
(获取预报)。随后,我们会将这个服务器连接到 MCP 主机,本教程中我们选择使用 Claude 桌面版作为示例:
该服务器实际上可以连接到任何支持MCP的客户端。我们选择Claude桌面版仅是为了演示的简便性。此外,我们还提供了如何构建自己的客户端的指南和其他可用客户端的列表。
MCP 核心概念
MCP 服务器可以提供三种主要类型的功能:
- 资源 (Resources):客户端可读取的类文件数据,例如 API 响应结果或文件内容等
- 工具 (Tools):可由大语言模型调用的函数,这些调用会先获取用户批准
- 提示 (Prompts):帮助用户高效完成特定任务的预设模板
本教程将主要聚焦于如何实现和使用工具功能。
让我们开始构建我们的天气服务器吧!您可以在这里找到我们将要构建的完整代码。
前提知识
本快速入门假设您熟悉:
- Python
- 像 Claude 这样的大语言模型
系统要求
- 已安装 Python 3.10 或更高版本。
- 您必须使用 Python MCP SDK 1.2.0 或更高版本。
设置您的环境
首先,让我们安装 uv
并设置 Python 项目和环境:
安装完成后请确保重启终端,以确保 uv
命令能被正确识别。
现在,让我们创建并设置我们的项目:
现在让我们开始构建您的服务器。
构建您的服务器
导入包和设置实例
将以下代码添加到您的 weather.py
文件顶部:
FastMCP 类使用 Python 类型提示和文档字符串自动生成工具定义,这使得创建和维护 MCP 工具变得简单。
辅助函数
接下来,让我们添加辅助函数,用于查询和格式化来自国家气象服务 API 的数据:
实现工具执行
工具执行处理程序负责实际执行每个工具的逻辑。让我们添加它:
运行服务器
最后,让我们初始化并运行服务器:
您的服务器已经完成!运行 uv run weather.py
来确认一切正常工作。
现在让我们从一个现有的 MCP 主机 (Claude 桌面版) 测试您的服务器。
使用 Claude 桌面版测试您的服务器
Claude桌面版目前尚未支持Linux系统。如果您使用的是Linux,可以参考构建客户端教程,构建一个可连接到我们刚刚创建的服务器的MCP客户端。
首先,请确保您已经安装了 Claude 桌面版。您可以在这里下载最新版本。如果您已经安装了 Claude 桌面版,请务必确保它已更新至最新版本。
接下来,我们需要为您的 MCP 服务器配置 Claude 桌面版。要完成这一步,请在文本编辑器中打开 Claude 桌面版的配置文件,路径为 ~/Library/Application Support/Claude/claude_desktop_config.json
。如果该文件不存在,您需要创建它。
例如,如果您已安装 VS Code 编辑器:
然后,您需要在 mcpServers
键下添加您的服务器配置。请注意,只有当至少配置了一个服务器时,Claude 桌面版中的 MCP 相关界面元素才会显示。
在本例中,我们将添加一个天气服务器,配置如下:
您可能需要在command
字段中使用uv
可执行文件的完整路径。您可以通过在MacOS/Linux系统上运行which uv
命令或在Windows系统上运行where uv
命令来获取这个路径。
务必使用服务器的绝对路径,而不是相对路径。请将示例中的"/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather"替换为您实际项目的完整路径。
这段配置向 Claude 桌面版说明:
1。有一个名为 "weather" 的 MCP 服务器
2。需要通过运行 uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py
命令来启动它
完成配置后,保存文件并重新启动 Claude 桌面版应用程序。
功能测试
首先,让我们确认 Claude 桌面版能够识别我们在 weather
服务器中提供的两个工具。您可以通过界面中的锤子图标来确认:
点击锤子图标后,您应该能看到可用工具列表:
如果您的服务器没有被 Claude 桌面版识别,请查看下方故障排除部分获取调试建议。
如果锤子图标已正常显示,您可以通过在 Claude 桌面版中输入以下问题来测试服务器功能:
- 萨克拉门托的天气如何?
- 德克萨斯州有哪些活跃的天气警报?
请注意,由于使用的是美国国家气象服务API,此服务仅支持查询美国地区的天气信息。
工作原理解析
当您向 Claude 提问时,背后发生了以下过程:
- 客户端将您的问题发送给 Claude
- Claude 分析可用工具并决定使用哪个工具来回答您的问题
- 客户端通过 MCP 协议调用服务器上的相应工具
- 工具执行结果返回给 Claude
- Claude 根据工具返回的数据生成自然语言回答
- 最终答案显示给您!
故障排除
需更高级的故障排除技巧,请参考我们的MCP调试指南
下一步
最后更新于