Token导航 LogoToken导航TokenDH.com
mcpesp (Ertgtct) logo
运维云端未说明官方级别未说明来源级核验

mcpesp (Ertgtct)

MCP Server

一个可配置的Arduino库,用于在ESP32设备上实现模型上下文协议(MCP)服务器,使AI模型和其他客户端能够通过HTTP/JSON-RPC与ESP32交互。

工具数

3

提示词数

0

GitHub Stars

1

资源数

0
C++物联网HTTP服务器

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ertgtct

提供方

ertgtct

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Mcpesp-ESP32模型上下文协议库

一个可配置的Arduino库,用于在ESP32设备上实现模型上下文协议(MCP)服务器。此库使您能够将ESP32硬件功能作为MCP工具公开,可以通过HTTP/JSON-RPC调用,允许AI模型和其他客户端通过标准化协议与ESP32交互。

描述

Mcpesp为ESP32提供了模型上下文协议服务器的完整实现。它处理JSON-RPC请求、工具注册、模式验证和CORS标头,使创建向外部客户端公开ESP32功能的MCP服务器变得容易。

特性

  • MCP协议支持:MCP协议的基本实现
  • 工具注册:使用回调函数轻松注册自定义工具
  • 架构验证:用于定义工具输入参数的内置模式生成器
  • HTTP服务器:集成到ESP32的Web服务器中,用于处理HTTP/JSON-RPC请求
  • JSON-RPC 2.0:与JSON-RPC 2.0规范兼容
  • WiFi集成:适用于ESP32 WiFi功能

安装

Arduino集成开发环境

  1. 下载或克隆此存储库
  2. 放置 mcpesp Arduino中的文件夹 libraries 目录
  3. 重新启动Arduino IDE

平台IO

添加到您的 platformio.ini:

lib_deps = 
    bblanchon/ArduinoJson@^7.0.0

依赖项

  • ArduinoJson:JSON解析和生成库(版本7.x或兼容)
  • ESP32董事会支持:需要Arduino IDE的ESP32板支持包
  • Web服务器:包含在ESP32核心库中

快速开始

#include 
#include 

// WiFi credentials
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// LED pin for demonstration
#define LED_PIN 8

// Create MCP server instance
Mcpesp mcpServer;

void myToolCallback(JsonObject arguments, JsonObject result) {
  bool state = arguments["enabled"].as(); // Name of the property is "enabled"
  bool ledState = state;
  
  digitalWrite(LED_PIN, ledState ? LOW : HIGH); // LOW = ON for most ESP32 boards
  
  result["text"] = "LED turned " + String(state) + " successfully!";
  Serial.println("LED state changed to: " + state);
}

void setup() {
  Serial.begin(115200);
  
  // Connect to WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nConnected!");
  
  // Initialize MCP server
  mcpServer.begin("My MCP Server", "1.0.0");
  
  // Create tool schema
  Schema toolSchema;
  toolSchema.addBooleanProperty("enabled", "Enable or disable feature");
  
  // Register tool
  mcpServer.addTool(
    "my_tool",
    "Description of my tool",
    toolSchema,
    myToolCallback
  );
}

void loop() {
  mcpServer.handleClient();
}

API 参考

Mcpesp类

构造函数

Mcpesp()

创建新的MCP服务器实例。

方法

begin(serverName, version, port)

初始化MCP服务器。

  • 参数:

- serverName (const char\*):服务器的名称(默认值:“ESP32 MCP服务器”) - version (const char\*):服务器版本(默认值:“1.0.0”) - port (int):HTTP服务器端口(默认值:80)

  • 退货:无效

addTool(name, description, inputSchema, callback)

在服务器上注册新工具。

  • 参数:

- name (const String&):工具名称(必须唯一) - description (const String&):工具描述 - inputSchema (模式&):输入参数模式 - callback (toolCallback):调用工具时执行的回调函数

  • 退货:无效

handleClient()

处理传入的客户端请求。把这个叫你的 loop() 功能。

  • 退货:无效

setServerInfo(name, version)

更新服务器名称和版本。

  • 参数:

- name (const String&):服务器名称 - version (const String&):服务器版本

  • 退货:无效

setProtocolVersion(version)

设置MCP协议版本。

  • 参数:

- version (const String&):协议版本(默认值:“2025-03-26”)

  • 退货:无效

isInitialized()

检查服务器是否已初始化。

  • 退货: 布尔

getServer()

获取底层WebServer实例以供高级使用。

  • 退货:Web服务器\*

架构类

Schema类用于定义工具的输入参数模式。

构造函数

Schema()

创建新的架构实例。

方法

addStringProperty(name, description, required)

将字符串属性添加到架构中。

  • 参数:

- name (字符串):属性名称 - description (字符串):属性描述 - required (bool):该属性是否为必填项(默认值:true)

  • 退货:无效

addStringEnumProperty(name, description, options, required)

将字符串枚举属性添加到架构中。

  • 参数:

- name (字符串):属性名称 - description (字符串):属性描述 - options (String\[\]):允许值的数组 - required (bool):该属性是否为必填项(默认值:true)

  • 退货:无效

addNumberProperty(name, description, required)

将数字属性添加到架构中。

  • 参数:

- name (字符串):属性名称 - description (字符串):属性描述 - required (bool):该属性是否为必填项(默认值:true)

  • 退货:无效

addNumberProperty(name, description, min, max, def, required)

将具有约束的数字属性添加到架构中。

  • 参数:

- name (字符串):属性名称 - description (字符串):属性描述 - min (int):最小值 - max (int):最大值 - def (int):默认值 - required (bool):该属性是否为必填项(默认值:true)

  • 退货:无效

addBooleanProperty(name, description, required)

将布尔属性添加到架构中。

  • 参数:

- name (字符串):属性名称 - description (字符串):属性描述 - required (bool):该属性是否为必填项(默认值:true)

  • 退货:无效

getSchema()

返回JSON模式文档。

  • 退货:json文档

工具回调功能

工具回调具有以下签名:

void toolCallback(JsonObject arguments, JsonObject result)
  • 参数:

- arguments (JsonObject):从客户端输入参数 - result (JsonObject):要填充的结果对象(set result["text"] 对于响应)

  • 退货:无效

例子

请参阅 examples/McpServerExample/ 一个完整示例的目录,演示:

  • WiFi连接
  • 服务器初始化
  • 使用不同模式类型的工具注册
  • 工具回调实现

MCP协议

此库实现了以下MCP方法:

  • initialize:初始化MCP连接
  • tools/list:列出所有已注册的工具
  • tools/call:调用已注册的工具

所有方法都遵循JSON-RPC 2.0规范,并返回适当的响应。

许可证

这个图书馆是基于https://github.com/MrLaki5/ESP32-MCP-air-conditioner

贡献

欢迎投稿!请随时提交pull请求或打开bug和功能请求的问题。

支持

对于任何错误报告或功能请求,请在存储库上打开问题。

目录标签

目录标签

C++物联网HTTP服务器本地部署JSON-RPCESP32开发硬件交互

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP