书接上回
安信可AiPi-PalChatV1 + MCP通过HomeAssistant自动化控制设备
这篇主要是研究下,通过安信可AiPi-PalChatV1 玩一些花活,比如语音下达指令让电脑自动进行操作什么的。
啥也不说了就是图个乐。
效果演示
话不多说直接上视频
源代码
话不多说直接上代码,这个代码主要是示例功能简单的模拟了鼠标和键盘模拟,鼠标的滚轮活动和键盘按键操作。
# server.py
import sys
import webbrowser
import logging
from pynput.keyboard import Key, Controller as KeyboardController
from pynput.mouse import Button,Controller as MouseController
from mcp.server.fastmcp import FastMCP
from pydantic import BaseModel
# 配置日志
logger = logging.getLogger('Home Assistant MCP')
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
# Fix UTF-8 encoding for Windows console
if sys.platform == 'win32':
sys.stderr.reconfigure(encoding='utf-8')
sys.stdout.reconfigure(encoding='utf-8')
mouseCtroller = MouseController()
keyboardController = KeyboardController()
# Create an MCP server
mcp = FastMCP("PC Controller MCP")
@mcp.tool()
def mouse_scroll_down(scroll_amount: int = -50):
"""向下滚动、往下点、向下滑动鼠标"""
current_position = mouseCtroller.position
logger.info(f"开始滚动鼠标(^_^)向下(^_^)")
mouseCtroller.scroll(0, scroll_amount)
return {"success": True, "answer": "鼠标已滚动"}
@mcp.tool()
def mouse_scroll_up(scroll_amount: int = 50):
"""向上滚动、往上点、向上滑动鼠标"""
current_position = mouseCtroller.position
logger.info(f"开始滚动鼠标(^_^)向上(^_^)")
mouseCtroller.scroll(0, scroll_amount)
return {"success": True, "answer": "滚动成功"}
@mcp.tool()
def page_down():
"""向下翻页、下一页"""
logger.info("开始向下翻页")
keyboardController.press(Key.page_down)
keyboardController.release(Key.page_down)
return {"success": True, "answer": "翻页成功"}
@mcp.tool()
def page_up():
"""向上翻页、上一页"""
logger.info("开始向上翻页")
keyboardController.press(Key.page_up)
keyboardController.release(Key.page_up)
return {"success": True, "answer": "翻页成功"}
@mcp.tool()
def open_system(system_name: str):
"""这是一个可以打开浏览器的工具,通过系统名称打开不同的url可以通过指令,系统名称包括:安信可社区,指令调用方式例如:打开安信可社区。即可执行进行打开指定系统的url"""
logger.info(f'打开:{system_name}')
url = 'https://www.baidu.com'
if system_name == '安信可社区':
url = 'https://bbs.ai-thinker.com/'
else:
return "https://www.baidu.com"
success = webbrowser.open(url)
return {"message": f"{system_name} 打开成功" if success else f"{system_name} 打开失败"}
# Start the server
if __name__ == "__main__":
mcp.run(transport="stdio")
通过安信可AiPi-PalChatV1语音指令,可以调用PC端运行的MCP服务,
MCP服务实现爬虫之类的功能。可以实现自动化操作。
目前录制视频展示效果比较直观,所以直接用的小智Py客户端。与安信可AiPi-PalChatV1效果是一样的。