面向服务器开发者
开始构建你自己的服务器,以便在 Claude Desktop 和其他客户端中使用。
在本教程中,我们将构建一个简单的 MCP 天气服务器,并将其连接到一个 host,即 Claude for Desktop。我们将从基本设置开始,然后逐步介绍更复杂的用例。
我们将构建什么
许多 LLM 目前不具备获取天气预报和恶劣天气警报的能力。让我们使用 MCP 来解决这个问题!
我们将构建一个服务器,它暴露两个 tools:get-alerts
和 get-forecast
。然后,我们将服务器连接到一个 MCP host(在本例中是 Claude for Desktop):
服务器可以连接到任何 client。我们在这里选择 Claude for Desktop 是为了简单起见,但我们也有关于构建你自己的 client 的指南以及其他 clients 列表。
核心 MCP 概念
MCP 服务器可以提供三种主要类型的能力:
- Resources: 可以被 clients 读取的类文件数据(如 API 响应或文件内容)
- Tools: 可以被 LLM 调用的函数(需要用户批准)
- Prompts: 预先编写的模板,帮助用户完成特定任务
本教程将主要关注 tools。
让我们开始构建我们的天气服务器!你可以在这里找到我们将构建的完整代码。
前提知识
本快速入门假设你熟悉:
- Python
- LLMs,如 Claude
系统要求
- 已安装 Python 3.10 或更高版本。
- 你必须使用 Python MCP SDK 1.2.0 或更高版本。
设置你的环境
首先,让我们安装 uv
并设置我们的 Python 项目和环境:
之后请务必重启你的终端,以确保 uv
命令被识别。
现在,让我们创建并设置我们的项目:
现在让我们深入构建你的服务器。
构建你的服务器
导入 packages 并设置 instance
将这些添加到你的 weather.py
文件的顶部:
FastMCP class 使用 Python type hints 和 docstrings 来自动生成 tool definitions,从而轻松创建和维护 MCP tools。
Helper functions
接下来,让我们添加 helper functions,用于查询和格式化来自 National Weather Service API 的数据:
实现 tool execution
Tool execution handler 负责实际执行每个 tool 的逻辑。让我们添加它:
运行 server
最后,让我们初始化并运行 server:
你的 server 已经完成!运行 uv run weather.py
以确认一切正常。
现在让我们从现有的 MCP host,Claude for Desktop 测试你的 server。
使用 Claude for Desktop 测试你的 server
Claude for Desktop 尚不适用于 Linux。Linux 用户可以继续阅读 构建 client 教程,以构建一个连接到我们刚刚构建的 server 的 MCP client。
首先,确保你已安装 Claude for Desktop。你可以在这里安装最新版本。 如果你已经安装了 Claude for Desktop,请确保它已更新到最新版本。
我们需要为你想要使用的任何 MCP servers 配置 Claude for Desktop。为此,请在文本编辑器中打开 ~/Library/Application Support/Claude/claude_desktop_config.json
中的 Claude for Desktop App configuration。如果该 file 不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后,你将在 mcpServers
key 中添加你的 servers。只有正确配置了至少一个 server,MCP UI 元素才会显示在 Claude for Desktop 中。
在本例中,我们将添加我们的单个天气服务器,如下所示:
你可能需要在 command
字段中放入 uv
executable 的完整 path。你可以在 MacOS/Linux 上运行 which uv
或在 Windows 上运行 where uv
来获取它。
确保你传入的是你的 server 的绝对 path。
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP server
- 通过运行
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py
来启动它
保存 file,并重新启动 Claude for Desktop。
让我们开始构建我们的天气服务器!你可以在这里找到我们将构建的完整代码。
前提知识
本快速入门假设你熟悉:
- Python
- LLMs,如 Claude
系统要求
- 已安装 Python 3.10 或更高版本。
- 你必须使用 Python MCP SDK 1.2.0 或更高版本。
设置你的环境
首先,让我们安装 uv
并设置我们的 Python 项目和环境:
之后请务必重启你的终端,以确保 uv
命令被识别。
现在,让我们创建并设置我们的项目:
现在让我们深入构建你的服务器。
构建你的服务器
导入 packages 并设置 instance
将这些添加到你的 weather.py
文件的顶部:
FastMCP class 使用 Python type hints 和 docstrings 来自动生成 tool definitions,从而轻松创建和维护 MCP tools。
Helper functions
接下来,让我们添加 helper functions,用于查询和格式化来自 National Weather Service API 的数据:
实现 tool execution
Tool execution handler 负责实际执行每个 tool 的逻辑。让我们添加它:
运行 server
最后,让我们初始化并运行 server:
你的 server 已经完成!运行 uv run weather.py
以确认一切正常。
现在让我们从现有的 MCP host,Claude for Desktop 测试你的 server。
使用 Claude for Desktop 测试你的 server
Claude for Desktop 尚不适用于 Linux。Linux 用户可以继续阅读 构建 client 教程,以构建一个连接到我们刚刚构建的 server 的 MCP client。
首先,确保你已安装 Claude for Desktop。你可以在这里安装最新版本。 如果你已经安装了 Claude for Desktop,请确保它已更新到最新版本。
我们需要为你想要使用的任何 MCP servers 配置 Claude for Desktop。为此,请在文本编辑器中打开 ~/Library/Application Support/Claude/claude_desktop_config.json
中的 Claude for Desktop App configuration。如果该 file 不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后,你将在 mcpServers
key 中添加你的 servers。只有正确配置了至少一个 server,MCP UI 元素才会显示在 Claude for Desktop 中。
在本例中,我们将添加我们的单个天气服务器,如下所示:
你可能需要在 command
字段中放入 uv
executable 的完整 path。你可以在 MacOS/Linux 上运行 which uv
或在 Windows 上运行 where uv
来获取它。
确保你传入的是你的 server 的绝对 path。
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP server
- 通过运行
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py
来启动它
保存 file,并重新启动 Claude for Desktop。
让我们开始构建我们的天气服务器!你可以在这里找到我们将构建的完整代码。
前提知识
本快速入门假设你熟悉:
- TypeScript
- LLMs,如 Claude
系统要求
对于 TypeScript,请确保你已安装最新版本的 Node。
设置你的环境
首先,如果你还没有安装 Node.js 和 npm,请安装它们。你可以从 nodejs.org 下载它们。 验证你的 Node.js 安装:
在本教程中,你需要 Node.js 16 或更高版本。
现在,让我们创建并设置我们的项目:
更新你的 package.json 以添加 type: “module” 和一个 build script:
在你的项目的根目录下创建一个 tsconfig.json
:
现在让我们深入构建你的服务器。
构建你的服务器
导入 packages 并设置 instance
将这些添加到你的 src/index.ts
文件的顶部:
Helper functions
接下来,让我们添加 helper functions,用于查询和格式化来自 National Weather Service API 的数据:
实现 tool execution
Tool execution handler 负责实际执行每个 tool 的逻辑。让我们添加它:
运行 server
最后,实现 main function 以运行 server:
确保运行 npm run build
以 build 你的 server!这是让你的 server 连接起来非常重要的一步。
现在让我们从现有的 MCP host,Claude for Desktop 测试你的 server。
使用 Claude for Desktop 测试你的 server
Claude for Desktop 尚不适用于 Linux。Linux 用户可以继续阅读 构建 client 教程,以构建一个连接到我们刚刚构建的 server 的 MCP client。
首先,确保你已安装 Claude for Desktop。你可以在这里安装最新版本。 如果你已经安装了 Claude for Desktop,请确保它已更新到最新版本。
我们需要为你想要使用的任何 MCP servers 配置 Claude for Desktop。为此,请在文本编辑器中打开 ~/Library/Application Support/Claude/claude_desktop_config.json
中的 Claude for Desktop App configuration。如果该 file 不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后,你将在 mcpServers
key 中添加你的 servers。只有正确配置了至少一个 server,MCP UI 元素才会显示在 Claude for Desktop 中。
在本例中,我们将添加我们的单个天气服务器,如下所示:
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP server
- 通过运行
node /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather/build/index.js
来启动它
保存 file,并重新启动 Claude for Desktop。
这是一个基于 Spring AI MCP auto-configuration 和 boot starters 的快速入门演示。 要学习如何手动创建 sync 和 async MCP Servers,请查阅 Java SDK Server 文档。
让我们开始构建我们的天气服务器! 你可以在这里找到我们将构建的完整代码。
有关更多信息,请参阅 MCP Server Boot Starter 参考文档。 有关手动 MCP Server 实现,请参阅 MCP Server Java SDK 文档。
系统要求
- 已安装 Java 17 或更高版本。
- Spring Boot 3.3.x 或更高版本
设置你的环境
使用 Spring Initializer 来 bootstrap 项目。
你需要添加以下 dependencies:
然后通过设置 application properties 来配置你的 application:
Server Configuration Properties 文档记录了所有可用的 properties。
现在让我们深入构建你的服务器。
构建你的服务器
Weather Service
让我们实现一个 WeatherService.java,它使用 REST client 来查询来自 National Weather Service API 的数据:
@Service
annotation 将在你的 application context 中自动注册该 service。
Spring AI @Tool
annotation,使其易于创建和维护 MCP tools。
auto-configuration 将自动向 MCP server 注册这些 tools。
创建你的 Boot Application
使用 MethodToolCallbackProvider
utils 将 @Tools
转换为 MCP server 使用的可操作 callbacks。
运行 server
最后,让我们 build server:
这将在 target
文件夹中生成一个 mcp-weather-stdio-server-0.0.1-SNAPSHOT.jar
file。
现在让我们从现有的 MCP host,Claude for Desktop 测试你的 server。
使用 Claude for Desktop 测试你的 server
Claude for Desktop 尚不适用于 Linux。
首先,确保你已安装 Claude for Desktop。 你可以在这里安装最新版本。 如果你已经安装了 Claude for Desktop,请确保它已更新到最新版本。
我们需要为你想要使用的任何 MCP servers 配置 Claude for Desktop。
为此,请在文本编辑器中打开 ~/Library/Application Support/Claude/claude_desktop_config.json
中的 Claude for Desktop App configuration。
如果该 file 不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后,你将在 mcpServers
key 中添加你的 servers。
只有正确配置了至少一个 server,MCP UI 元素才会显示在 Claude for Desktop 中。
在本例中,我们将添加我们的单个天气服务器,如下所示:
确保你传入的是你的 server 的绝对 path。
这告诉 Claude for Desktop:
- 有一个名为 “my-weather-server” 的 MCP server
- 通过运行
java -jar /ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp-weather-stdio-server-0.0.1-SNAPSHOT.jar
来启动它
保存 file,并重新启动 Claude for Desktop。
使用 Java client 测试你的 server
手动创建 MCP Client
使用 McpClient
连接到 server:
使用 MCP Client Boot Starter
使用 spring-ai-starter-mcp-client
dependency 创建一个新的 boot starter application:
并设置 spring.ai.mcp.client.stdio.servers-configuration
property 以指向你的 claude_desktop_config.json
。
你可以重用现有的 Anthropic Desktop configuration:
当你启动你的 client application 时,auto-configuration 将从 claude_desktop_config.json 自动创建 MCP clients。
有关更多信息,请参阅 MCP Client Boot Starters 参考文档。
更多 Java MCP Server 示例
starter-webflux-server 演示了如何使用 SSE transport 创建 MCP server。 它展示了如何使用 Spring Boot 的 auto-configuration 功能来定义和注册 MCP Tools、Resources 和 Prompts。
让我们开始构建我们的天气服务器!你可以在这里找到我们将构建的完整代码。
前提知识
本快速入门假设你熟悉:
- Kotlin
- LLMs,如 Claude
系统要求
- 已安装 Java 17 或更高版本。
设置你的环境
首先,如果你还没有安装 java
和 gradle
,请安装它们。
你可以从 官方 Oracle JDK 网站 下载 java
。
验证你的 java
安装:
现在,让我们创建并设置你的项目:
运行 gradle init
后,你将看到用于创建你的项目的选项。
选择 Application 作为项目类型,Kotlin 作为编程语言,Java 17 作为 Java 版本。
或者,你可以使用 IntelliJ IDEA 项目向导 创建一个 Kotlin application。
创建项目后,添加以下 dependencies:
此外,将以下 plugins 添加到你的 build script:
现在让我们深入构建你的服务器。
构建你的服务器
设置 instance
添加一个 server 初始化 function:
Weather API helper functions
接下来,让我们添加 functions 和 data classes,用于查询和转换来自 National Weather Service API 的响应:
实现 tool execution
Tool execution handler 负责实际执行每个 tool 的逻辑。让我们添加它:
运行 server
最后,实现 main function 以运行 server:
确保运行 ./gradlew build
以 build 你的 server。这是让你的 server 连接起来非常重要的一步。
现在让我们从现有的 MCP host,Claude for Desktop 测试你的 server。
使用 Claude for Desktop 测试你的 server
Claude for Desktop 尚不适用于 Linux。Linux 用户可以继续阅读 构建 client 教程,以构建一个连接到我们刚刚构建的 server 的 MCP client。
首先,确保你已安装 Claude for Desktop。你可以在这里安装最新版本。 如果你已经安装了 Claude for Desktop,请确保它已更新到最新版本。
我们需要为你想要使用的任何 MCP servers 配置 Claude for Desktop。
为此,请在文本编辑器中打开 ~/Library/Application Support/Claude/claude_desktop_config.json
中的 Claude for Desktop App configuration。
如果该 file 不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后,你将在 mcpServers
key 中添加你的 servers。
只有正确配置了至少一个 server,MCP UI 元素才会显示在 Claude for Desktop 中。
在本例中,我们将添加我们的单个天气服务器,如下所示:
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP server
- 通过运行
java -jar /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather/build/libs/weather-0.1.0-all.jar
来启动它
保存 file,并重新启动 Claude for Desktop。
让我们开始构建我们的天气服务器!你可以在这里找到我们将构建的完整代码。
前提知识
本快速入门假设你熟悉:
- C#
- LLMs,如 Claude
- .NET 8 或更高版本
系统要求
- 已安装 .NET 8 SDK 或更高版本。
设置你的环境
首先,如果你还没有安装 dotnet
,请安装它。你可以从 官方 Microsoft .NET 网站 下载 dotnet
。验证你的 dotnet
安装:
现在,让我们创建并设置你的项目:
运行 dotnet new console
后,你将看到一个新的 C# 项目。
你可以在你最喜欢的 IDE 中打开该项目,例如 Visual Studio 或 Rider。
或者,你可以使用 Visual Studio 项目向导 创建一个 C# application。
创建项目后,为 Model Context Protocol SDK 和 hosting 添加 NuGet package:
现在让我们深入构建你的服务器。
构建你的服务器
打开你项目中的 Program.cs
file,并将内容替换为以下代码:
在创建 ApplicationHostBuilder
时,请确保使用 CreateEmptyApplicationBuilder
而不是 CreateDefaultBuilder
。这确保了 server 不会向控制台写入任何其他消息。这仅对于使用 STDIO transport 的 servers 是必要的。
此代码设置了一个基本的控制台 application,它使用 Model Context Protocol SDK 创建一个具有 standard I/O transport 的 MCP server。
Weather API helper functions
接下来,定义一个 class,其中包含用于查询和转换来自 National Weather Service API 的响应的 tool execution handlers:
运行 server
最后,使用以下 command 运行 server:
这将启动 server 并侦听 standard input/output 上的传入请求。
使用 Claude for Desktop 测试你的 server
Claude for Desktop 尚不适用于 Linux。Linux 用户可以继续阅读 构建 client 教程,以构建一个连接到我们刚刚构建的 server 的 MCP client。
首先,确保你已安装 Claude for Desktop。你可以在这里安装最新版本。 如果你已经安装了 Claude for Desktop,请确保它已更新到最新版本。
我们需要为你想要使用的任何 MCP servers 配置 Claude for Desktop。为此,请在文本编辑器中打开 ~/Library/Application Support/Claude/claude_desktop_config.json
中的 Claude for Desktop App configuration。如果该 file 不存在,请确保创建它。
例如,如果你安装了 VS Code:
然后,你将在 mcpServers
key 中添加你的 servers。只有正确配置了至少一个 server,MCP UI 元素才会显示在 Claude for Desktop 中。
在本例中,我们将添加我们的单个天气服务器,如下所示:
这告诉 Claude for Desktop:
- 有一个名为 “weather” 的 MCP server
- 通过运行
dotnet run /ABSOLUTE/PATH/TO/PROJECT
来启动它 保存 file,并重新启动 Claude for Desktop。
使用 commands 测试
让我们确保 Claude for Desktop 正在接收我们在 weather
server 中暴露的两个 tools。你可以通过查找锤子 icon 来做到这一点:
单击锤子 icon 后,你应该看到列出了两个 tools:
如果你的 server 未被 Claude for Desktop 接收,请继续阅读 故障排除 部分以获取 debug 提示。
如果锤子 icon 已经显示,你现在可以通过在 Claude for Desktop 中运行以下 commands 来测试你的 server:
- Sacramento 的天气怎么样?
- Texas 有哪些活跃的天气警报?
由于这是美国国家气象局,因此查询仅适用于美国的位置。
底层发生了什么
当你提出问题时:
- client 将你的问题发送给 Claude
- Claude 分析可用的 tools 并决定使用哪些 tool
- client 通过 MCP server 执行选择的 tool
- 结果被发回给 Claude
- Claude 制定自然语言响应
- 响应显示给你!
故障排除
有关更高级的故障排除,请查看我们的 MCP Debug 指南