Create a Custom Server

Create a Custom Server

一个定制的 MCP 服务器,为 AI 助手提供算术计算工具和快速数学运算。

JustVarunsai

研究与数据
访问服务器

README

创建自定义服务器

开始构建您自己的服务器,以便在 Claude for Desktop 和其他客户端中使用。

在本教程中,我们将构建一个简单的 MCP 计算器服务器,并将其连接到主机 Claude for Desktop。

什么是 MCP?

MCP 代表 模型上下文协议 —— 它是一种允许开发者使用自定义工具和服务器扩展 AI 助手(如 Claude)的协议。

  • 可以把它想象成赋予你的 AI 助手额外的能力
  • 这些服务器公开了助手在对话期间可以使用的工具或功能。
  • 例如:您可以构建天气服务器、计算器、财务助手或您能想到的任何东西。

我们将构建什么

我们将构建一个公开四个工具的服务器:addsubtractmultiplydivide。 然后,我们将服务器连接到 MCP 主机(在本例中为 Claude for Desktop):

注意:服务器可以连接到任何客户端。 我们在此处选择 Claude for Desktop 仅用于演示目的。

<details> <summary>为什么选择 Claude for Desktop 而不是 Claude.ai?</summary> 因为服务器是本地运行的,所以 MCP 目前仅支持桌面主机。 </details>

核心 MCP 概念

MCP 服务器可以提供三种主要类型的能力:

  1. 资源:可以被客户端读取的类似文件的数据(例如 API 响应或文件内容)。
  2. 工具:可以被 LLM 调用的函数(需要用户批准)。
  3. 提示:预先编写的模板,可帮助用户完成特定任务。

本教程将主要关注工具。

让我们开始构建我们的计算器服务器吧! 您可以在此处找到我们将要构建的完整代码。


先决知识

本快速入门假定您熟悉以下内容:

  • Python
  • 像 Claude 这样的 LLM

系统要求

  • 已安装 Python 3.10 或更高版本。
  • 您必须使用 Python MCP SDK 1.2.0 或更高版本。

设置您的环境

首先,让我们安装 uv 并设置我们的 Python 项目和环境:

MacOS/Linux

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

请务必之后重启您的终端,以确保 uv 命令被识别。

现在,让我们创建并设置我们的项目:

MacOS/Linux

# 为我们的项目创建一个新目录
uv init calculator
cd calculator

# 创建虚拟环境并激活它
uv venv
source .venv/bin/activate

# 安装依赖项
uv add "mcp[cli]"

# 创建我们的服务器文件
touch calculator.py

Windows

# 为我们的项目创建一个新目录
uv init calculator
cd calculator

# 创建虚拟环境并激活它
uv venv
.venv\Scripts\activate

# 安装依赖项
uv add "mcp[cli]"

# 创建我们的服务器文件
new-item calculator.py

现在让我们深入构建您的服务器。


构建您的服务器

导入包并设置实例

将这些添加到您的 calculator.py 的顶部:

from mcp.server.fastmcp import FastMCP

# 初始化 FastMCP 服务器
mcp = FastMCP("calculator")

实现工具执行

工具执行处理程序负责实际执行每个工具的逻辑。 让我们添加它:

@mcp.tool()
def add(a: float, b: float) -> float:
    """Add two numbers."""
    return a + b

@mcp.tool()
def subtract(a: float, b: float) -> float:
    """Subtract two numbers."""
    return a - b

@mcp.tool()
def multiply(a: float, b: float) -> float:
    """Multiply two numbers."""
    return a * b

@mcp.tool()
def divide(a: float, b: float) -> float:
    """Divide two numbers."""
    if b == 0:
        raise ValueError("Division by zero is not allowed.")
    return a / b

运行服务器

最后,让我们初始化并运行服务器:

if __name__ == "__main__":
    # 初始化并运行服务器
    mcp.run(transport='stdio')

您的服务器已完成! 运行 uv run calculator.py 以确认一切正常。


使用 Claude for Desktop 测试您的服务器

注意:Claude for Desktop 尚未在 Linux 上提供。

我们需要为要使用的任何 MCP 服务器配置 Claude for Desktop。 为此,请在文本编辑器中打开位于 ~/Library/Application Support/Claude/claude_desktop_config.json 的 Claude for Desktop 应用程序配置。 如果该文件不存在,请确保创建它。

MacOS/Linux

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

Windows

code $env:AppData\Claude\claude_desktop_config.json

然后,您将在 mcpServers 键中添加您的服务器。 只有正确配置了至少一个服务器,MCP UI 元素才会显示在 Claude for Desktop 中。

在这种情况下,我们将像这样添加我们的单个计算器服务器:

MacOS/Linux

{
    "mcpServers": {
        "calculator": {
            "command": "uv",
            "args": [
                "--directory",
                "/ABSOLUTE/PATH/TO/PARENT/FOLDER/calculator",
                "run",
                "calculator.py"
            ]
        }
    }
}

Windows

{
    "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 for Desktop:

  1. 有一个名为“calculator”的 MCP 服务器。
  2. 通过运行 uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/calculator run calculator.py 来启动它。

保存文件,然后重新启动 Claude for Desktop


由于此计算器支持基本算术运算,因此可用于加法、减法、乘法和除法。

更多信息:MCP 官方文档

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python