You need to enable JavaScript to run this app.
导航
加速基于函数服务的 MCP Server后端
最近更新时间:2025.10.21 20:29:36首次发布时间:2025.10.21 20:29:36
复制全文
我的收藏
有用
有用
无用
无用

方案简介

MCP Server 应用场景不断涌现的同时,越来越多的 MCP Server 开始使用 Serverless 服务作为 MCP Server 的后端。其轻量化、弹性扩缩特性降低了资源管理复杂度,可快速响应业务需求。然而,网络延时会增加大模型等待响应的时间以及 AI 工作流的整体耗时。因此,火山引擎全站加速(DCDN)提供针对函数服务源站的加速,您可以全站加速控制台直接为您的函数开启加速。
该解决方案具有以下优势:

  • 您无需专门购买、配置域名。该解决方案为您提供系统默认的域名可以直接使用。
  • 您无需为 HTTPS 服务配置 SSL 证书。该解决方案为您自动配置好与域名相兼容的 SSL 证书。
  • 利用全站加速对 SSE(Server-Sent Events)协议和 WebSocket 协议的支持,您可以为流式响应方式的 API 进行加速。

Demo 场景介绍

本文中后续操作将围绕以下场景:

  • 您开发了一款 MCP Server 用来查询您公司的三款产品的价格。
  • MCP Server 的后端服务运行在火山引擎函数服务上。
  • MCP Server 通过访问 DCDN 的加速域名调用函数。

前置条件

  • 您已开通火山引擎函数服务。
  • 您已开通火山引擎全站加速服务。

操作步骤

步骤一:创建后端服务函数

  1. 登录火山引擎函数服务控制台
  2. 在左侧导航栏,点击 函数 > 函数
  3. 在函数页面,点击 创建函数
  4. 点击 事件函数 标签页,然后点击 创建事件函数
  5. 名称 字段中,为函数指定一个名称,例如 test-get-price。其余参数,您可以保留默认配置。系统会默认添加 Hello World 模板函数。
  6. 勾选复选框,同意相关服务协议,然后点击 确定
  7. 函数成功创建后,系统会自动跳转到函数代码编辑窗口。将 index.py 文件中的模板代码替换成以下演示代码:
import json

def handler(event, context):
    """
    当前函数演示的是简单的一个价格查询的服务。
    它将 query 参数的值与三个产品名称做比对,例如 Super-Widget
    """

    event = event or {}
    query = ''
    
    # 读取 query 参数
    data = event.get('data')
    if isinstance(data, dict):
        query = data.get('query', '')

    if not query:
        body = event.get('body')
        if isinstance(body, str):
            try:
                body_data = json.loads(body)
                if isinstance(body_data, dict):
                    query = body_data.get('query', '')
            except json.JSONDecodeError:
                pass  

    # 产品价格列表
    products = [
        {
            "product": "Super-Widget",
            "price": 49.99
        },
        {
            "product": "Mega-Widget",
            "price": 79.99
        },
        {
            "product": "Giga-Widget",
            "price": 129.99
        }
    ]

    relevant_products = [p for p in products if query.lower() in p['product'].lower()]

    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json'
        },
        'body': json.dumps({
            'relevant_products': relevant_products
        })
    }
  1. 点击 保存,然后点击 发布

  2. 保留默认的发布选项,然后点击 确定

  3. 等待函数发布成功后,在右上角点击 测试。然后,将 JSON 文本块中,将内容替换成以下内容,然后点击 测试

    {
      "data": {
        "query": "super"
      },
      "method": "POST",
      "path": "/",
      "headers": {}
    }
    
  4. 测试成功后,会返回结果,显示名为 Super-Widget 的产品的价格。

步骤二:为函数添加加速域名

  1. 登录全站加速控制台
  2. 在左侧导航栏中,点击 域名管理
  3. 点击 添加域名。
  4. 添加域名 页面,选择 AI 场景加速
  5. 按您实际客户端所在的区域,设置 加速区域。配置加速域名的其他基础配置,然后点击 下一步
  6. 源站****地址 选项中,选择 AI 应用,然后选择 Serverless AI 应用
  7. 加速域名 选项中,设置自定义域名前缀。系统已为您提供固定的根域名 speedifyvolcai.com,并且自动生成了一个随机字符串和您的自定义域名前缀合在一起成为加速域名的子域名。该前缀只能包含字母、数字和连字符-,且不能以连字符-开头或结尾。允许长度 1~49 字符。例如:testgetprice
  8. 区域 列表中,选择函数所在的区域,然后点击 添加 Serverless AI 实例
  9. 然后在 函数****实例 列,选择您在“步骤一”中创建的函数。然后点击 下一步
  10. 系统默认会开启 WebSocket 协议和 HTTPS 服务,并且不能取消选择。点击 完成配置
  11. 等待加速域名配置完成后,您可以直接用该域名访问您的函数。例如:testgetpriceXXXXXXXXX.speedifyvolcai.com

步骤三:测试通过加速域名调用函数

您可以使用 cURL 命令行工具向加速域名发送 API 请求,以测试加速域名的配置。在命令行中运行以下命令:
curl -X POST https://<加速域名> -H "Content-Type: application/json" -d "{\"query\": \"super\"}"
其中,<加速域名> 为您的加速域名。

在本文演示的示例中,该 API 会返回与 super 匹配的商品的价格。

步骤四:测试 MCP Server 效果

您可以在您的 AI 类开发环境(IDE)中添加调用该函数的 MCP Server,然后在聊天窗口中测试效果。

以下截图展示的为基于 MCP Server 示例代码的运行效果,供您参考。该 MCP Server 调用前述步骤创建的函数查询商品价格。

MCP Server 示例的配置文件:

{
  "mcpServers": {
    "get-price-server": {
      "command": "npx",
      "args": [
        "-y",
        "--registry",
        "https://registry.npmjs.org",
        "mcp-demo-get-price@latest",
        "https://<加速域名>"
      ]
    }
  }
}