服务器开发者指南
开始构建您自己的服务器,用于 Claude for Desktop 和其他客户端
在本教程中,我们将构建一个简单的 MCP 天气服务器并将其连接到宿主应用 Claude for Desktop。我们将从基本设置开始,然后逐步进行到更复杂的用例
我们将构建什么
许多大语言模型(包括 Claude)目前还没有获取天气预报和严重天气警报的能力。让我们使用 MCP 来解决这个问题
我们将构建一个服务器,提供两个工具:get-alerts
和 get-forecast
。然后我们将服务器连接到 MCP 宿主应用(在本例中是 Claude for Desktop):
MCP 核心概念
MCP 服务器可以提供三种主要类型的功能:
- 资源:客户端可以读取的类文件数据(如 API 响应或文件内容)
- 工具:可以由大语言模型调用的函数(需要用户批准)
- 提示:帮助用户完成特定任务的预先编写的模板
本教程将主要关注工具
让我们开始构建我们的天气服务器吧!你可以在这里找到我们将要构建的完整代码
前置知识
本快速入门指南假设您熟悉:
- 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 for Desktop 来测试您的服务器
使用 Claude for Desktop 测试您的服务器
Claude for Desktop 尚未在 Linux 上可用。Linux 用户可以继续学习构建客户端教程,以构建连接到我们刚刚构建的服务器的 MCP 客户端
首先,确保您已经安装了 Claude for Desktop。您可以在这里安装最新版本。如果您已经安装了 Claude for Desktop,请确保它已更新到最新版本
我们需要为您想要使用的任何 MCP 服务器配置 Claude for Desktop。为此,请在文本编辑器中打开您的 Claude for Desktop 应用程序配置文件,路径为 ~/Library/Application Support/Claude/claude_desktop_config.json
。如果该文件不存在,请确保创建它
然后,您将在 mcpServers
键中添加您的服务器。MCP 用户界面元素只有在至少正确配置了一个服务器的情况下才会在 Claude for Desktop 中显示
在这种情况下,我们将添加我们的单个天气服务器,如下所示:
您可能需要在 command
字段中放入 uv
可执行文件的完整路径。您可以通过在 MacOS/Linux 上运行 which uv
或在 Windows 上运行 where uv
来获取这个路径
确保您使用服务器的绝对路径
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP 服务器
- 通过运行
uv --directory /绝对/路径/到/父/文件夹/weather run weather
来启动它
保存文件,并重启 Claude for Desktop
让我们开始构建我们的天气服务器吧!你可以在这里找到我们将要构建的完整代码
前置知识
本快速入门指南假设您熟悉:
- 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 for Desktop 来测试您的服务器
使用 Claude for Desktop 测试您的服务器
Claude for Desktop 尚未在 Linux 上可用。Linux 用户可以继续学习构建客户端教程,以构建连接到我们刚刚构建的服务器的 MCP 客户端
首先,确保您已经安装了 Claude for Desktop。您可以在这里安装最新版本。如果您已经安装了 Claude for Desktop,请确保它已更新到最新版本
我们需要为您想要使用的任何 MCP 服务器配置 Claude for Desktop。为此,请在文本编辑器中打开您的 Claude for Desktop 应用程序配置文件,路径为 ~/Library/Application Support/Claude/claude_desktop_config.json
。如果该文件不存在,请确保创建它
然后,您将在 mcpServers
键中添加您的服务器。MCP 用户界面元素只有在至少正确配置了一个服务器的情况下才会在 Claude for Desktop 中显示
在这种情况下,我们将添加我们的单个天气服务器,如下所示:
您可能需要在 command
字段中放入 uv
可执行文件的完整路径。您可以通过在 MacOS/Linux 上运行 which uv
或在 Windows 上运行 where uv
来获取这个路径
确保您使用服务器的绝对路径
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP 服务器
- 通过运行
uv --directory /绝对/路径/到/父/文件夹/weather run weather
来启动它
保存文件,并重启 Claude for Desktop
让我们开始构建我们的天气服务器!你可以在这里找到我们将要构建的完整代码
前置知识
本快速入门指南假设您熟悉:
- TypeScript
- 像 Claude 这样的大语言模型
系统要求
对于 TypeScript,请确保您已安装最新版本的 Node
设置您的环境
首先,如果您尚未安装 Node.js 和 npm,请安装它们。您可以从 nodejs.org 下载它们 验证您的 Node.js 安装:
对于本教程,您需要 Node.js 版本 16 或更高版本
现在,让我们创建并设置我们的项目:
更新您的 package.json 以添加 type: “module” 和一个构建脚本:
在项目根目录下创建一个 tsconfig.json
:
现在让我们开始构建您的服务器
构建您的服务器
导入包并设置实例
将这些添加到您的 src/index.ts
顶部:
辅助函数
接下来,让我们添加我们的辅助函数,用于查询和格式化来自国家气象服务 API 的数据:
实现工具执行
工具执行处理程序负责实际执行每个工具的逻辑。让我们添加它:
运行服务器
最后,实现主函数来运行服务器:
确保运行 npm run build
来构建您的服务器!这是让您的服务器连接的一个非常重要的步骤
现在让我们使用现有的 MCP 宿主应用 Claude for Desktop 来测试您的服务器
使用 Claude for Desktop 测试您的服务器
Claude for Desktop 尚未在 Linux 上可用。Linux 用户可以继续学习构建客户端教程,以构建连接到我们刚刚构建的服务器的 MCP 客户端
首先,确保您已经安装了 Claude for Desktop。您可以在这里安装最新版本。如果您已经安装了 Claude for Desktop,请确保它已更新到最新版本
我们需要为您想要使用的任何 MCP 服务器配置 Claude for Desktop。为此,请在文本编辑器中打开您的 Claude for Desktop 应用程序配置文件,路径为 ~/Library/Application Support/Claude/claude_desktop_config.json
。如果该文件不存在,请确保创建它
然后,您将在 mcpServers
键中添加您的服务器。MCP 用户界面元素只有在至少正确配置了一个服务器的情况下才会在 Claude for Desktop 中显示
在这种情况下,我们将添加我们的单个天气服务器,如下所示:
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP 服务器
- 通过运行
node /绝对/路径/到/父/文件夹/weather/build/index.js
来启动它
保存文件,并重启 Claude for Desktop
这是基于 Spring AI MCP 自动配置和引导启动器的快速入门演示 要了解如何手动创建同步和异步 MCP 服务器,请参阅 Java SDK 服务器 文档
让我们开始构建我们的天气服务器! 你可以在这里找到我们将要构建的完整代码
有关更多信息,请参阅 MCP 服务器引导启动器 参考文档 有关手动 MCP 服务器实现,请参阅 MCP 服务器 Java SDK 文档
系统要求
- 安装了 Java 17 或更高版本
- Spring Boot 3.3.x 或更高版本
设置您的环境
使用 Spring Initizer 引导项目
您需要添加以下依赖项:
然后通过设置应用程序属性来配置您的应用程序:
服务器配置属性 记录了所有可用的属性
现在让我们开始构建您的服务器
构建您的服务器
天气服务
让我们实现一个 WeatheService.java,它使用 REST 客户端查询国家气象服务 API 的数据:
@Service
注解将在您的应用程序上下文中自动注册服务
Spring AI @Tool
注解使创建和维护 MCP 工具变得容易
自动配置将自动向 MCP 服务器注册这些工具
创建您的引导应用程序
使用 MethodToolCallbackProvider
工具将 @Tools
转换为 MCP 服务器使用的可操作回调
运行服务器
最后,让我们构建服务器:
这将在 target
文件夹中生成一个 mcp-weather-stdio-server-0.0.1-SNAPSHOT.jar
文件
现在让我们使用现有的 MCP 宿主应用 Claude for Desktop 来测试您的服务器
使用 Claude for Desktop 测试您的服务器
Claude for Desktop 尚未在 Linux 上可用
首先,确保您已经安装了 Claude for Desktop 您可以在这里安装最新版本。如果您已经安装了 Claude for Desktop,请确保它已更新到最新版本
我们需要为您想要使用的任何 MCP 服务器配置 Claude for Desktop
为此,请在文本编辑器中打开您的 Claude for Desktop 应用程序配置文件,路径为 ~/Library/Application Support/Claude/claude_desktop_config.json
如果该文件不存在,请确保创建它
然后,您将在 mcpServers
键中添加您的服务器
MCP 用户界面元素只有在至少正确配置了一个服务器的情况下才会在 Claude for Desktop 中显示
在这种情况下,我们将添加我们的单个天气服务器,如下所示:
确保您使用服务器的绝对路径
这告诉 Claude for Desktop:
- 有一个名为 “my-weather-server” 的 MCP 服务器
- 通过运行
java -jar /绝对/路径/到/父/文件夹/mcp-weather-stdio-server-0.0.1-SNAPSHOT.jar
来启动它
保存文件,并重启 Claude for Desktop
使用 Java 客户端测试您的服务器
手动创建 MCP 客户端
使用 McpClient
连接到服务器:
使用 MCP 客户端引导启动器
创建一个使用 spring-ai-mcp-client-spring-boot-starter
依赖的新引导启动器应用程序:
并设置 spring.ai.mcp.client.stdio.servers-configuration
属性指向您的 claude_desktop_config.json
您可以重用现有的 Anthropic Desktop 配置:
当您启动客户端应用程序时,自动配置将自动从 claude_desktop_config.json 创建 MCP 客户端
有关更多信息,请参阅 MCP 客户端引导启动器 参考文档
更多 Java MCP 服务器示例
starter-webflux-server 演示了如何使用 SSE 传输创建 MCP 服务器 它展示了如何使用 Spring Boot 的自动配置功能定义和注册 MCP 工具、资源和提示
使用命令测试
让我们确保 Claude for Desktop 正在检测到我们在 weather
服务器中公开的两个工具。您可以通过查找锤子 图标来做到这一点:
点击锤子图标后,您应该看到列出的两个工具:
如果您的服务器没有被 Claude for Desktop 检测到,请前往故障排除部分获取调试提示
如果锤子图标已显示,您现在可以通过在 Claude for Desktop 中运行以下命令来测试您的服务器:
- 萨克拉门托的天气怎么样?
- 德克萨斯州有哪些活跃的天气警报?
由于这是美国国家气象服务,查询只适用于美国位置
底层发生了什么
当您提出问题时:
- 客户端将您的问题发送给 Claude
- Claude 分析可用的工具并决定使用哪一个
- 客户端通过 MCP 服务器执行所选的工具
- 结果被发送回 Claude
- Claude 制定自然语言响应
- 响应显示给您!
故障排除
有关更高级的故障排除,请查看我们的调试 MCP 指南