Page 1 of 1

【IoT Core Open API】通过Open API实现MCP Server

Posted: 2025年 Apr 17日 21:38
by feizhan

ChatGPT爆火以来,LLM席卷全球,模型厂商迭代不辍,在年初DeepSeek大放异彩后,大模型更是国内风景这边独好,千行百业跑步拥抱AI。要说当前一阶段基于大模型发展较好的场景应该是智能体,特别是在今年3月份Manus发布之后,让业务拥抱LLM有了更多想象空间,每个业务都可以透过AI Agent尝试再次加速。

关于Agent是什么不是本文的重点,可以参考https://platform.openai.com/docs/guides/agentshttps://www.coze.cn/ ,说到这里应该书承上一篇,介绍一下如何通过Tuya IoT Core的Open API实现一个AI Agent,但是AI Agent一般是一个完善的应用场景,案例准备需要一定时间,所以就插播一篇MCP。

Image

Image

MCP是一套开放的标准协议,用于规范大模型对不同数据源和工具调用的数据格式。大模型对不同工具的调用使用的是Function Call,不同大模型厂商实现的方式可能不同,此外各家厂商提供的工具API也是各有特色,就像上面的第二张图。有了MCP的规范指引后,模型厂商以及提供工具API的企业都可以遵从该规范,对于未来AI Agent长远发展是大有裨益的。关于MCP更多信息可以参考https://modelcontextprotocol.io/introduction

概念基本清楚后,下面我们以涂鸦的一个Open API为示例,尝试构造一个MCP Server。直接上代码

Code: Select all

"""This module has components that are used for testing tuya's device control and Pulsar message queue."""
from typing import Any
import httpx
import logging
import json
import os
import copy
from asyncio import sleep
 
from mcp.server.fastmcp import FastMCP, Context

from tuya_connector import (
    TuyaOpenAPI,
    TUYA_LOGGER,
)

# 创建MCP服务器实例
mcp = FastMCP("tuya_iot")


ACCESS_ID = os.getenv('TUYA_IOT_API_ID')
ACCESS_KEY = os.getenv('TUYA_IOT_API_KEY')
API_ENDPOINT = "https://openapi.tuyacn.com"

request_body = {}

# Enable debug log
TUYA_LOGGER.setLevel(logging.DEBUG)

# Init openapi and connect
openapi = TuyaOpenAPI(API_ENDPOINT, ACCESS_ID, ACCESS_KEY)
openapi.connect()

@mcp.tool()
async def iot_query_space(
      
) -> Any: """ Name: 查询空间列表
Description: 查询空间列表:查询当前开发者定义的所有空间信息 Args: 无 """ if not ACCESS_ID: raise Exception("Can not found ACCESS_ID or ACCESS_KEY") response = openapi.get("/v2.0/cloud/space/child") return response if __name__ == "__main__": # Initialize and run the server print("Hello from tuya-iot!") mcp.run(transport='stdio')

这里使用了一个查询开发者空间列表的Open API:https://developer.tuya.com/cn/docs/clou ... 2kvgpl7bqr
当然涂鸦的每个开放接口都可以以MCP Server的形式暴露,每个开发者也都可以基于涂鸦的开放接口做封装或直接使用。

一、环境安装

1、本地要安装Python,版本要>=3.10
2、安装uv,uv是Python的包管理工具

MAC

Code: Select all

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

Windows

Code: Select all

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

二、创建MCP Server项目(以MAC环境为例)

1、选择一个目录,创建项目

Code: Select all

uv init mcp_server_tuya_iot

uv venv

source .venv/bin/activate

uv add "mcp[cli]" httpx

touch tuya_iot.py

2、将上面的代码粘贴至tuya_iot.py文件中
3、此时mcp_server_tuya_iot目录下的内容如下图
Image

这里多了一个tuya_connector文件夹,这里放置的是涂鸦提供的访问Open API的通用方法,可以从附件里拷贝出来直接放到当前目录下即可。

其他操作系统参考https://modelcontextprotocol.io/quickstart/server

三、本地尝试启动MCP Server
执行命令

Code: Select all

env TUYA_IOT_API_ID=<替换为自己的TUYA_ACCESS_ID> TUYA_IOT_API_KEY=<替换为自己的TUYA_ACCESS_KEY> uv --directory /<替换为自己的绝对路径> run tuya_iot.py

Image

出现如上截图内容就是启动成功。

如果有出现Failed to run server: No module named 'websocket'这种报错提示的,可以通过命令uv pip install websocket 解决。

四、通过本地Cline客户端测试

1、在VS中安装Cline插件
Image

2、配置大模型密钥,确保你的账号开启了对应模型
Image

3、配置MCP Server
Image
配置后变成绿色就是成功了!

4、测试
Image

需要完整代码,可以回复帖子!