内容
# 创建自定义服务器
> 开始构建您自己的服务器,以便在Claude Desktop和其他客户端中使用。
在本教程中,我们将构建一个简单的MCP计算器服务器,并将其连接到主机Claude Desktop。
## 什么是MCP?
**MCP** 代表 **模型上下文协议** — 它是一种允许开发者使用自定义工具和服务器扩展AI助手(如Claude)的协议。
- 可以将其视为给予AI助手 **额外能力**。
- 这些服务器公开工具或功能,助手可以在对话中使用。
- 例如:您可以构建天气服务器、计算器、金融助手或您想象的任何内容。
### 我们将要构建的内容
我们将构建一个服务器,公开四个工具:`add`、`subtract`、`multiply` 和 `divide`。然后,我们将服务器连接到MCP主机(在本例中为Claude Desktop):
> **注意**:服务器可以连接到任何客户端。我们选择Claude Desktop作为演示目的。
<details>
<summary>为什么选择Claude Desktop而不是Claude.ai?</summary>
由于服务器是本地运行的,MCP目前仅支持桌面主机。
</details>
### MCP核心概念
MCP服务器可以提供三种主要功能:
1. **资源**:客户端可以读取的类似文件的数据(例如API响应或文件内容)。
2. **工具**:LLM可以调用的函数(需用户批准)。
3. **提示**:预先编写的模板,帮助用户完成特定任务。
本教程将主要关注工具。
让我们开始构建我们的计算器服务器。
---
### 先决条件
本快速入门教程假设您熟悉:
- Python
- LLM(如Claude)
### 系统要求
- 已安装Python 3.10或更高版本。
- 您必须使用Python MCP SDK 1.2.0或更高版本。
---
### 设置您的环境
首先,让我们安装`uv`并设置我们的Python项目和环境:
#### MacOS/Linux
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
#### Windows
```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```
确保在重启终端后,确保`uv`命令生效。
现在,让我们创建并设置我们的项目:
#### MacOS/Linux
```bash
# 为我们的项目创建一个新目录
uv init calculator
cd calculator
# 创建虚拟环境并激活它
uv venv
source .venv/bin/activate
# 安装依赖项
uv add "mcp[cli]"
# 创建我们的服务器文件
touch calculator.py
```
#### Windows
```powershell
# 为我们的项目创建一个新目录
uv init calculator
cd calculator
# 创建虚拟环境并激活它
uv venv
.venv\Scripts\activate
# 安装依赖项
uv add "mcp[cli]"
# 创建我们的服务器文件
new-item calculator.py
```
现在让我们深入构建您的服务器。
---
## 构建您的服务器
### 导入包和设置实例
在您的`calculator.py`文件顶部添加以下内容:
```python
from mcp.server.fastmcp import FastMCP
# 初始化FastMCP服务器
mcp = FastMCP("calculator")
```
### 实现工具执行
工具执行处理程序负责实际执行每个工具的逻辑。让我们添加它:
```python
@mcp.tool()
def add(a: float, b: float) -> float:
"""添加两个数字。"""
return a + b
@mcp.tool()
def subtract(a: float, b: float) -> float:
"""减去两个数字。"""
return a - b
@mcp.tool()
def multiply(a: float, b: float) -> float:
"""乘以两个数字。"""
return a * b
@mcp.tool()
def divide(a: float, b: float) -> float:
"""除以两个数字。"""
if b == 0:
raise ValueError("不允许除以零。")
return a / b
```
### 运行服务器
最后,让我们初始化并运行服务器:
```python
if __name__ == "__main__":
# 初始化并运行服务器
mcp.run(transport='stdio')
```
您的服务器已经完成!运行`uv run calculator.py`以确认一切正常。
---
## 使用Claude Desktop测试您的服务器
> **注意**:Claude Desktop在Linux上尚不可用。
我们需要为要使用的MCP服务器配置Claude Desktop。要执行此操作,请在文本编辑器中打开Claude Desktop应用程序配置,路径为`~/Library/Application Support/Claude/claude_desktop_config.json`。
#### MacOS/Linux
```bash
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
```
#### Windows
```powershell
code $env:AppData\Claude\claude_desktop_config.json
```
然后,您将在`mcpServers`键中添加您的服务器。只有正确配置至少一个服务器,MCP UI元素才会出现在Claude Desktop中。
在这种情况下,我们将添加我们的单个计算器服务器,如下所示:
#### MacOS/Linux
```json
{
"mcpServers": {
"calculator": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/calculator",
"run",
"calculator.py"
]
}
}
}
```
#### Windows
```json
{
"mcpServers": {
"calculator": {
"command": "uv",
"args": [
"--directory",
"C:\\ABSOLUTE\\PATH\\TO\\PARENT\\FOLDER\\calculator",
"run",
"calculator.py"
]
}
}
}
```
> **警告**:您可能需要在`command`字段中输入`uv`可执行文件的完整路径。您可以通过在MacOS/Linux上运行`which uv`或在Windows上运行`where uv`来获取此路径。
确保您传入服务器的绝对路径。
这告诉Claude Desktop:
1. 有一个名为“calculator”的MCP服务器。
2. 通过运行`uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/calculator run calculator.py`启动它。
保存文件并重启 **Claude Desktop**。
---
由于此计算器支持基本的算术运算,因此可用于加法、减法、乘法和除法。
更多信息:[MCP官方文档](https://modelcontextprotocol.io/introduction)