面向服务器开发者
学习如何构建自己的服务器以在 Claude for Desktop 和其他客户端中使用。
在本教程中,我们将构建一个简单的 MCP 天气服务器并将其连接到宿主程序 Claude for Desktop。我们将从基本设置开始,然后逐步过渡到更复杂的用例。
我们要构建什么
许多 LLM 目前还没有获取天气预报和严重天气预警的能力。让我们用 MCP 来解决这个问题!
我们将构建一个暴露两个工具的服务器:get-alerts
和 get-forecast
。然后我们将服务器连接到 MCP 宿主程序(在本例中是 Claude for Desktop):
MCP 核心概念
MCP 服务器可以提供三种主要类型的功能:
- 资源:客户端可以读取的类文件数据(如 API 响应或文件内容)
- 工具:可以被 LLM 调用的函数(需要用户批准)
- 提示:帮助用户完成特定任务的预写模板
本教程将主要关注工具。
让我们开始构建我们的天气服务器!你可以在这里找到我们将要构建的完整代码。
前置知识
本快速入门假设你熟悉:
- Python
- Claude 等 LLM
系统要求
- 已安装 Python 3.10 或更高版本
- 必须使用 Python MCP SDK 1.2.0 或更高版本
设置环境
首先,让我们安装 uv
并设置 Python 项目和环境:
之后请务必重启终端,以确保 uv
命令被识别。
现在,让我们创建并设置我们的项目:
现在让我们开始构建你的服务器。
Building your server
导入包并设置实例
将这些添加到 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
。如果文件不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后你将在 mcpServers
键中添加你的服务器。只有当至少一个服务器被正确配置时,MCP UI 元素才会显示在 Claude for Desktop 中。
在这种情况下,我们将像这样添加我们的单个天气服务器:
你可能需要在 command
字段中放入 uv
可执行文件的完整路径。你可以通过在 MacOS/Linux 上运行 which uv
或在 Windows 上运行 where uv
来获取此路径。
确保你传入服务器的绝对路径。
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP 服务器
- 通过运行
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py
来启动它
保存文件,并重启 Claude for Desktop。
让我们开始构建我们的天气服务器!你可以在这里找到我们将要构建的完整代码。
前置知识
本快速入门假设你熟悉:
- Python
- Claude 等 LLM
系统要求
- 已安装 Python 3.10 或更高版本
- 必须使用 Python MCP SDK 1.2.0 或更高版本
设置环境
首先,让我们安装 uv
并设置 Python 项目和环境:
之后请务必重启终端,以确保 uv
命令被识别。
现在,让我们创建并设置我们的项目:
现在让我们开始构建你的服务器。
Building your server
导入包并设置实例
将这些添加到 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
。如果文件不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后你将在 mcpServers
键中添加你的服务器。只有当至少一个服务器被正确配置时,MCP UI 元素才会显示在 Claude for Desktop 中。
在这种情况下,我们将像这样添加我们的单个天气服务器:
你可能需要在 command
字段中放入 uv
可执行文件的完整路径。你可以通过在 MacOS/Linux 上运行 which uv
或在 Windows 上运行 where uv
来获取此路径。
确保你传入服务器的绝对路径。
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP 服务器
- 通过运行
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py
来启动它
保存文件,并重启 Claude for Desktop。
让我们开始构建我们的天气服务器!你可以在这里找到我们将要构建的完整代码。
前置知识
本快速入门假设你熟悉:
- TypeScript
- Claude 等 LLM
系统要求
对于 TypeScript,请确保你已安装最新版本的 Node。
设置你的环境
首先,如果你还没有安装 Node.js 和 npm,请先安装它们。你可以从 nodejs.org 下载。 验证你的 Node.js 安装:
对于本教程,你需要 Node.js 16 或更高版本。
现在,让我们创建并设置我们的项目:
更新你的 package.json 以添加 type: “module” 和一个构建脚本:
在你的项目根目录下创建一个 tsconfig.json
:
现在让我们开始构建你的服务器。
Building your server
导入包并设置实例
将这些添加到你的 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
。如果文件不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后你将在 mcpServers
键中添加你的服务器。只有当至少一个服务器被正确配置时,MCP UI 元素才会显示在 Claude for Desktop 中。
在这种情况下,我们将像这样添加我们的单个天气服务器:
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP 服务器
- 通过运行
node /ABSOLUTE/PATH/TO/PARENT/FOLDER/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 Initializer 来引导项目。
你需要添加以下依赖项:
然后通过设置应用程序属性来配置你的应用程序:
服务器配置属性 文档列出了所有可用的属性。
现在让我们开始构建你的服务器。
Building your server
天气服务
让我们实现一个 WeatherService.java,它使用 REST 客户端从国家气象局 API 查询数据:
@Service
注解会自动在你的应用程序上下文中注册该服务。
Spring AI @Tool
注解使得创建和维护 MCP 工具变得容易。
自动配置将自动向 MCP 服务器注册这些工具。
创建你的 Boot 应用程序
使用 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
。
如果文件不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后你将在 mcpServers
键中添加你的服务器。
只有当至少一个服务器被正确配置时,MCP UI 元素才会显示在 Claude for Desktop 中。
在这种情况下,我们将像这样添加我们的单个天气服务器:
确保你传入服务器的绝对路径。
这告诉 Claude for Desktop:
- 有一个名为 “my-weather-server” 的 MCP 服务器
- 通过运行
java -jar /ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp-weather-stdio-server-0.0.1-SNAPSHOT.jar
来启动它
保存文件,并重启 Claude for Desktop。
使用 Java 客户端测试你的服务器
手动创建 MCP 客户端
使用 McpClient
连接到服务器:
使用 MCP 客户端启动器
使用 spring-ai-starter-mcp-client
依赖项创建一个新的启动器应用程序:
并将 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 工具、资源和提示。
让我们开始构建我们的天气服务器!你可以在这里找到我们将要构建的完整代码。
前置知识
本快速入门假设你熟悉:
- Kotlin
- Claude 等 LLM
系统要求
- 已安装 Java 17 或更高版本。
设置你的环境
首先,如果你还没有安装 java
和 gradle
,请先安装它们。
你可以从 Oracle 官方 JDK 网站 下载 java
。
验证你的 java
安装:
现在,让我们创建并设置你的项目:
运行 gradle init
后,你将看到创建项目的选项。
选择 Application 作为项目类型,Kotlin 作为编程语言,Java 17 作为 Java 版本。
或者,你可以使用 IntelliJ IDEA 项目向导 创建 Kotlin 应用程序。
创建项目后,添加以下依赖项:
此外,将以下插件添加到你的构建脚本中:
现在让我们开始构建你的服务器。
Building your server
设置实例
添加一个服务器初始化函数:
天气 API 辅助函数
接下来,让我们添加用于查询和转换来自国家气象局 API 响应的函数和数据类:
实现工具执行
工具执行处理程序负责实际执行每个工具的逻辑。让我们添加它:
运行服务器
最后,实现运行服务器的主函数:
请确保运行 ./gradlew 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
。
如果文件不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后你将在 mcpServers
键中添加你的服务器。
只有当至少一个服务器被正确配置时,MCP UI 元素才会显示在 Claude for Desktop 中。
在这种情况下,我们将像这样添加我们的单个天气服务器:
这告诉 Claude for Desktop:
- 有一个名为 “my-weather-server” 的 MCP 服务器
- 通过运行
java -jar /ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp-weather-stdio-server-0.0.1-SNAPSHOT.jar
来启动它
保存文件,并重启 Claude for Desktop。
让我们开始构建我们的天气服务器!你可以在这里找到我们将要构建的完整代码。
前置知识
本快速入门假设你熟悉:
- C#
- Claude 等 LLM
- .NET 8 或更高版本
系统要求
- 已安装 .NET 8 SDK 或更高版本。
设置你的环境
首先,如果你还没有安装 dotnet
,请先安装它。你可以从 微软官方 .NET 网站 下载 dotnet
。验证你的 dotnet
安装:
现在,让我们创建并设置你的项目:
运行 dotnet new console
后,你将看到一个新的 C# 项目。
你可以在你喜欢的 IDE 中打开该项目,例如 Visual Studio 或 Rider。
或者,你可以使用 Visual Studio 项目向导 创建 C# 应用程序。
创建项目后,为模型上下文协议 SDK 和托管添加 NuGet 包:
现在让我们开始构建你的服务器。
Building your server
打开项目中的 Program.cs
文件,并将其内容替换为以下代码:
创建 ApplicationHostBuilder
时,请确保使用 CreateEmptyApplicationBuilder
而不是 CreateDefaultBuilder
。这可以确保服务器不会向控制台写入任何额外的消息。这仅对于使用 STDIO 传输的服务器是必需的。
此代码设置了一个基本的控制台应用程序,该应用程序使用模型上下文协议 SDK 创建具有标准 I/O 传输的 MCP 服务器。
天气 API 辅助函数
接下来,定义一个包含工具执行处理程序的类,用于查询和转换来自国家气象局 API 的响应:
运行服务器
最后,使用以下命令运行服务器:
这将启动服务器并在标准输入/输出上侦听传入请求。
使用 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
。
如果文件不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后你将在 mcpServers
键中添加你的服务器。
只有当至少一个服务器被正确配置时,MCP UI 元素才会显示在 Claude for Desktop 中。
在这种情况下,我们将像这样添加我们的单个天气服务器:
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP 服务器
- 通过运行
dotnet run /ABSOLUTE/PATH/TO/PROJECT
来启动它 保存文件,并重启 Claude for Desktop。
使用命令测试
让我们确保 Claude for Desktop 能够识别我们在 weather
服务器中暴露的两个工具。你可以通过查找锤子 图标来做到这一点:
点击锤子图标后,你应该会看到列出的两个工具:
如果 Claude for Desktop 没有识别你的服务器,请转到 故障排除 部分查看调试提示。
如果锤子图标已显示,你现在可以通过在 Claude for Desktop 中运行以下命令来测试你的服务器:
- 萨克拉门托的天气怎么样?
- 得克萨斯州有哪些活跃的天气警报?
由于这是美国国家气象局的服务,查询仅适用于美国地点。
幕后发生了什么
当你提问时:
- 客户端将你的问题发送给 Claude
- Claude 分析可用的工具并决定使用哪一个(或多个)
- 客户端通过 MCP 服务器执行选定的工具
- 结果被发送回 Claude
- Claude 形成自然语言响应
- 响应显示给你!
故障排除
有关更高级的故障排除,请查看我们的 调试 MCP 指南