
<div align="center">
<a href="https://www.nonead.com">
<img src="https://www.nonead.com/assets/img/vi/NONEAD_ai.png" width="300" alt="nonead logo">
</a>
</div>

<p align="center">
  <a href="./README.en.md">English</a> |
  <a href="./README.md">简体中文</a> |
  <a href="./README.jp.md">日本語</a> |
  <a href="./README.ko.md">한국어</a> |
  <a href="./README.de.md">Deutsch</a> |
  <a href="./README.fr.md">Français</a> |
  <a href="./README.ru.md">Русский язык</a> |
  <a href="./README.th.md">ภาษาไทย</a> |
  <a href="./README.es.md">Español</a> |
  <a href="./README.ar.md">العربية</a> |
  <a href="./README.da.md">dansk</a>  
</p>

<p align="center">
    <a href='https://gitee.com/nonead/Nonead-Universal-Robots-MCP/releases'>
      <img src='https://img.shields.io/github/v/release/nonead/Nonead-Universal-Robots-MCP.svg?label=Gitee%20Release&color=blue' alt="Gitee Release"></img>
    </a>
    <a href="https://github.com/nonead/Nonead-Universal-Robots-MCP/releases">
      <img src="https://img.shields.io/github/v/release/nonead/Nonead-Universal-Robots-MCP.svg?label=GitHub%20Release" alt="GitHub Release"></img>
    </a>
    <a href='https://www.python.org/downloads/'>
      <img src='https://img.shields.io/pypi/pyversions/RPALite'></img>
    </a>
    <a href='https://www.universal-robots.cn'>
      <img src='https://img.shields.io/badge/PolyScope-3.x_&_5.x-71A8CF'></img>
    </a>
    <a href="https://gitee.com/nonead/Nonead-Universal-Robots-MCP/wikis/pages">
      <img src="https://img.shields.io/badge/User%20Guide-1e8b93?logo=readthedocs&logoColor=f5f5f5" alt="User Guide"></img>
    </a>
    <a href="./LICENSE">
      <img height="20" src="https://img.shields.io/badge/License-User_Segmented_Dual_Licensing-blue" alt="license"></img>
    </a>    
    <a href="https://gitee.com/nonead/Nonead-Universal-Robots-MCP">
      <img height="20" src="https://gitee.com/nonead/Nonead-Universal-Robots-MCP/badge/fork.svg?theme=dark" alt="Gitee Forks"></img>
    </a>
    <a href="https://gitee.com/nonead/Nonead-Universal-Robots-MCP">
      <img height="20" src="https://gitee.com/nonead/Nonead-Universal-Robots-MCP/badge/star.svg?theme=dark" alt="Gitee Stars"></img>
    </a>
    <a href="https://github.com/nonead/Nonead-Universal-Robots-MCP">
      <img src="https://img.shields.io/github/forks/nonead/Nonead-Universal-Robots-MCP?label=Forks&style=flat-square" alt="Github Forks"></img>
    </a>
    <a href='https://github.com/nonead/Nonead-Universal-Robots-MCP'>
      <img src="https://img.shields.io/github/stars/nonead/Nonead-Universal-Robots-MCP.svg?style=flat-square&label=Stars&logo=github" alt="Github Stars"/></img>
    </a>
</p>



## 1. MCP คืออะไร?
MCP (โปรโตคอลบริบทแบบจำลอง) คือโปรโตคอลสื่อสารที่พัฒนาโดย Anthropic (เปิดตัวเป็นโอเพนซอร์สพฤศจิกายน 2024) ช่วยให้โมเดลภาษาใหญ่ (เช่น DeepSeek-V3-0324, DeepSeek-R1, Qwen3) เข้าถึงข้อมูล/เครื่องมือ/บริการภายนอกได้อย่างมีประสิทธิภาพ

ความสามารถหลัก:

การให้บริบท:
ส่งไฟล์/ข้อมูลฐานข้อมูลเสริม
ตัวอย่าง: วิเคราะห์รายงานก่อนตอบคำถาม

การเชื่อมต่อเครื่องมือ:
ควบคุมระบบท้องถิ่น/ระยะไกลโดยตรง
ตัวอย่าง: จัดระเบียบเอกสารอัตโนมัติ

สร้างเวิร์กโฟลว์อัจฉริยะ:
รวมบริการ MCP หลายรายการ

ความปลอดภัยข้อมูล:
ทำงานในสภาพแวดล้อมท้องถิ่น

## 2. วิธีการทำงาน
สถาปัตยกรรมไคลเอนต์-เซิร์ฟเวอร์:

ไคลเอนต์ MCP: แอปพลิเคชัน AI (ส่งคำขอ)
เซิร์ฟเวอร์ MCP: ให้อินเทอร์เฟซข้อมูล
การสื่อสาร: ใช้มาตรฐาน JSON-RPC 2.0

## 3. หน้าที่หลักของเซิร์ฟเวอร์
การเข้าถึงข้อมูล:
ไฟล์/ฐานข้อมูล/หน่วยความจำ
การดำเนินการ:
ฟังก์ชันที่กำหนดไว้ (เช่น คิวรี SQL)
การแจ้งเตือนแบบไดนามิก:
อัปเดตข้อมูลแบบเรียลไทม์
การจัดการเซสชัน:
ดูแลการเชื่อมต่อ

## 2. ฟังก์ชันหลักของเซิร์ฟเวอร์ nUR MCP  

คำอธิบายทางเทคนิคของผลิตภัณฑ์ nUR_MCP_SERVER ที่พัฒนาโดย Nonead Corporation

ภาพรวมผลิตภัณฑ์:
nUR_MCP_SERVER เป็นระบบซอฟต์แวร์ตัวกลางสำหรับควบคุมหุ่นยนต์อัจฉริยะที่สร้างขึ้นบนโปรโตคอลอินเทอร์เฟซ MCP (Model Control Protocol) โดยการรวมโมเดลภาษาขนาดใหญ่ (LLM) เพื่อควบคุมหุ่นยนต์อุตสาหกรรมผ่านการโต้ตอบด้วยภาษาธรรมชาติ ผลิตภัณฑ์นี้ใช้การออกแบบโครงสร้างแบบ Client-Server และสนับสนุนการรวมเข้ากับหุ่นยนต์ร่วม Universal Robots ทุกซีรี่ส์ได้อย่างลึกซึ้ง ปฏิวัติกระบวนทัศน์การควบคุมหุ่นยนต์อุตสาหกรรมแบบเดิมที่ใช้การเขียนโปรแกรมผ่าน teach pendant

โครงสร้างเทคโนโลยีหลัก:
1. เครื่องมือวิเคราะห์ความหมาย
โมดูลประมวลผล NLP ที่ใช้โครงสร้าง Transformer หลายชั้น สนับสนุนการวิเคราะห์คำสั่งแบบรับรู้บริบท (Contextual Command Parsing) สามารถแปลงภาษาธรรมชาติเป็นคำสั่งควบคุมหุ่นยนต์แบบ end-to-end ด้วยความแม่นยำในการจดจำคำสั่งถึง 98.6%

2. ระบบสร้างสคริปต์แบบไดนามิก
เฟรมเวิร์กการสร้างโค้ดที่ใช้ LLM สามารถแปลงคำสั่งภาษาธรรมชาติเป็นสคริปต์ควบคุมหุ่นยนต์ URScript โดยอัตโนมัติ สนับสนุนการตรวจสอบไวยากรณ์และการตรวจสอบความปลอดภัยแบบเรียลไทม์ มีประสิทธิภาพในการสร้างสูงกว่าการเขียนโปรแกรมแบบเดิมถึง 12 เท่า

3. อินเทอร์เฟซควบคุมแบบมัลติโมดัล
- ชั้นขยายโปรโตคอล MCP: สนับสนุนการสื่อสารแบบ TCP/UDP คู่ ให้การตอบสนองคำสั่งระดับไมโครวินาที
- ชั้นอุปนามอุปกรณ์: ทำให้สามารถเชื่อมต่อปลั๊กอิน URCap ตามมาตรฐาน
- Data Bus: ใช้โปรโตคอล TCP/IP Ethernet เพื่อควบคุมหลายเครื่องร่วมกัน

คุณสมบัติหลัก:
▶ การควบคุมทันทีด้วยภาษาธรรมชาติ
ควบคุมการเคลื่อนไหวของหุ่นยนต์โดยตรงผ่านคำสั่งเสียง/ข้อความ (การควบคุมตำแหน่ง, การวางแผนวิถี, การดำเนินการ I/O) สนับสนุนการฉีดพารามิเตอร์แบบไดนามิกและการแก้ไขการเคลื่อนไหวแบบเรียลไทม์

▶ ระบบรวบรวมข้อมูลอัจฉริยะ
- รวบรวมข้อมูลสถานะ 12 มิติ เช่น แรงบิดข้อต่อ, ตำแหน่งปลายแขน แบบเรียลไทม์
- สนับสนุนกฎการกรองข้อมูลที่กำหนดด้วยภาษาธรรมชาติ
- สร้างรายงานข้อมูลที่มีโครงสร้างโดยอัตโนมัติ (CSV/JSON/XLSX)

▶ การควบคุมหลายเครื่องร่วมกัน
ใช้อัลกอริทึมการจัดตารางงานแบบกระจาย ร่วมกับ MCP-Client ที่พัฒนาโดย Tord สามารถจัดการคลัสเตอร์หุ่นยนต์ UR ได้พร้อมกัน ≤12 ตัว สนับสนุนคำสั่งเสียงแบบต่อเนื่องและการจัดงานข้ามอุปกรณ์

▶ โมดูลการเรียนรู้แบบปรับตัว
มีเฟรมเวิร์กการฝึกแบบเพิ่มปริมาณในตัว ปรับปรุงความสัมพันธ์ระหว่างคำสั่ง-การกระทำอย่างต่อเนื่องผ่านผลตอบรับจากผู้ใช้ วงจรการเรียนรู้ของระบบ ≤24 ชั่วโมง

ข้อมูลจำเพาะทางเทคนิค:
- ความล่าช้าในการตอบสนองคำสั่ง: <200ms (end-to-end)
- ความเข้ากันได้ของโปรโตคอล: MCP v2.1+ / URScript v5.0+
- ความสามารถในการประมวลผลพร้อมกัน: 200+ TPS

**ตารางจำแนกฟังก์ชันของเครื่องมือ nUR_MCP_SERVER:**  

| รหัสเครื่องมือ | หมวดหมู่ฟังก์ชัน | คำอธิบายฟังก์ชัน | พารามิเตอร์หลัก |
|--------|----------|----------|----------|
| fkUCFg7YmxSflgfmJawHeo (`connect_ur`) | การจัดการการเชื่อมต่อ | เชื่อมต่อหุ่นยนต์ UR | ip:IP หุ่นยนต์ |
| fcr4pIqoIXyxh3ko9FOsWU (`disconnect_ur`) | การจัดการการเชื่อมต่อ | ตัดการเชื่อมต่อหุ่นยนต์ UR | ip:IP หุ่นยนต์ |
| fNKAydKkxHwmGFgyrePBsN (`get_time`) | การตรวจสอบสถานะ | รับเวลาการทำงาน (วินาที) | ip:IP หุ่นยนต์ |
| fYTMsGvSRpUdWmURng7kGX (`get_output_int_register`) | การทำงานกับรีจิสเตอร์ | รับค่าส่งออกรีจิสเตอร์ Int (0-23) | ip:IP หุ่นยนต์, index:ดัชนีรีจิสเตอร์ |
| fvfqDMdDJer6kpbCzwFL1D (`get_output_double_register`) | การทำงานกับรีจิสเตอร์ | รับค่าส่งออกรีจิสเตอร์ Double (0-23) | ip:IP หุ่นยนต์, index:ดัชนีรีจิสเตอร์ |
| fCJ6sRw9m0ArdZ-MCaeNWK (`get_output_bit_register`) | การทำงานกับรีจิสเตอร์ | รับค่าส่งออกรีจิสเตอร์ Double (0-31) | ip:IP หุ่นยนต์, index:ดัชนีรีจิสเตอร์ |
| f_ZXAIUv-eqHelwWxrzDHe (`get_serial_number`) | ข้อมูลอุปกรณ์ | รับหมายเลขซีเรียล | ip:IP หุ่นยนต์ |
| fZ2ALt5kD50gV9AdEgBrRO (`get_robot_model`) | ข้อมูลอุปกรณ์ | รับรุ่น | ip:IP หุ่นยนต์ |
| fEtHcw5RNF54X9RYIEU-1m (`get_actual_tcp_pose`) | การควบคุมการเคลื่อนไหว | รับพิกัด TCP แบบเรียลไทม์ | ip:IP หุ่นยนต์ |
| ftsb2AsiqiPqSBxHIwALOx (`get_actual_joint_pose`) | การควบคุมการเคลื่อนไหว | รับมุมข้อต่อแบบเรียลไทม์ | ip:IP หุ่นยนต์ |
| fXmkr4PLkHKF0wgQGEHzLt (`movej`) | การควบคุมการเคลื่อนไหว | ส่งคำสั่งท่าทางข้อต่อ | ip:IP หุ่นยนต์, q:มุมข้อต่อ(เรเดียน) |
| fWdukQrgFZeK-DEcST4AwO (`movel`) | การควบคุมการเคลื่อนไหว | ส่งคำสั่งเคลื่อนที่แบบเส้นตรง TCP | ip:IP หุ่นยนต์, pose:ตำแหน่ง TCP |
| f2gbgju7QsymJa4wPgZQ0T (`movel_x`) | การควบคุมการเคลื่อนไหว | การเคลื่อนที่แบบเส้นตรงแกน X | ip:IP หุ่นยนต์, distance:ระยะทาง(เมตร) |
| fS6rCxVp498s5edU7jCMB3 (`movel_y`) | การควบคุมการเคลื่อนไหว | การเคลื่อนที่แบบเส้นตรงแกน Y | ip:IP หุ่นยนต์, distance:ระยะทาง(เมตร) |
| fJps7j-T3lwzXhp8p0_suy (`movel_z`) | การควบคุมการเคลื่อนไหว | การเคลื่อนที่แบบเส้นตรงแกน Z | ip:IP หุ่นยนต์, distance:ระยะทาง(เมตร) |
| fTMj5413O5CzsORAyBYXj8 (`load_program`) | การควบคุมโปรแกรม | โหลดโปรแกรม UR | ip:IP หุ่นยนต์, program_name:ชื่อโปรแกรม |
| fqiYJ1c9fqCs5eYd-yKEeJ (`load_and_run_program`) | การควบคุมโปรแกรม | โหลดและรันโปรแกรม UR | ip:IP หุ่นยนต์, program_name:ชื่อโปรแกรม |
| fW6-wrPoqm2bE3bMgtLbLP (`stop_program`) | การควบคุมโปรแกรม | หยุดโปรแกรมปัจจุบัน | ip:IP หุ่นยนต์ |
| fsEmm-VX3CCY_XvnCDms7f (`pause_program`) | การควบคุมโปรแกรม | หยุดโปรแกรมปัจจุบันชั่วคราว | ip:IP หุ่นยนต์ |
| f83-fUQBd-YRSdIQDpuYmW (`get_actual_robot_voltage`) | การตรวจสอบสถานะ | รับแรงดันไฟฟ้าปัจจุบัน | ip:IP หุ่นยนต์ |
| foMoD2L690vRdQxdW_gRNl (`get_actual_robot_current`) | การตรวจสอบสถานะ | รับกระแสไฟฟ้าปัจจุบัน | ip:IP หุ่นยนต์ |
| fDZBXqofuIb-7IjS6t2YJ2 (`get_actual_joint_voltage`) | การตรวจสอบสถานะ | รับแรงดันไฟฟ้าข้อต่อ | ip:IP หุ่นยนต์ |
| fgAa_kwSmXmvld6Alx39ij (`get_actual_joint_current`) | การตรวจสอบสถานะ | รับกระแสไฟฟ้าข้อต่อ | ip:IP หุ่นยนต์ |
| furAKHVnYvORJ9R7N7vpbl (`get_joint_temperatures`) | การตรวจสอบสถานะ | รับอุณหภูมิข้อต่อ | ip:IP หุ่นยนต์ |
| fuNb7TgOgWNukjAVjusMN4 (`get_robot_mode`) | การตรวจสอบสถานะ | รับสถานะการทำงาน | ip:IP หุ่นยนต์ |
| fD12XJtqjgI46Oufwt928c (`get_program_state`) | การตรวจสอบสถานะ | รับสถานะการทำงานโปรแกรม | ip:IP หุ่นยนต์ |
| fMLa2mjlactTbD_CCKB1tX (`get_ur_software_version`) | ข้อมูลอุปกรณ์ | รับเวอร์ชันซอฟต์แวร์ | ip:IP หุ่นยนต์ |
| fWXQKGQ6J5mas9K9mGPK3x (`get_safety_mode`) | ข้อมูลอุปกรณ์ | รับโหมดความปลอดภัย | ip:IP หุ่นยนต์ |
| f81vKugz9xnncjirTC3B6A (`get_programs`) | การควบคุมโปรแกรม | รับรายการโปรแกรม | ip:IP หุ่นยนต์, username/password:ข้อมูลรับรอง SSH |
| ffaaQZeknwwTISLYdYqM0_ (`send_program_script`) | การควบคุมโปรแกรม | ส่งสคริปต์โปรแกรม | ip:IP หุ่นยนต์, script:เนื้อหาสคริปต์ |
| fsWlT3tCOn1ub-kUZCrq7E (`draw_circle`) | การควบคุมการเคลื่อนไหว | การเคลื่อนที่แบบวงกลม | ip:IP หุ่นยนต์, center:ตำแหน่ง TCP ศูนย์กลาง, r:รัศมี(เมตร) |
| f7y1QpjnA9s1bzfLeOkTnS (`draw_square`) | การควบคุมการเคลื่อนไหว | วาดสี่เหลี่ยมจัตุรัส | ip:IP หุ่นยนต์, origin:ตำแหน่ง TCP เริ่มต้น, border:ความยาวด้าน(เมตร) |
| fuN_LLSc22VKXWXwbwNARo (`draw_rectangle`) | การควบคุมการเคลื่อนไหว | วาดสี่เหลี่ยมผืนผ้า | ip:IP หุ่นยนต์, origin:ตำแหน่ง TCP เริ่มต้น, width/height:ความกว้าง/ความสูง(เมตร) |

หมายเหตุ: เครื่องมือทั้งหมดต้องเชื่อมต่อกับหุ่นยนต์ก่อนจึงจะใช้งานได้

## 3. ข้อปฏิเสธความรับผิดชอบ

ก่อนใช้ nUR MCP Server ต้องตรวจสอบว่าผู้ปฏิบัติงานผ่านการอบรมความปลอดภัยหุ่นยนต์ UR และรู้จักการใช้ปุ่มหยุดฉุกเฉิน (E-stop)

ตรวจสอบสภาพหุ่นยนต์และเซิร์ฟเวอร์อย่างสม่ำเสมอเพื่อความปลอดภัย

ข้อกำหนดความปลอดภัยที่ต้องปฏิบัติตาม:

การมองเห็นหุ่นยนต์

ผู้ควบคุมต้องมองเห็นหุ่นยนต์ Universal Robots ตลอดเวลาเพื่อตรวจสอบสถานะ

ห้ามออกจากพื้นที่ขณะหุ่นยนต์ทำงาน

สภาพแวดล้อมปลอดภัย

ล้างสิ่งกีดขวางและตรวจสอบให้แน่ใจว่าไม่มีบุคคล/วัตถุในเขตอันตราย

ติดตั้งรั้วกายภาพหรือม่านแสงความปลอดภัยหากจำเป็น

การละเมิดกฎความปลอดภัย

หากเกิดความเสียหายจากความไม่ปฏิบัติตาม (เช่น ไม่เฝ้าดู ไม่เคลียร์พื้นที่) ทางเราไม่รับผิดชอบ

ความเสี่ยงทั้งหมดเป็นของผู้ใช้งาน

## 4. การเผยแพร่เวอร์ชัน

### 4.1 อัปเดตล่าสุด

* 2025.05.15 : เปิดตัว nUR_MCP_SERVER เป็นครั้งแรก

### 4.2 แผนในอนาคต

* พัฒนา MCP Client เฉพาะสำหรับ nUR MCP Server เพื่อเพิ่มความปลอดภัยของแอคชูเอเตอร์
* เพิ่มการบันทึก Log ของหุ่นยนต์ UR
* การสำรองข้อมูลและอัปโหลดโปรแกรมหุ่นยนต์ UR

## 5. เริ่มต้นใช้งานอย่างรวดเร็ว

### 5.1 สำหรับผู้ใช้ทั่วไป

#### 5.1.1 ข้อกำหนดระบบ

* **รุ่นระบบปฏิบัติการที่แนะนำ:**

  ```text
  macOS: macOS Monterey 12.6 หรือใหม่กว่า
  Linux: CentOS 7 / Ubuntu 20.04 หรือใหม่กว่า
  Windows: Windows 10 LTSC 2021 หรือใหม่กว่า
  ```

* **ข้อกำหนดซอฟต์แวร์:**

  สภาพแวดล้อมเซิร์ฟเวอร์ MCP

  ```text
  Python 3.11 หรือใหม่กว่า     
  pip 25.1 หรือใหม่กว่า
  UV Package Manager 0.6.14 หรือใหม่กว่า  
  bun 1.2.8 หรือใหม่กว่า
  ```

  ไคลเอนต์ MCP

  ```text
   Claude Desktop 3.7.0 หรือใหม่กว่า
   Cherry Studio 1.2.10 หรือใหม่กว่า
   Cline 3.14.1 หรือใหม่กว่า

   ClaudeMind, Cursor, NextChat, ChatMCP, Copilot-MCP, Continue, Dolphin-MCP, Goose ยังไม่ผ่านการทดสอบ
  ```

   LLM โมเดลภาษาขนาดใหญ่

  ```text
  DeepSeek-V3-0324 หรือใหม่กว่า
  DeepSeek-R1-671b หรือใหม่กว่า 
  Qwen3-235b-a22b หรือใหม่กว่า
  
  โดยทั่วไปโมเดลภาษาที่รองรับ MCP สามารถใช้งานได้ โมเดลนอกเหนือจากรายการยังไม่ผ่านการทดสอบ
  โมเดลที่ใช้งานผ่าน Ollama ยังไม่สามารถเรียกใช้ Tool ได้ กำลังแก้ไขปัญหา...
  ```

#### 5.1.2 การติดตั้ง

**การติดตั้งเซิร์ฟเวอร์ MCP:**
1. ติดตั้ง Python 3.11 หรือใหม่กว่า
2. ติดตั้ง pip 25.1 หรือใหม่กว่า
3. ติดตั้ง UV Package Manager 0.6.14 หรือใหม่กว่า
4. ติดตั้ง bun 1.2.8 หรือใหม่กว่า
5. ติดตั้ง MCP Server:
```
     git clone https://gitee.com/nonead/Nonead-Universal-Robots-MCP.git
     cd nUR_MCP_SERVER
     pip install -r requirements.txt
```

**การกำหนดค่าไคลเอนต์ MCP:**

**สำหรับใช้งานกับ Claude Desktop ให้เพิ่มการกำหนดค่าเซิร์ฟเวอร์:**
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json  

    {
      "mcpServers": {
        "nUR_MCP_SERVER": {
          "command": "uvx",
          "args": ["/home/nonead/MCP_Server/Nonead-Universal-Robots-MCP"]
        }
      }
    }

Windows: %APPDATA%/Claude/claude_desktop_config.json  

    {
      "mcpServers": {
        "nUR_MCP_SERVER": {
          "command": "uvx",
          "args": ["D:\\MyProgram\\MCP_SERVER\\Nonead-Universal-Robots-MCP"]
        }
      }
    }

**สำหรับใช้งานกับ Cherry Studio ให้เพิ่มการกำหนดค่าเซิร์ฟเวอร์:**

**สำหรับ macOS & Linux:**  
```
{
  "mcpServers": {
    "nUR_MCP_SERVER": {
      "name": "nUR_MCP_Server",
      "type": "stdio",
      "description": "NONEAD Universal-Robots MCP Server",
      "isActive": true,
      "provider": "NONEAD Corporation",
      "providerUrl": "https://www.nonead.com",
      "logoUrl": "https://www.nonead.com/assets/img/vi/5.png",
      "tags": [
        "NONEAD",
        "nUR_MCP_Server",
        "Universal-Robots"
      ],
      "command": "uvx",
      "args": [
        "/home/nonead/MCP_Server/Nonead-Universal-Robots-MCP"
      ]
    }
  }
}
```

**สำหรับ Windows:**  
```
{
  "mcpServers": {
    "nUR_MCP_SERVER": {
      "name": "nUR_MCP_Server",
      "type": "stdio",
      "description": "NONEAD Universal-Robots MCP Server",
      "isActive": true,
      "provider": "NONEAD Corporation",
      "providerUrl": "https://www.nonead.com",
      "logoUrl": "https://www.nonead.com/assets/img/vi/5.png",
      "tags": [
        "NONEAD",
        "nUR_MCP_Server",
        "Universal-Robots"
      ],
      "command": "uvx",
      "args": [
        "D:\\MyProgram\\MCP_SERVER\\Nonead-Universal-Robots-MCP"
      ]
    }
  }
}
```

**เพื่อใช้งานร่วมกับ Cline ให้เพิ่มการกำหนดค่าเซิร์ฟเวอร์:**
MacOS & Linux:

    {
      "mcpServers": {
        "nUR_MCP_SERVER": {
            "command": "uvx",
            "args": ["/home/nonead/MCP_Server/Nonead-Universal-Robots-MCP"]
         }
      }
    }

Windows:

    {
      "mcpServers": {
        "nUR_MCP_SERVER": {
            "command": "uvx",
            "args": ["D:\\MyProgram\\MCP_SERVER\\Nonead-Universal-Robots-MCP"]
         }
      }
    }


### 5.2 ใช้ชุดเครื่องมือ (สำหรับนักพัฒนา)

#### 5.2.1 เครื่องมือและส่วนประกอบ 

* **รุ่นระบบที่แนะนำ:**

  ```text
  ผู้ใช้ macOS: macOS Monterey 12.6 หรือใหม่กว่า
  ผู้ใช้ Linux: CentOS 7 / Ubuntu 20.04 หรือใหม่กว่า
  ผู้ใช้ Windows: Windows 10 LTSC 2021 หรือใหม่กว่า
  ```

* **ความต้องการด้านซอฟต์แวร์:**

  สภาพแวดล้อมเซิร์ฟเวอร์ MCP

  ```text
  Python 3.11 หรือใหม่กว่า     
  pip 25.1 หรือใหม่กว่า
  UV Package Manager 0.6.14 หรือใหม่กว่า  
  bun 1.2.8 หรือใหม่กว่า
  ```
  แบบจำลองภาษาขนาดใหญ่ LLM

  ```text
  DeepSeek-V3-0324 หรือใหม่กว่า
  DeepSeek-R1-671b หรือใหม่กว่า 
  Qwen3-235b-a22b หรือใหม่กว่า
  
  โดยทั่วไปแบบจำลองภาษาขนาดใหญ่ที่รองรับ MCP สามารถใช้งานได้ แบบจำลองที่ไม่ได้ระบุไว้ยังไม่ได้รับการทดสอบ
  แบบจำลองที่ติดตั้งผ่าน Ollama ปัจจุบันไม่สามารถเรียกใช้เครื่องมือได้ กำลังแก้ไข...
  ```

#### 5.2.2 การติดตั้ง

**สำหรับนักพัฒนา macOS/Linux/Windows**

```text
Python 3.11 หรือใหม่กว่า
pip 25.1 หรือใหม่กว่า
ตัวจัดการแพ็คเกจ UV 0.6.14 หรือใหม่กว่า
bun 1.2.8 หรือใหม่กว่า
```

#### 5.2.3 การใช้งาน

ตัวอย่างงานที่โมเดลภาษาขนาดใหญ่สามารถดำเนินการได้:

* เชื่อมต่อหุ่นยนต์ Universal IP: 192.168.1.199  
* รับพิกัดท่าปัจจุบันของ TCP end effector  
* แสดงรายการคำสั่งทั้งหมดของเครื่องมือ nUR_MCP_SERVER  
* ดึงข้อมูลฮาร์ดแวร์ทั้งหมดของหุ่นยนต์ Universal  
* ประมวลผลสคริปต์โปรแกรมของหุ่นยนต์  
* เรียกใช้โปรแกรมในตัว XXXX.urp  
* กำหนดหุ่นยนต์ IP 172.22.109.141 เป็น A และ IP 172.22.98.41 เป็น B เชื่อมต่อทั้งคู่ บันทึกท่า TCP และตำแหน่งหลักของ A (ซ้าย) และ B (ขวา) วิเคราะห์ความสัมพันธ์ระหว่างท่า  
* ดำเนินการเป็นขั้นตอน: หุ่นยนต์ Universal IP 192.168.1.199 บันทึกท่า TCP ปัจจุบัน แล้วเคลื่อน TCP +20mm ในแกน Z, -50mm ในแกน Y, +30mm ในแกน X ทำซ้ำ 5 ครั้ง  
* เขียนและดำเนินการสคริปต์หุ่นยนต์: วาดวงกลมรัศมี 50mm ในระนาบฐานโดยมีท่าปัจจุบันเป็นศูนย์กลาง  
* กำหนดหุ่นยนต์ IP 172.22.109.141 เป็น A และ 172.22.98.41 เป็น B เชื่อมต่อ คำสั่งต่อๆ ไปจะควบคุมเฉพาะ A พร้อมซิงค์การเคลื่อนไหวกระจกของ B  

## 6. โครงสร้างทางเทคนิค  

MCP ใช้โครงสร้างแบบ client-server ด้วยโปรโตคอลมาตรฐานสำหรับการสื่อสารระหว่างโมเดลกับทรัพยากรภายนอก  
![alt](./images/MCP.svg "mcp")  
โมเดล Client-Server  
องค์ประกอบหลัก:  

โฮสต์ MCP: แอปพลิเคชัน LLM (เช่น Claude Desktop) ที่เริ่มการเชื่อมต่อ  
ไคลเอนต์ MCP: โปรโตคอลไคลเอนต์ที่รักษาการเชื่อมต่อ 1:1 กับเซิร์ฟเวอร์  
เซิร์ฟเวอร์ MCP: โปรแกรมน้ำหนักเบาที่เปิดเผยฟังก์ชันผ่าน Model Context Protocol มาตรฐาน  
แหล่งข้อมูลท้องถิ่น: ไฟล์/ฐานข้อมูล/บริการที่เซิร์ฟเวอร์เข้าถึงได้อย่างปลอดภัย  
บริการระยะไกล: ระบบภายนอกที่เข้าถึงได้ผ่านอินเทอร์เน็ต (เช่น APIs)  
ความรับผิดชอบ:  

โฮสต์ MCP:  
ให้ส่วนติดต่อผู้ใช้  
จัดการการเชื่อมต่อกับผู้ให้บริการ LLM  
รวมไคลเอนต์ MCP สำหรับการเข้าถึงทรัพยากรภายนอก  
ไคลเอนต์ MCP:  
สร้าง/รักษาการเชื่อมต่อเซิร์ฟเวอร์ MCP  
ส่งคำขอและรับการตอบกลับ  
จัดการการแลกเปลี่ยนข้อมูลตามมาตรฐาน MCP  
เซิร์ฟเวอร์ MCP:  
ประมวลผลคำขอจากไคลเอนต์  
ดำเนินการฟังก์ชันเฉพาะหรือให้เข้าถึงทรัพยากร  
จัดรูปแบบการตอบกลับตามมาตรฐานโปรโตคอล MCP  
โปรโตคอลการสื่อสาร  
MCP ใช้ JSON-RPC 2.0 เป็นโปรโตคอลพื้นฐาน สนับสนุน:  
![alt](./images/p.svg "mcp_json-RPC2.0")  
คำขอ: ข้อความที่เริ่มการดำเนินการจากไคลเอนต์→เซิร์ฟเวอร์ หรือในทางกลับกัน  
การตอบกลับ: การตอบสนองต่อคำขอที่มีผลลัพธ์หรือข้อมูลข้อผิดพลาด  
การแจ้งเตือน: ข้อความทางเดียวที่ไม่ต้องการการตอบกลับ (มักใช้สำหรับการแจ้งเหตุการณ์)  
กลไกการขนส่งที่สนับสนุน:  

มาตรฐาน I/O (Stdio): สำหรับเซิร์ฟเวอร์ท้องถิ่นผ่านการสื่อสารระหว่างกระบวนการ  
Server-Sent Events (SSE): กลไกการขนส่งแบบ HTTP สำหรับเซิร์ฟเวอร์ระยะไกล  

ข้อได้เปรียบของ MCP  
MCP เหนือกว่าวิธีการแบบเดิมในด้านความเป็นหนึ่งเดียว ความปลอดภัย และความสามารถในการขยาย  

ความเป็นหนึ่งเดียว  
การโต้ตอบที่เป็นมาตรฐานแก้ปัญหาการแบ่งส่วน:  

การเข้าถึงแบบปลั๊กอิน: โปรโตคอลรวมศูนย์สำหรับแหล่งข้อมูลที่หลากหลาย  
ความเข้ากันได้ข้ามแพลตฟอร์ม: รองรับโมเดล/แพลตฟอร์ม AI ที่แตกต่างกัน  
การพัฒนาที่ง่ายขึ้น: มุ่งเน้นที่ตรรกะทางธุรกิจ  
ความปลอดภัย  
กลไกความปลอดภัยในตัวปกป้องข้อมูล:  

การปกป้องข้อมูลสำคัญ: คีย์ API/ข้อมูลผู้ใช้ ฯลฯ  
การควบคุมการเข้าถึง: เซิร์ฟเวอร์ MCP เปิดใช้งานข้อจำกัดการเข้าถึงแบบละเอียด  
การประมวลผลในท้องถิ่น: หลีกเลี่ยงการอัปโหลดข้อมูลสำคัญไปยังบุคคลที่สาม  
ความสามารถในการขยาย  
การออกแบบแบบโมดูลาร์ช่วยให้ขยายได้สูง:  

การเชื่อมต่อหลายบริการ: บริการหลายรายการสามารถเชื่อมต่อกับไคลเอนต์ที่เข้ากันได้  
การขยายระบบนิเวศ: ห้องสมุดของส่วนประกอบที่สร้างไว้ล่วงหน้าเพิ่มขึ้น  
ความสามารถในการปรับแต่ง: การพัฒนาเซิร์ฟเวอร์ MCP ที่กำหนดเอง  
## 7. ติดต่อเรา

**GitHub**: <https://github.com/nonead/Nonead-Universal-Robots-MCP>  
**gitee**: <https://gitee.com/nonead/Nonead-Universal-Robots-MCP>  
**เว็บไซต์ทางการ**: <https://www.nonead.com>  

<img src="./images/QR.gif" alt="ติดต่อ: Nonead Tech WeChat" width="200">  

## 8. ความแตกต่างระหว่าง nUR MCP Server กับเซิร์ฟเวอร์ MCP อื่นๆ

ผู้ใช้ nUR MCP Server ต้องมีความตระหนักด้านความปลอดภัยสูงมากและต้องผ่านการฝึกอบรมการใช้งานหุ่นยนต์ Universal Robots เนื่องจากโมเดลภาษาขนาดใหญ่ควบคุมหุ่นยนต์จริง การใช้งานที่ไม่เหมาะสมอาจทำให้เกิดการบาดเจ็บและความเสียหายต่อทรัพย์สิน - โปรดใช้ความระมัดระวังสูงสุด

## 9. การอ้างอิง

หากคุณใช้ซอฟต์แวร์นี้ โปรดอ้างอิงดังนี้:

* [nURMCP: NONEAD Universal-Robots Model Context Protocol Server](https://www.nonead.com)
* Nonead สาธิตความหมายที่แท้จริงของการผลิตอัจฉริยะ นำนวัตกรรมที่เปลี่ยนแปลงโลกของเรา

## 10. ใบอนุญาต

โครงการนี้ใช้รูปแบบการอนุญาตแบบคู่ที่แบ่งตามผู้ใช้ (User-Segmented Dual Licensing)

**หลักการพื้นฐาน**
* ผู้ใช้ส่วนบุคคลและองค์กร/องค์กรที่มีไม่เกิน 10 คน: ใช้ GNU Affero General Public License v3.0 (AGPLv3) โดยปริยาย
* องค์กรที่มีมากกว่า 10 คน: ต้องได้รับใบอนุญาตเชิงพาณิชย์ (Commercial License)

คำจำกัดความของ "ไม่เกิน 10 คน":
หมายถึงจำนวนบุคคลทั้งหมดในองค์กรของคุณ (รวมถึงบริษัท องค์กรไม่แสวงหาผลกำไร หน่วยงานรัฐบาล สถาบันการศึกษา หรือองค์กรใดๆ) ที่สามารถเข้าถึง ใช้ หรือได้รับประโยชน์จากซอฟต์แวร์นี้ (nUR_MCP_SERVER) ไม่ว่าโดยทางตรงหรือทางอ้อม ไม่เกิน 10 คน ซึ่งรวมถึงแต่ไม่จำกัดเพียงนักพัฒนา ผู้ทดสอบ ผู้ปฏิบัติงาน ผู้ใช้ปลายทาง ผู้ใช้ผ่านระบบที่บูรณาการ เป็นต้น

### 10.1 ใบอนุญาตโอเพนซอร์ส (Open Source License): AGPLv3 - สำหรับผู้ใช้ส่วนบุคคลและองค์กรไม่เกิน 10 คน
* หากคุณเป็นผู้ใช้ส่วนบุคคล หรือองค์กรของคุณตรงตามคำจำกัดความ "ไม่เกิน 10 คน" ข้างต้น คุณสามารถใช้ แก้ไข และแจกจ่าย nUR_MCP_SERVER ภายใต้เงื่อนไขของ AGPLv3 ได้อย่างอิสระ ข้อความเต็มของ AGPLv3 สามารถดูได้ที่ https://www.gnu.org/licenses/agpl-3.0.html
* **ข้อผูกพันหลัก:** ข้อกำหนดสำคัญของ AGPLv3 คือ หากคุณแก้ไข nUR_MCP_Server และให้บริการผ่านเครือข่าย หรือแจกจ่ายเวอร์ชันที่แก้ไขแล้ว คุณต้องให้ซอร์สโค้ดที่สมบูรณ์แก่ผู้รับภายใต้สัญญาอนุญาต AGPLv3 แม้ว่าคุณจะตรงตามเกณฑ์ "ไม่เกิน 10 คน" หากคุณต้องการหลีกเลี่ยงข้อผูกพันในการเปิดเผยซอร์สโค้ดนี้ คุณต้องพิจารณาได้รับใบอนุญาตเชิงพาณิชย์ (ดูด้านล่าง)
* โปรดอ่านและทำความเข้าใจข้อกำหนดทั้งหมดของ AGPLv3 ให้ละเอียดก่อนใช้งาน

### 10.2 ใบอนุญาตเชิงพาณิชย์ (Commercial License) - สำหรับองค์กรที่มีมากกว่า 10 คน หรือผู้ใช้ที่ต้องการหลีกเลี่ยงข้อผูกพันของ AGPLv3
* **ข้อบังคับ:** หากองค์กรของคุณ**ไม่**ตรงตามคำจำกัดความ "ไม่เกิน 10 คน" ข้างต้น (หมายความว่ามี 11 คนหรือมากกว่าที่สามารถเข้าถึง ใช้ หรือได้รับประโยชน์จากซอฟต์แวร์นี้) คุณ**ต้อง**ติดต่อเราเพื่อรับและลงนามในใบอนุญาตเชิงพาณิชย์ก่อนจึงจะสามารถใช้ nUR_MCP_SERVER ได้
* **ทางเลือกโดยสมัครใจ:** แม้ว่าองค์กรของคุณจะตรงตามเงื่อนไข "ไม่เกิน 10 คน" แต่หากกรณีการใช้งานของคุณ**ไม่สามารถปฏิบัติตามข้อกำหนดของ AGPLv3** ได้ (โดยเฉพาะข้อผูกพันในการเปิดเผยซอร์สโค้ด) หรือคุณต้องการข้อกำหนดเชิงพาณิชย์**เฉพาะ**ที่ AGPLv3 **ไม่ได้ให้ไว้** (เช่น การรับประกัน การชดเชย การไม่มีข้อจำกัด Copyleft เป็นต้น) คุณก็**ต้อง**ติดต่อเราเพื่อรับและลงนามในใบอนุญาตเชิงพาณิชย์
* **กรณีทั่วไปที่ต้องมีใบอนุญาตเชิงพาณิชย์ (รวมแต่ไม่จำกัดเพียง):**
  * องค์กรของคุณมีขนาดเกิน 10 คน
  * (ไม่ว่าขนาดองค์กร) คุณต้องการแจกจ่ายเวอร์ชัน nUR_MCP_SERVER ที่แก้ไขแล้ว แต่ไม่ต้องการเปิดเผยซอร์สโค้ดส่วนที่คุณแก้ไขตาม AGPLv3
  * (ไม่ว่าขนาดองค์กร) คุณต้องการให้บริการทางเครือข่าย (SaaS) ที่ใช้ nUR_MCP_SERVER ที่แก้ไขแล้ว แต่ไม่ต้องการให้ซอร์สโค้ดที่แก้ไขแก่ผู้ใช้บริการตาม AGPLv3
  * (ไม่ว่าขนาดองค์กร) นโยบายบริษัท สัญญาลูกค้า หรือข้อกำหนดโครงการของคุณไม่อนุญาตให้ใช้ซอฟต์แวร์ที่ได้รับอนุญาตภายใต้ AGPLv3 หรือต้องการการแจกจ่ายแบบปิดและความลับ
* **รับใบอนุญาตเชิงพาณิชย์:** โปรดติดต่อทีมพัฒนาของ nUR_MCP_SERVER ที่ service@nonead.com เพื่อเจรจาเรื่องการอนุญาตเชิงพาณิชย์

### 10.3 การมีส่วนร่วม (Contributions)
* เรายินดีต้อนรับการมีส่วนร่วมจากชุมชนในการพัฒนา nUR_MCP_SERVER การมีส่วนร่วมทั้งหมดที่ส่งมาให้โครงการนี้จะถือว่าได้รับอนุญาตภายใต้สัญญา AGPLv3
* การส่งการมีส่วนร่วมให้กับโครงการนี้ (เช่น ผ่าน Pull Request) หมายความว่าคุณยินยอมให้โค้ดของคุณได้รับอนุญาตภายใต้ AGPLv3 สำหรับโครงการนี้และผู้ใช้ทั้งหมดในอนาคต (ไม่ว่าผู้ใช้เหล่านั้นจะปฏิบัติตาม AGPLv3 หรือใบอนุญาตเชิงพาณิชย์)
* คุณยังเข้าใจและยินยอมว่าการมีส่วนร่วมของคุณอาจถูกรวมไว้ในเวอร์ชัน nUR_MCP_SERVER ที่แจกจ่ายภายใต้ใบอนุญาตเชิงพาณิชย์

### 10.4 ข้อกำหนดอื่นๆ (Other Terms)
* ข้อกำหนดและเงื่อนไขเฉพาะของใบอนุญาตเชิงพาณิชย์จะเป็นไปตามสัญญาอนุญาตเชิงพาณิชย์ที่ทั้งสองฝ่ายลงนาม
* ผู้ดูแลโครงการสงวนสิทธิ์ในการอัปเดตนโยบายการอนุญาตนี้ (รวมถึงคำจำกัดความและเกณฑ์ขนาดผู้ใช้) ตามความจำเป็น การอัปเดตใดๆ จะแจ้งผ่านช่องทางการสื่อสารอย่างเป็นทางการของโครงการ (เช่น ที่เก็บโค้ด เว็บไซต์อย่างเป็นทางการ)


## 11. ทีมพัฒนาหลัก

ทีมพัฒนาเซิร์ฟเวอร์ MCP ของบริษัท Suzhou Nonead Robot Technology Co., Ltd.

**Tony Ke** <tonyke@nonead.com>  
**Micro Zhu** <microzhu@nonead.com>  
**Anthony Zhuang** <anthonyzhuang@nonead.com>  
**Quentin Wang** <quentinwang@nonead.com>
