
# 调用MCP服务
智能体运行时支持部署和运行MCP服务器。本章节介绍如何创建、测试并部署MCP服务器。
[步骤1：创建MCP服务器]
[步骤2：在本地测试MCP服务器]
[步骤3：将MCP服务器部署到AgentArts]
[步骤4：调用已部署的MCP服务器]
#### 前提条件
- 操作系统：Linux ARM64，服务器可访问公网。
  ![](https://support.huaweicloud.com/highcode-agentarts/public_sys-resources/caution_3.0-zh-cn.png)
  需使用ARM64系统制作的Agent镜像，使用X86系统制作的镜像在调用智能体运行时时会调用失败。
  可以使用华为云ECS服务购买服务器，购买时需要选择鲲鹏架构（ARM64）。
  ![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002675304607.png "点击放大")
  
- 安装Python：请确保Python 3.10及以上版本已安装。 大多数Linux发行版（如Ubuntu）都预装了Python，您可以先通过python3 --version检查。如未安装，可以使用如下命令安装：
  ```
  sudo apt update
  sudo apt install python3
  ```
  
 
 #### 步骤1：创建MCP服务器
1. 安装MCP软件包。 
   ```
   pip install mcp
   ```
   
   
2. 创建MCP服务器。 
   参考以下代码示例创建名为mcp_test.py的服务器。
   ```
   # mcp_test.py
   from mcp.server.fastmcp import FastMCP
   mcp = FastMCP(host="0.0.0.0", stateless_http=True, port=8000)
   @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 abs(b) < 1e-9:
           raise ValueError("Division by zero")
       return a / b
   if __name__ == "__main__":
       mcp.run(transport="streamable-http")
   ```
   **代码解释**
   - FastMCP：创建可以托管工具的MCP服务器。
   
   - Tools：工具，展示不同类型的操作。
   
   - @mcp.tool（）：将Python函数转换为MCP工具的装饰器。
   
   - stateless_http=True：将服务器配置为无状态模式。
   
   
   
   
 
 #### 步骤2：在本地测试MCP服务器
1. 启动MCP服务器。 
   ```
   python mcp_test.py
   ```
   看到输出信息后，表明服务器正在8000端口上运行。
   
   
2. 使用curl命令进行客户端测试。 
   示例如下：
   ```
   # 获取工具列表
   curl -X POST http://127.0.0.1:8000/mcp \
     -H "Content-Type: application/json" \
     -H "Accept: application/json, text/event-stream" \
     -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
   # 调用工具
   curl -X POST http://127.0.0.1:8000/mcp \
     -H "Content-Type: application/json" \
     -H "Accept: application/json, text/event-stream" \
     -d '{
       "jsonrpc": "2.0",
       "id": 2,
       "method": "tools/call",
       "params": {
         "name": "add",
         "arguments": {"a": 3, "b": 5}
       }
     }'
   注意
   Streamable HTTP 要求客户端 Accept 头必须同时包含 application/json 和 text/event-stream，否则服务器返回 406 Not Acceptable。
   ```
   
   
 
 #### 步骤3：将MCP服务器部署到AgentArts
1. 在本地自主开发MCP并打包成镜像，并将打包的镜像上传至容器镜像服务。
2. 部署智能体运行时，部署时"入栈协议"请选择为"MCP"，具体请参考[通过控制台部署智能体运行时](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_031.html)。
   
   图1部署智能体运行时   
   ![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002614118609.png "点击放大")
   
   
 
 #### 步骤4：调用已部署的MCP服务器
1. 登录[AgentArts智能体平台](https://console.huaweicloud.com/agentarts/#/home/overview)。
2. 在左侧导航栏选择"部署运行 \> 智能体运行时 "。
3. 在列表单击已创建好的智能体运行时名称，进入智能体运行时详情页。
4. 在"基本信息"区域即可查看"访问域名"。 
   图2获取访问域名   
   ![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002614332413.png "点击放大")
   
   
5. 使用API调用智能体运行时 
   使用API调用智能体运行时的操作，请参考[调用智能体运行时](https://support.huaweicloud.com/api-agentarts/InvokeRuntime1.html)。
   ![](https://support.huaweicloud.com/highcode-agentarts/public_sys-resources/caution_3.0-zh-cn.png)
   Streamable HTTP 要求客户端Accept头必须同时包含application/json和text/event-stream，否则服务器返回406 Not Acceptable。
   
   
 
