{"id":8085,"date":"2025-05-03T13:56:49","date_gmt":"2025-05-03T04:56:49","guid":{"rendered":"https:\/\/akibabara.com\/blog\/?p=8085"},"modified":"2025-05-29T15:06:52","modified_gmt":"2025-05-29T06:06:52","slug":"m5stack%e3%81%aemodule-llm%e3%81%a7mcp%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%82%92%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f","status":"publish","type":"post","link":"https:\/\/akibabara.com\/blog\/8085.html","title":{"rendered":"M5Stack\u306eModule-LLM\u3067MCP\u30b5\u30fc\u30d0\u30fc\u3092\u52d5\u304b\u3057\u3066\u307f\u305f"},"content":{"rendered":"\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f25e157701c&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f25e157701c\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_IMG_9294-1024x576.webp\" alt=\"\" class=\"wp-image-8086\" style=\"width:720px\" srcset=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_IMG_9294-1024x576.webp 1024w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_IMG_9294-300x169.webp 300w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_IMG_9294-768x432.webp 768w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_IMG_9294-1536x864.webp 1536w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_IMG_9294.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">M5Stack\u306e<a href=\"https:\/\/shop.m5stack.com\/products\/m5stack-llm-large-language-model-module-kit-ax630c\" target=\"_blank\" rel=\"noreferrer noopener\">Module-LLM<\/a>\u306fNPU\u3092\u642d\u8f09\u3057\u3001\u30ed\u30fc\u30ab\u30eb\u3067LLM\u3092\u5b9f\u884c\u3067\u304d\u308b\u7d44\u307f\u8fbc\u307f\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002LLM\u3067AI\u3068\u5bfe\u8a71\u3092\u3057\u305f\u308a\u3001TTS\u306e\u30c6\u30ad\u30b9\u30c8\u306e\u97f3\u58f0\u5408\u6210\u306a\u3069\u3001\u69d8\u3005\u306a\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u624b\u5143\u3067AI\u3092\u4f53\u9a13\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4eca\u56de\u306f\u3053\u306e\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u4f5c\u3059\u308bAI\u3092\u3001MCP\u3068\u3044\u3046\u4ed5\u7d44\u307f\u3092\u4f7f\u3063\u3066\u3001\u5225\u306eAI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3068\u9023\u643a\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MCP\u306b\u89e6\u308c\u30661\u9031\u9593\u7a0b\u5ea6\u306e\u4eba\u9593\u304c\u66f8\u3044\u3066\u308b\u5185\u5bb9\u306a\u306e\u3067\u3001\u9593\u9055\u3044\u3084\u8aac\u660e\u4e0d\u8db3\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u5927\u76ee\u306b\u898b\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2025\/05\/04 \u8ffd\u8a18\u300cMCP\u30e9\u30a4\u30d6\u30e9\u30ea\u3092FastMCP\u304b\u3089gradio\u306b\u5909\u66f4\u3057\u3066\u307f\u305f\u300d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2025\/05\/29 \u8ffd\u8a18<br>Module-LLM\u306e<a href=\"https:\/\/modulellm-tutorial.readthedocs.io\/en\/latest\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">\u65b0\u3057\u3044\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30da\u30fc\u30b8<\/a>\u304c\u516c\u958b\u3055\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">MCP\u30b5\u30fc\u30d0\u30fc\u3068\u306f\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MCP\u30b5\u30fc\u30d0\u30fc\u3068\u306f\u3001AI\u304c\u5916\u90e8\u306e\u30c4\u30fc\u30eb\u3068\u9023\u643a\u3057\u3066\u30c7\u30fc\u30bf\u306e\u3084\u308a\u3068\u308a\u3092\u884c\u3063\u305f\u308a\u3001\u64cd\u4f5c\u3092\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002\u4f8b\u3048\u3070PC\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3092\u53d6\u5f97\u3057\u305f\u308a\u3001\u30bd\u30d5\u30c8\u306e\u64cd\u4f5c\u3059\u308b\u3068\u3044\u3046\u3088\u3046\u306a\u4f5c\u696d\u3092AI\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u304cMCP\u3067\u3001\u305d\u308c\u3092\u5916\u90e8\u304b\u3089\u63a5\u7d9a\u3067\u304d\u308b\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u306e\u304cMCP\u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">API\u3068\u4f3c\u3066\u307e\u3059\u304c\u3001API\u306f\u30b5\u30fc\u30d0\u30fc\u5074\u306e\u4ed5\u69d8\u306b\u5408\u308f\u305b\u3066\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3082\u4fee\u6b63\u3057\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002\u3057\u304b\u3057MCP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u5074\u306e\u4ed5\u69d8\u3092\u7406\u89e3\u3057\u3066\u3044\u3044\u611f\u3058\u306b\u3084\u3063\u3066\u304f\u308c\u308b\u306e\u304c\u7279\u5fb4\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u3044\u3061\u3044\u3061MCP\u306e\u4f7f\u3044\u65b9\u3092\u8aac\u660e\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002AI\u306fMCP\u30b5\u30fc\u30d0\u30fc\u306b\u3069\u3093\u306a\u6a5f\u80fd\u304c\u3042\u308b\u306e\u304b\u3092\u77e5\u308a\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u5b9f\u884c\u3057\u3066\u304f\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u305f\u307e\u306b\u9593\u9055\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Module-LLM\u3092\u306f\u3058\u3081\u308b\u306b\u306f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u3068\u308a\u3042\u3048\u305a\u6d41\u884c\u306b\u4e57\u308d\u3046\u3068Module-LLM\u3092\u8cb7\u3063\u3066\u307f\u305f\u306e\u3067\u3059\u304c\u3001\u4f55\u3092\u3059\u308c\u3070\u3044\u3044\u306e\u304b\u308f\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4f55\u304c\u3067\u304d\u308b\u306e\u304b\u3082\u308f\u304b\u3089\u306a\u304b\u3063\u305f\u306e\u3067\u3001\u3068\u308a\u3042\u3048\u305a\u306fModule-LLM\u306e\u540c\u4eba\u8a8c\u3092\u8cb7\u3063\u3066\u3001\u66f8\u3044\u3066\u3042\u308b\u3053\u3068\u3092\u305f\u3060\u9032\u3081\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"207\" height=\"300\" src=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_modulemaniax-207x300.webp\" alt=\"\" class=\"wp-image-8087\" srcset=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_modulemaniax-207x300.webp 207w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_modulemaniax-707x1024.webp 707w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_modulemaniax-768x1112.webp 768w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_modulemaniax.webp 829w\" sizes=\"auto, (max-width: 207px) 100vw, 207px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/booth.pm\/ja\/items\/6642202\" target=\"_blank\" rel=\"noreferrer noopener\">Module-LLM MAniaX\u3010\u96fb\u5b50\u66f8\u7c4d\u7248\u3011<\/a><br>\u8457\u8005 aNo\u7814 A5\u30b5\u30a4\u30ba\u30fb156\u30da\u30fc\u30b8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3061\u3089\u306e\u5185\u5bb9\u306f\u53e4\u304f\u3001\u73fe\u5728\u306e\u3082\u306e\u3068\u306f\u3061\u3087\u3063\u3068\u9055\u3063\u305f\u308a\u3057\u307e\u3059\u304c\u3001\u3057\u304f\u307f\u306e\u89e3\u8aac\u3084\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b0\u30e9\u30e0\u3082\u3042\u3063\u3066Module-LLM\u306e\u7406\u89e3\u304c\u9032\u307f\u307e\u3059\u3002\u6700\u65b0\u60c5\u5831\u306f<a href=\"https:\/\/docs.m5stack.com\/en\/module\/Module%20LLM%20Kit\" target=\"_blank\" rel=\"noreferrer noopener\">\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a>\u3092\u53c2\u8003\u306b\u3059\u308b\u3068\u3044\u3044\u3068\u601d\u3044\u307e\u3059\u3002<br>\u7279\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u304c<a href=\"https:\/\/docs.m5stack.com\/en\/guide\/llm\/llm\/image\" target=\"_blank\" rel=\"noreferrer noopener\">\u65b0\u3057\u304f\u306a\u3063\u3066\u308b<\/a>\u306e\u3067Web\u306e\u60c5\u5831\u3068\u5408\u308f\u305b\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u307b\u304b\u306b\u306f <a href=\"https:\/\/qiita.com\/advent-calendar\/2024\/m5stack_module_llm\" target=\"_blank\" rel=\"noreferrer noopener\">Module LLM Advent Calendar<\/a> \u3082\u60c5\u5831\u306e\u5b9d\u5eab\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">LED\u3092\u5149\u3089\u305b\u308bMCP\u30b5\u30fc\u30d0\u30fc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306f\u7df4\u7fd2\u3068\u3057\u3066\u3001LED\u3092\u5149\u3089\u305b\u308bMCP\u30b5\u30fc\u30d0\u30fc\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\u3002LLM\u3068\u306f\u4f55\u3082\u95a2\u4fc2\u3042\u308a\u307e\u305b\u3093\u306d\u3002\u3067\u3082\u307e\u305a\u306f\u52d5\u304f\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u5927\u5207\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d7\u30ed\u30b0\u30e9\u30e0\u306f <a href=\"https:\/\/github.com\/kaz-mac\/misc\/tree\/master\/modulellm-mcp\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a> \u306b\u30a2\u30c3\u30d7\u3057\u307e\u3057\u305f\u3002(<a href=\"https:\/\/github.com\/kaz-mac\/misc\/blob\/master\/modulellm-mcp\/led.py\" target=\"_blank\" rel=\"noreferrer noopener\">led.py<\/a>)<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>#!\/usr\/bin\/env python3\nimport asyncio\nfrom typing import Any\nimport httpx\nfrom mcp.server.fastmcp import FastMCP\n\n# Initialize FastMCP server\nmcp = FastMCP(\n    &quot;led&quot;,\n    host=&quot;0.0.0.0&quot;,\n    port=8000,\n)\n\n# LED\u306e\u660e\u308b\u3055\u3092\u8a2d\u5b9a\u3059\u308b\ndef set_led_brightness(color: str, value: int) -&gt; None:\n    with open(f&quot;\/sys\/class\/leds\/{color}\/brightness&quot;, &quot;w&quot;) as f:\n        f.write(str(value))\n\n# MCP Tool: LED\u306e\u660e\u308b\u3055\u3092\u8a2d\u5b9a\u3059\u308b\n@mcp.tool()\nasync def set_led_colors(red: int, green: int, blue: int) -&gt; str:\n    &quot;&quot;&quot;Change the LED colors. (0-255)&quot;&quot;&quot;\n    if (red &lt; 0 or red &gt; 255 or green &lt; 0 or green &gt; 255 or blue &lt; 0 or blue &gt; 255):\n        return &quot;Invalid color values. Please provide values between 0 and 255.&quot;\n    \n    try:\n        set_led_brightness(&quot;R&quot;, red)\n        set_led_brightness(&quot;G&quot;, green)\n        set_led_brightness(&quot;B&quot;, blue)\n        return &quot;\\n---\\nsuccess&quot;\n    except Exception as e:\n        return f&quot;\\n---\\nerror: {str(e)}&quot;\n\n\nif __name__ == &quot;__main__&quot;:\n    # Run SSE over HTTP on port 8000\n    asyncio.run(\n        mcp.run_sse_async()\n    )<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">MCP\u30b5\u30fc\u30d0\u30fc\u306e\u4f5c\u308a\u65b9\u306f <a href=\"https:\/\/modelcontextprotocol.io\/quickstart\/server\" target=\"_blank\" rel=\"noreferrer noopener\">\u3053\u3061\u3089<\/a> \u306e\u30da\u30fc\u30b8\u3092\u53c2\u8003\u306b\u3057\u307e\u3057\u305f\u3002\u771f\u4f3c\u3066\u66f8\u3044\u305f\u3060\u3051\u306a\u306e\u3067\u3088\u304f\u308f\u304b\u3063\u3066\u307e\u305b\u3093\u304c\u3001set_led_colors() \u3068\u3044\u3046\u306e\u304cMCP\u306e\u30c4\u30fc\u30eb\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u306fred, green, blue\u3068\u3044\u30463\u3064\u6574\u6570\u578b\u306e\u5f15\u6570\u304c\u3042\u308a\u3001\u3053\u3053\u306b0\uff5e255\u306e\u5024\u3092\u4e0e\u3048\u308b\u3068\u3001\u672c\u4f53\u306eLED\u304c\u5149\u308b\u3068\u3044\u3046\u308f\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306eMCP\u30c4\u30fc\u30eb\u306e\u95a2\u6570\u306e\u30b3\u30e1\u30f3\u30c8\u306b &#8220;Change the LED colors. (0-255)&#8221; \u3068\u3044\u3046\u8aac\u660e\u3092\u5165\u308c\u3066\u3042\u308a\u3001AI\u306b\u306f red, green, blue \u306b0\uff5e255\u306e\u6570\u5b57\u3092\u5165\u308c\u3066\u304f\u308c\u308b\u3060\u308d\u3046\u3001\u3068\u3044\u3046\u671f\u5f85\u3092\u3057\u3066\u3044\u307e\u3059\u3002API\u3067\u306f\u306a\u3044\u306e\u3067\u3046\u307e\u304f\u3044\u304f\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u5b9f\u969b\u300cLED\u3092\u8d64\u304f\u3057\u3066\u300d\u3068\u983c\u3093\u3060\u3068\u3053\u308dred\u3060\u3051\u306e\u5024\u3092\u9001\u4fe1\u3057\u3066\u30a8\u30e9\u30fc\u306b\u306a\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3057\u305f\u3002\u305d\u306e\u5f8c3\u3064\u4e0e\u3048\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3068\u6c17\u4ed8\u3044\u3066\u518d\u5b9f\u884c\u3057\u3066\u304f\u308c\u307e\u3057\u305f\u3002\u3084\u3063\u3071AI\u3063\u3066\u3059\u3052\u30fc\u306a\u3001\u3068\u601d\u3063\u305f\u77ac\u9593\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u306e\u8a2d\u5b9a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cursor\u306e\u5834\u5408\u306f\u6b6f\u8eca\u30de\u30fc\u30af\u2192MCP\u3067MCP\u30b5\u30fc\u30d0\u30fc\u306e\u8ffd\u52a0\u304c\u3067\u304d\u307e\u3059\u3002+Add new global MCP Server\u3092\u62bc\u3059\u3068JSON\u306e\u7de8\u96c6\u753b\u9762\u304c\u958b\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306fCursor\u306e\u8a2d\u5b9a\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-json\" data-lang=\"JSON\"><code>{\n  &quot;mcpServers&quot;:{\n    &quot;modulellm&quot;:{\n      &quot;url&quot;:&quot;http:\/\/192.168.xx.xx:8000\/sse&quot;\n    }\n  }\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">URL\u306f module-llm.local \u3067\u3082\u3044\u3051\u307e\u3059\u304c\u3001\u6642\u3005DNS\u306e\u89e3\u6c7a\u304c\u3067\u304d\u306a\u3044\u3053\u3068\u304c\u3042\u308b\u306e\u3067\u3001IP\u30a2\u30c9\u30ec\u30b9\u3067\u6307\u5b9a\u3057\u305f\u65b9\u304c\u5b89\u5b9a\u3057\u3066\u4f7f\u3048\u307e\u3059\u3002\u4ee5\u4e0b\u306fModule-LLM\u306eIP\u30a2\u30c9\u30ec\u30b9\u3092\u56fa\u5b9a\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u8a2d\u5b9a\u306b\u5931\u6557\u3057\u3066\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u304f\u306a\u3063\u305f\u3089\u30b7\u30ea\u30a2\u30eb\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3057\u3066\u76f4\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"\/etc\/network\/interfaces.d\"><code>source \/etc\/network\/interfaces.d\/*\nauto eth0\nallow-hotplug eth0\niface eth0 inet static\n  address 192.168.xx.xxx\n  netmask 255.255.255.0\n  gateway 192.168.xx.x\n  dns-nameservers 8.8.8.8 1.1.1.1<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">MCP\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u3066\u3001Cursor\u306e\u753b\u9762\u306e\u30b9\u30a4\u30c3\u30c1\u3092ON\u306b\u3057\u307e\u3059\u3002\u6b63\u5e38\u306b\u63a5\u7d9a\u3055\u308c\u308c\u3070\u30b9\u30a4\u30c3\u30c1\u304c\u7dd1\u8272\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Claude Desktop\u306e\u5834\u5408\u306f\u3001\u76f4\u63a5\u30ea\u30e2\u30fc\u30c8\u306e\u30db\u30b9\u30c8\u306b\u63a5\u7d9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u305d\u3046\u306a\u306e\u3067 <a href=\"https:\/\/github.com\/sparfenyuk\/mcp-proxy\" target=\"_blank\" rel=\"noreferrer noopener\">mcp-proxy<\/a> \u3092\u4f7f\u3063\u3066\u4e2d\u7d99\u3055\u305b\u3066\u4f7f\u3044\u307e\u3057\u305f\u3002\u4ee5\u4e0b\u306fClaude Desktop\u306e\u8a2d\u5b9a\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-json\" data-lang=\"JSON\"><code>{\n  &quot;mcpServers&quot;:{\n    &quot;modulellm&quot;:{\n      &quot;command&quot;:&quot;C:your_opath_to\\\\mcp-proxy.exe&quot;,\n      &quot;args&quot;:[\n        &quot;http:\/\/192.168.xx.xxx:8000\/sse&quot;\n      ]\n    }\n  }\n}<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u5b9f\u884c\u3057\u3066\u307f\u305f\u7d50\u679c<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"embed-twitter\"><blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\"><p lang=\"ja\" dir=\"ltr\">Module-LLM\u306eMCP\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u3063\u3066\u3001\u81ea\u7136\u8a00\u8a9e\u304b\u3089LED\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u304c\u3067\u304d\u305f\uff01<br>\u300cLED\u3092\u9806\u756a\u306b\u8d64\u3001\u7dd1\u3001\u9752\u306b\u5149\u3089\u305b\u3066\u3001\u6700\u5f8c\u306b\u6d88\u3057\u3066\u3002\u300d<a href=\"https:\/\/twitter.com\/hashtag\/ModuleLLM?src=hash&amp;ref_src=twsrc%5Etfw\">#ModuleLLM<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/M5Stack?src=hash&amp;ref_src=twsrc%5Etfw\">#M5Stack<\/a> <a href=\"https:\/\/t.co\/tKtO06BhIO\">pic.twitter.com\/tKtO06BhIO<\/a><\/p>&mdash; Kaz (@Kaz_Macintosh) <a href=\"https:\/\/twitter.com\/Kaz_Macintosh\/status\/1917101622062420378?ref_src=twsrc%5Etfw\">April 29, 2025<\/a><\/blockquote><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u3061\u3083\u3093\u3068\u52d5\u3044\u3066\u307e\u3059\u306d\u3002\u30c7\u30fc\u30bf\u306e\u4e0e\u3048\u65b9\u306f\u4f55\u3082\u6307\u793a\u3057\u3066\u306a\u3044\u306e\u306b\u3001MCP\u30c4\u30fc\u30eb\u306e\u4ed5\u69d8\u3092\u7406\u89e3\u3057\u3066\u5b9f\u884c\u3057\u3066\u304f\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">LLM\u3068TTS\u306eMCP\u30b5\u30fc\u30d0\u30fc\u3092\u4f5c\u308b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u304b\u3089\u304c\u3044\u3088\u3044\u3088\u672c\u756a\u3002Module-LLM\u306eLLM\uff08AI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\uff09\u3068\u5bfe\u8a71\u3057\u305f\u308a\u3001\u30c6\u30ad\u30b9\u30c8\u306e\u97f3\u58f0\u5408\u6210\uff08TTS\uff09\u3092\u8a66\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u306f <a href=\"https:\/\/booth.pm\/ja\/items\/6642202\" target=\"_blank\" rel=\"noreferrer noopener\">Module-LLM MAniaX<\/a> \u306e<a href=\"https:\/\/github.com\/anoken\/modulellm_maniax\" target=\"_blank\" rel=\"noreferrer noopener\">\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9<\/a>\u3092\u53c2\u8003\u306b\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002<br>Module-LLM\u306b\u306f<a href=\"https:\/\/github.com\/m5stack\/StackFlow\" target=\"_blank\" rel=\"noreferrer noopener\">StackFlow<\/a>\u3068\u3044\u3046\u30b7\u30b9\u30c6\u30e0\u304c\u7a3c\u50cd\u3057\u3044\u3066\u3001StackFlow\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u3068LLM\u3084TTS\u306a\u3069\u3092\u5236\u5fa1\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308bLLM\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002<br>\u30fbLLM: qwen2.5-0.5B-prefill-20e<br>\u30fbTTS: melotts_zh-cn<br>\u73fe\u6642\u70b9\u3067\u306f\u65e5\u672c\u8a9e\u304c\u558b\u308c\u308bTTS\u306f\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u558b\u308c\u308b\u306e\u306f\u82f1\u8a9e\u304b\u4e2d\u56fd\u8a9e\u306e\u307f\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f5c\u6210\u3057\u305fMCP\u30b5\u30fc\u30d0\u30fc\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306f <a href=\"https:\/\/github.com\/kaz-mac\/misc\/tree\/master\/modulellm-mcp\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a> \u306b\u30a2\u30c3\u30d7\u3057\u307e\u3057\u305f\u3002(<a href=\"https:\/\/github.com\/kaz-mac\/misc\/blob\/master\/modulellm-mcp\/mcp_llmtts.py\" target=\"_blank\" rel=\"noreferrer noopener\">mcp_llmtts.py<\/a>)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c7\u30d0\u30c3\u30b0\u7528MCP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">MCP\u30b5\u30fc\u30d0\u30fc\u3092\u64cd\u4f5c\u3057\u3088\u3046\u3068\u3057\u3066\u3046\u307e\u304f\u52d5\u304b\u306a\u3044\u5834\u5408\u306f\u3001\u307e\u305a\u306f\u554f\u984c\u5207\u308a\u5206\u3051\u306e\u305f\u3081\u306b\u3001\u30c7\u30e2\u7528\u306eMCP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089MCP\u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u307f\u308b\u3068\u3044\u3044\u3067\u3057\u3087\u3046\u3002\uff08\u30b5\u30f3\u30d7\u30ebMCP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8 <a href=\"https:\/\/github.com\/kaz-mac\/misc\/blob\/master\/modulellm-mcp\/client-http.py\" target=\"_blank\" rel=\"noreferrer noopener\">client-http.py<\/a>\uff09\u3053\u306e\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3001MCP\u30b5\u30fc\u30d0\u30fc\u3067\u4f7f\u3048\u308b\u30c4\u30fc\u30eb\u306e\u4e00\u89a7\u8868\u793a\u3068\u3001send_message\u3001speak_text\u3001set_led_colors\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>root@m5stack-LLM:# uv run client-http.py\nMCP Server URL: http:\/\/127.0.0.1:8000\/sse\n=== Available tools ===\n- send_message: Send a message to the LLM and get the response.\n  Parameters:\n    - message (string): No description\n\n- speak_text: It will speak when you give it a message. English only.\n  Parameters:\n    - message (string): No description\n\n- set_led_colors: Change the LED colors. (0-255)\n  Parameters:\n    - red (integer): No description\n    - green (integer): No description\n    - blue (integer): No description\n\n\n=== Send Message ===\n[TextContent(type=&#39;text&#39;, text=&#39;\\n---\\n\u79c1\u306f\u30b9\u30bf\u30c3\u30af\u30c1\u30e3\u30f3\u3068\u3044\u3046\u540d\u524d\u306eAI\u30a2\u30b7\u30b9\u30bf\u30f3\u30c8\u3067\u3001\u89aa\u5207\u3067\u793c\u5100\u6b63\u3057\u304f\u6b63\u76f4\u306a\u4eba\u9593\u3067\u3059\u3002\u3042\u306a\u305f\u306e\u8cea\u554f\u306b\u7b54\u3048\u305f\u308a\u3001\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u305f\u308a\u3059\u308b\u305f\u3081\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4f55\u304b\u304a\u624b\u4f1d\u3044\u3067\u304d\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u304b\uff1f\\n\\n&#39;, annotations=None)]\n\n=== SET LED COLORS ===\n[TextContent(type=&#39;text&#39;, text=&#39;\\n---\\nsuccess&#39;, annotations=None)]\n\n=== Seak Text ===\n[TextContent(type=&#39;text&#39;, text=&#39;\\n---\\nsuccess&#39;, annotations=None)]\n\n=== SET LED COLORS ===\n[TextContent(type=&#39;text&#39;, text=&#39;\\n---\\nsuccess&#39;, annotations=None)]<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u308c\u305e\u308c\u7d50\u679c\u304c\u8fd4\u3063\u3066\u304f\u308c\u3070\u6e96\u5099\u5b8c\u4e86\u3067\u3059\u3002\u3082\u3057\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u5834\u5408\u306f\u3001MCP\u30b5\u30fc\u30d0\u30fc\u306e\u65b9\u306e\u51fa\u529b\u306b\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002Module-LLM\u306f\u7d50\u69cb\u52d5\u4f5c\u304c\u4e0d\u5b89\u5b9a\u3067\u3088\u304f\u306b\u6b62\u307e\u308a\u307e\u3059\u3002llm-sys\u3092\u518d\u8d77\u52d5\u3057\u305f\u308a\u3001OS\u4e8b\u614b\u3092\u518d\u8d77\u52d5\u3059\u308b\u3068\u6539\u5584\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>systemctl restart llm-sys<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306b\u4f7f\u3063\u3066\u3082\u3089\u3046<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u308c\u3067\u306f\u5b9f\u969b\u306bAI\u306bMCP\u30b5\u30fc\u30d0\u30fc\u306e\u30c4\u30fc\u30eb\u3092\u64cd\u4f5c\u3057\u3066\u3082\u3089\u3044\u307e\u3057\u3087\u3046\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u6b63\u3057\u304fMCP\u30b5\u30fc\u30d0\u30fc\u304c\u8a8d\u8b58\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002Claude Desktop\u306e\u5834\u5408\u306f\u3001\uff0b\u306e\u6a2a\u306e\u30c4\u30fc\u30eb\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u4f7f\u7528\u3059\u308b\u30c4\u30fc\u30eb\u306e\u30aa\u30f3\u30aa\u30d5\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f25e1579c6c&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f25e1579c6c\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"457\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_claudedesktopmcp-1024x457.webp\" alt=\"\" class=\"wp-image-8094\" style=\"width:640px\" srcset=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_claudedesktopmcp-1024x457.webp 1024w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_claudedesktopmcp-300x134.webp 300w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_claudedesktopmcp-768x343.webp 768w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_claudedesktopmcp-1536x685.webp 1536w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_claudedesktopmcp.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cursor\u306e\u5834\u5408\u306f\u6b6f\u8eca\u30a2\u30a4\u30b3\u30f3\u2192MCP\u3067\u30aa\u30f3\u30aa\u30d5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f25e157a22a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f25e157a22a\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"317\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_cursormcp-1024x317.webp\" alt=\"\" class=\"wp-image-8096\" style=\"width:640px\" srcset=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_cursormcp-1024x317.webp 1024w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_cursormcp-300x93.webp 300w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_cursormcp-768x238.webp 768w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_cursormcp-1536x475.webp 1536w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_cursormcp.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u308c\u3067\u306fAI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306b\u3001MCP\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u3082\u3089\u3044\u307e\u3057\u3087\u3046\u3002\u3053\u3061\u3089\u304b\u3089\u306e\u6307\u793a\u306f<strong>\u300c\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u3063\u3066\u76f8\u624b\u306e\u540d\u524d\u3092\u805e\u3044\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u300d<\/strong>\u3068\u3060\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f25e157a778&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f25e157a778\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"669\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-1-1024x669.webp\" alt=\"\" class=\"wp-image-8097\" style=\"width:640px\" srcset=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-1-1024x669.webp 1024w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-1-300x196.webp 300w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-1-768x502.webp 768w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-1-1536x1004.webp 1536w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-1.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u3061\u3083\u3093\u3068\u81ea\u5df1\u7d39\u4ecb\u3092\u3057\u3066\u304f\u308c\u307e\u3057\u305f\u306d\u3002\u540d\u524d\u306f\uff7d\uff80\uff6f\uff78\uff81\uff6c\uff9d\u3068\u8a00\u3046\u3088\u3046\u3067\u3059\u3002\u304b\u308f\u3044\u3044\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u308c\u3067\u306f\u6b21\u306f<strong>\u300c\u30b9\u30bf\u30c3\u30af\u30c1\u30e3\u30f3\u306b\u558b\u3063\u3066\u3082\u3089\u3044\u307e\u3057\u3087\u3046\u3002\u82f1\u8a9e\u3067\u30b9\u30bf\u30c3\u30af\u30c1\u30e3\u30f3\u306b\u7c21\u5358\u306a\u6328\u62f6\u306e\u82f1\u8a9e\u3092\u558b\u3089\u305b\u3066\u304f\u3060\u3055\u3044\u3002\u300d<\/strong>\u3068\u6307\u793a\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f25e157ad20&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f25e157ad20\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"893\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-2-893x1024.webp\" alt=\"\" class=\"wp-image-8099\" style=\"width:640px\" srcset=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-2-893x1024.webp 893w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-2-262x300.webp 262w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-2-768x880.webp 768w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_mcpllm-2.webp 1047w\" sizes=\"auto, (max-width: 893px) 100vw, 893px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uff7d\uff80\uff6f\uff78\uff81\uff6c\uff9d\u306b\u82f1\u8a9e\u3067\u6328\u62f6\u3092\u2026\u3068\u4f1d\u3048\u305f\u3082\u306e\u306e\u65e5\u672c\u8a9e\u3067\u8fd4\u3063\u3066\u304d\u307e\u3057\u304c\u3001\u305d\u308c\u3092AI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u82f1\u8a33\u3057\u3066\u3001TTS\u3067\u97f3\u58f0\u5408\u6210\u3057\u3066\u304f\u308c\u307e\u3057\u305f\u3002AI\u3068AI\u306e\u7af6\u696d\u3067\u3059\u306d\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3093\u306a\u611f\u3058\u3067\u3056\u3063\u304f\u308a\u3068MCP\u3092\u4f53\u9a13\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u3001\u60f3\u50cf\u4ee5\u4e0a\u306bAI\u304c\u8ce2\u304f\u3046\u307e\u3044\u611f\u3058\u306b\u9023\u643a\u3057\u3066\u304f\u308c\u305f\u306e\u304c\u9762\u767d\u304b\u3063\u305f\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f59\u8ac7\u3000Module-LLM\u306f\u666e\u901a\u306bLinux\u3068\u3057\u3066\u904a\u3079\u308b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Module-LLM\u306b\u306fUbuntu\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u666e\u901a\u306bLinux\u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066\u904a\u3079\u307e\u3059\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u3082\u666e\u901a\u306bapt\u30b3\u30de\u30f3\u30c9\u306a\u3069\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002\u30e1\u30e2\u30ea\u306f1GB\uff084GB\u4e2d3GB\u306fLLM\u7528\uff09\u3001\u30b9\u30c8\u30ec\u30fc\u30b8\u306f32GB\u3042\u308a\u30012\u30b3\u30a2\u306eARM Cortex-A53\u304c\u3042\u308a\u3001\u30b7\u30f3\u30b0\u30eb\u30b3\u30a2\u6027\u80fd\u3067\u306fRaspberry PI 4\u304f\u3089\u3044\u3001\u30de\u30eb\u30c1\u30b3\u30a2\u6027\u80fd\u3067\u306fRaspberry PI 2\u304f\u3089\u3044\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306fUnixbench\u306e\u7d50\u679c\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>   BYTE UNIX Benchmarks (Version 5.1.3)\n\n   System: m5stack-LLM: GNU\/Linux\n   OS: GNU\/Linux -- 4.19.125 -- #1 SMP PREEMPT Wed Nov 20 14:43:36 CST 2024\n   Machine: aarch64 (aarch64)\n   Language: en_US.utf8 (charmap=&quot;UTF-8&quot;, collate=&quot;UTF-8&quot;)\n   CPU 0: ARM Cortex-A53 (48.0 bogomips)\n          CPU Features: fp asimd evtstrm crc32 cpuid\n   CPU 1: ARM Cortex-A53 (48.0 bogomips)\n          CPU Features: fp asimd evtstrm crc32 cpuid\n   14:46:39 up 42 min,  1 user,  load average: 1.62, 1.57, 1.54; runlevel 2025-02-20\n\n------------------------------------------------------------------------\nBenchmark Run: Fri Apr 25 2025 14:46:39 - 15:14:38\n2 CPUs in system; running 1 parallel copy of tests\n\nDhrystone 2 using register variables        6726783.3 lps   (10.0 s, 7 samples)\nDouble-Precision Whetstone                     1646.8 MWIPS (10.0 s, 7 samples)\nExecl Throughput                                695.7 lps   (30.0 s, 2 samples)\nFile Copy 1024 bufsize 2000 maxblocks        180539.3 KBps  (30.0 s, 2 samples)\nFile Copy 256 bufsize 500 maxblocks           54000.8 KBps  (30.0 s, 2 samples)\nFile Copy 4096 bufsize 8000 maxblocks        437487.0 KBps  (30.0 s, 2 samples)\nPipe Throughput                              433941.2 lps   (10.0 s, 7 samples)\nPipe-based Context Switching                  85813.8 lps   (10.0 s, 7 samples)\nProcess Creation                               2170.7 lps   (30.0 s, 2 samples)\nShell Scripts (1 concurrent)                   1571.6 lpm   (60.0 s, 2 samples)\nShell Scripts (8 concurrent)                    320.3 lpm   (60.1 s, 2 samples)\nSystem Call Overhead                         625569.8 lps   (10.0 s, 7 samples)\n\nSystem Benchmarks Index Values               BASELINE       RESULT    INDEX\nDhrystone 2 using register variables         116700.0    6726783.3    576.4\nDouble-Precision Whetstone                       55.0       1646.8    299.4\nExecl Throughput                                 43.0        695.7    161.8\nFile Copy 1024 bufsize 2000 maxblocks          3960.0     180539.3    455.9\nFile Copy 256 bufsize 500 maxblocks            1655.0      54000.8    326.3\nFile Copy 4096 bufsize 8000 maxblocks          5800.0     437487.0    754.3\nPipe Throughput                               12440.0     433941.2    348.8\nPipe-based Context Switching                   4000.0      85813.8    214.5\nProcess Creation                                126.0       2170.7    172.3\nShell Scripts (1 concurrent)                     42.4       1571.6    370.6\nShell Scripts (8 concurrent)                      6.0        320.3    533.8\nSystem Call Overhead                          15000.0     625569.8    417.0\n                                                                   ========\nSystem Benchmarks Index Score                                         349.6\n\n------------------------------------------------------------------------\nBenchmark Run: Fri Apr 25 2025 15:14:38 - 15:42:40\n2 CPUs in system; running 2 parallel copies of tests\n\nDhrystone 2 using register variables       13359822.9 lps   (10.0 s, 7 samples)\nDouble-Precision Whetstone                     3267.9 MWIPS (10.0 s, 7 samples)\nExecl Throughput                               1226.9 lps   (29.8 s, 2 samples)\nFile Copy 1024 bufsize 2000 maxblocks        339262.9 KBps  (30.0 s, 2 samples)\nFile Copy 256 bufsize 500 maxblocks          102300.4 KBps  (30.0 s, 2 samples)\nFile Copy 4096 bufsize 8000 maxblocks        837516.9 KBps  (30.0 s, 2 samples)\nPipe Throughput                              861233.8 lps   (10.0 s, 7 samples)\nPipe-based Context Switching                 121443.2 lps   (10.0 s, 7 samples)\nProcess Creation                               3015.9 lps   (30.0 s, 2 samples)\nShell Scripts (1 concurrent)                   2335.4 lpm   (60.1 s, 2 samples)\nShell Scripts (8 concurrent)                    324.3 lpm   (60.1 s, 2 samples)\nSystem Call Overhead                        1239842.1 lps   (10.0 s, 7 samples)\n\nSystem Benchmarks Index Values               BASELINE       RESULT    INDEX\nDhrystone 2 using register variables         116700.0   13359822.9   1144.8\nDouble-Precision Whetstone                       55.0       3267.9    594.2\nExecl Throughput                                 43.0       1226.9    285.3\nFile Copy 1024 bufsize 2000 maxblocks          3960.0     339262.9    856.7\nFile Copy 256 bufsize 500 maxblocks            1655.0     102300.4    618.1\nFile Copy 4096 bufsize 8000 maxblocks          5800.0     837516.9   1444.0\nPipe Throughput                               12440.0     861233.8    692.3\nPipe-based Context Switching                   4000.0     121443.2    303.6\nProcess Creation                                126.0       3015.9    239.4\nShell Scripts (1 concurrent)                     42.4       2335.4    550.8\nShell Scripts (8 concurrent)                      6.0        324.3    540.5\nSystem Call Overhead                          15000.0    1239842.1    826.6\n                                                                   ========\nSystem Benchmarks Index Score                                         591.6<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u9a5a\u304f\u306e\u306f\u305d\u306e\u6d88\u8cbb\u96fb\u529b\u3067\u3059\u3002<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f25e157b452&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f25e157b452\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_GpWQv7lbYAAlTht-1024x576.webp\" alt=\"\" class=\"wp-image-8100\" style=\"width:480px\" srcset=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_GpWQv7lbYAAlTht-1024x576.webp 1024w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_GpWQv7lbYAAlTht-300x169.webp 300w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_GpWQv7lbYAAlTht-768x432.webp 768w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_GpWQv7lbYAAlTht-1536x864.webp 1536w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_GpWQv7lbYAAlTht.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">LLM\u3067\u63a8\u8ad6\u3092\u884c\u3063\u3066\u3044\u308b\u6700\u4e2d\u306e\u6e2c\u5b9a\u5024\u3067\u3059\u304c\u30015V 0.25A\u30681.25W\u3057\u304b\u3042\u308a\u307e\u305b\u3093\u3002\u305f\u3063\u305f\u3053\u308c\u3060\u3051\u306e\u6d88\u8cbb\u96fb\u529b\u3067LLM\u304c\u52d5\u3044\u3066\u308b\u306a\u3093\u3066\u3059\u3054\u3044\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f59\u8ac7\u3000\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3059\u3079\u3057\uff01<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Module-LLM\u306f\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u58ca\u308c\u3084\u3059\u3044\u3068\u3044\u3046\u5370\u8c61\u3067\u3059\u3002\u5b9f\u969b\u306b\u58ca\u308c\u3066\u30d5\u30a1\u30fc\u30e0\u30a6\u30a7\u30a2\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304b\u3089\u3084\u308a\u76f4\u3057\u305f\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u305b\u3063\u304b\u304f\u4f5c\u6210\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3084\u8a2d\u5b9a\u304c\u6d88\u3048\u308b\u3068\u60b2\u3057\u3044\u306e\u3067\u3001SD\u30ab\u30fc\u30c9\u306b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u53d6\u3063\u3066\u304a\u304f\u3068\u5b89\u5fc3\u3067\u3059\u3002Module-LLM\u306bSD\u30ab\u30fc\u30c9\u3092\u633f\u5165\u3059\u308b\u3068\u81ea\u52d5\u7684\u306b\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">df\u30b3\u30de\u30f3\u30c9\u3067\/dev\/mmcblk1p1\u3068\u3044\u3046\u30c7\u30d0\u30a4\u30b9\u304c\/mnt\/mmcblk1p1\u306b\u30de\u30a6\u30f3\u30c8\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>root@m5stack-LLM:# df -Th\nFilesystem     Type   Size  Used Avail Use% Mounted on\n\/dev\/root      ext4    28G  6.0G   22G  22% \/\ntmpfs          tmpfs  480M     0  480M   0% \/dev\/shm\ntmpfs          tmpfs  192M  896K  191M   1% \/run\ntmpfs          tmpfs  5.0M     0  5.0M   0% \/run\/lock\ntmpfs          tmpfs  480M     0  480M   0% \/tmp\n\/dev\/mmcblk1p1 ext2    30G   13G   15G  47% \/mnt\/mmcblk1p1\ntmpfs          tmpfs   96M     0   96M   0% \/run\/user\/0<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">vfat\u304b\u3089ext4\u306b\u5909\u66f4\u3057\u3066\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code># umount \/mnt\/mmcblk1p1\n# mkfs.ext2 \/dev\/mmcblk1p1\n# mount -o noatime,nodiratime \/dev\/mmcblk1p1 \/mnt\/mmcblk1p1<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b9\u30af\u30ea\u30d7\u30c8<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>#!\/bin\/bash\nBACKUP_TO=\/mnt\/mmcblk1p1\/backup\n\ncd \/\nmkdir -p ${BACKUP_TO}\nrsync -aH --delete \\\n  --exclude=proc \\\n  --exclude=sys \\\n  --exclude=dev \\\n  --exclude=run \\\n  --exclude=tmp \\\n  --exclude=mnt \\\n  --exclude=media \\\n  --exclude=lost+found \\\n  --exclude=etc\/configfs \\\n  --exclude=opt\/swapfile \\\n  .\/ \\\n  ${BACKUP_TO}\/<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">rsync\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3084&#8211;exclude\u306f\u9069\u5b9c\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u521d\u56de\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u6642\u306f\u30d5\u30eb\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3059\u308b\u306e\u3067\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u304c\u30012\u56de\u76ee\u4ee5\u964d\u306f\u5dee\u5206\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306a\u306e\u3067\u65e9\u304f\u7d42\u308f\u308b\u306f\u305a\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f59\u8ac7\u3000\u305d\u306e\u4ed6\u306e\u30e2\u30c7\u30eb<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6a19\u6e96\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u30e2\u30c7\u30eb\u4ee5\u5916\u306b\u3082\u3001\u4ed6\u306e\u30e2\u30c7\u30eb\u304c\u5165\u624b\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>root@m5stack-LLM:# apt list|grep llm-model\nllm-model-audio-en-us\/stable 0.2 arm64\nllm-model-audio-zh-cn\/stable 0.2 arm64\nllm-model-deepseek-r1-1.5b-ax630c\/stable 0.3 arm64\nllm-model-deepseek-r1-1.5b-p256-ax630c\/stable 0.4 arm64\nllm-model-depth-anything-ax630c\/stable 0.3 arm64\nllm-model-internvl2.5-1b-ax630c\/stable 0.4 arm64\nllm-model-llama3.2-1b-p256-ax630c\/stable 0.4 arm64\nllm-model-llama3.2-1b-prefill-ax630c\/stable 0.2 arm64\nllm-model-melotts-zh-cn\/stable 0.4 arm64\nllm-model-openbuddy-llama3.2-1b-ax630c\/stable 0.2 arm64\nllm-model-qwen2.5-0.5b-int4-ax630c\/stable 0.4 arm64\nllm-model-qwen2.5-0.5b-p256-ax630c\/stable 0.4 arm64\nllm-model-qwen2.5-0.5b-prefill-20e\/stable 0.2 arm64\nllm-model-qwen2.5-1.5b-ax630c\/stable 0.3 arm64\nllm-model-qwen2.5-1.5b-int4-ax630c\/stable 0.4 arm64\nllm-model-qwen2.5-1.5b-p256-ax630c\/stable 0.4 arm64\nllm-model-qwen2.5-coder-0.5b-ax630c\/stable 0.2 arm64\nllm-model-sherpa-ncnn-streaming-zipformer-20m-2023-02-17\/stable 0.2 arm64\nllm-model-sherpa-ncnn-streaming-zipformer-zh-14m-2023-02-23\/stable 0.2 arm64\nllm-model-sherpa-onnx-kws-zipformer-gigaspeech-3.3m-2024-01-01\/stable 0.3 arm64\nllm-model-sherpa-onnx-kws-zipformer-wenetspeech-3.3m-2024-01-01\/stable 0.3 arm64\nllm-model-silero-vad\/stable 0.3 arm64\nllm-model-single-speaker-english-fast\/stable 0.2 arm64\nllm-model-single-speaker-fast\/stable 0.2 arm64\nllm-model-whisper-base\/stable 0.3 arm64\nllm-model-whisper-tiny\/stable 0.3 arm64\nllm-model-yolo11n-hand-pose\/stable 0.3 arm64\nllm-model-yolo11n-pose\/stable 0.3 arm64\nllm-model-yolo11n-seg\/stable 0.3 arm64\nllm-model-yolo11n\/stable 0.2 arm64<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u3048\u3070\u6a19\u6e96\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u30e2\u30c7\u30eb\u306f qwen2.5-0.5b-prefill-20e \u3067\u3059\u304c\u3001qwen2.5-1.5b-p256-ax630c \u3092\u4f7f\u3046\u3068\u304b\u306a\u308a\u8ce2\u304f\u306a\u308a\u307e\u3059\u3002\u305d\u306e\u4ee3\u308f\u308a\u5fdc\u7b54\u306f\u3068\u3066\u3082\u9045\u304f\u306a\u308a\u307e\u3059\u3002\u6027\u80fd\u304b\u3001\u30b9\u30d4\u30fc\u30c9\u304b\u3001\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8ffd\u8a18\u3000MCP\u30e9\u30a4\u30d6\u30e9\u30ea\u3092FastMCP\u304b\u3089gradio\u306b\u5909\u66f4\u3057\u3066\u307f\u305f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/gradio-app\/gradio\" target=\"_blank\" rel=\"noreferrer noopener\">gradio<\/a>\u3068\u3044\u3046UI\u3092\u63d0\u4f9b\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3067MCP\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3067\u304d\u308b\u3053\u3068\u3092<a href=\"https:\/\/note.com\/npaka\/n\/n32a8f0bd4796?sub_rt=share_b\" target=\"_blank\" rel=\"noreferrer noopener\">\u77e5\u308a\u307e\u3057\u305f<\/a>\u3002\u8abf\u3079\u3066\u307f\u308b\u3068\u3068\u3066\u3082<a href=\"https:\/\/huggingface.co\/blog\/gradio-mcp\" target=\"_blank\" rel=\"noreferrer noopener\">\u7c21\u5358\u305d\u3046<\/a>\u3060\u3063\u305f\u306e\u3067\u3001FastMCP\u304b\u3089gradio\u306b\u5909\u66f4\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6b63\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3053\u3061\u3089\u2192 <a href=\"https:\/\/github.com\/kaz-mac\/misc\/blob\/master\/modulellm-mcp\/mcp_llmtts_gradio.py\" target=\"_blank\" rel=\"noreferrer noopener\">mcp_llmtts_gradio.py<\/a><\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f25e157c08d&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f25e157c08d\" class=\"wp-block-image size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_gradio-846x1024.webp\" alt=\"\" class=\"wp-image-8110\" style=\"width:560px\" srcset=\"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_gradio-846x1024.webp 846w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_gradio-248x300.webp 248w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_gradio-768x930.webp 768w, https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_gradio.webp 991w\" sizes=\"auto, (max-width: 846px) 100vw, 846px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u304cgradio\u306b\u3088\u308bWeb\u306eUI\u3067\u3059\u3002\u521d\u3081\u3066\u4f7f\u3063\u305f\u3093\u3067\u3059\u304c\u3001\u30d6\u30e9\u30a6\u30b6\u3067\u30c4\u30fc\u30eb\u306e\u30c7\u30d0\u30c3\u30b0\u304c\u3067\u304d\u3066\u4fbf\u5229\u3067\u3059\u306d\u3002\u3053\u308c\u306f\u7d20\u6674\u3089\u3057\u3044\u3002<br>URL\u306f http:\/\/192.168.x.xxx:7860\/ \u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MCP\u30b5\u30fc\u30d0\u30fc\u306eURL\u306f http:\/\/192.168.x.xxx:7860\/gradio_api\/mcp\/sse \u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M5Stack\u306eModule-LLM\u306fNPU\u3092\u642d\u8f09\u3057\u3001\u30ed\u30fc\u30ab\u30eb\u3067LLM\u3092\u5b9f\u884c\u3067\u304d\u308b\u7d44\u307f\u8fbc\u307f\u30e2\u2026<\/p>\n","protected":false},"author":1,"featured_media":8086,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[128,132,145,146],"class_list":{"0":"post-8085","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-other-topic","8":"tag-m5stack","9":"tag-ai","10":"tag-llm","11":"tag-tts","12":"three-column","13":"ar-three-column","14":"au-three-column"},"jetpack_featured_media_url":"https:\/\/akibabara.com\/blog\/wp-content\/uploads\/2025\/05\/xn_IMG_9294.webp","jetpack_shortlink":"https:\/\/wp.me\/pavCgQ-26p","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/posts\/8085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/comments?post=8085"}],"version-history":[{"count":21,"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/posts\/8085\/revisions"}],"predecessor-version":[{"id":8178,"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/posts\/8085\/revisions\/8178"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/media\/8086"}],"wp:attachment":[{"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/media?parent=8085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/categories?post=8085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/akibabara.com\/blog\/wp-json\/wp\/v2\/tags?post=8085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}