# MCP แบบอ่านเท่านั้น

Canonical page: https://phishdestroy.github.io/TgWitness/th/docs/reference/mcp/

เชื่อมต่อไคลเอนต์ MCP กับพื้นที่ทำงานและห้องสนทนาที่เลือกไว้ โดยให้สิทธิ์การเข้าถึงที่มีระยะเวลาจำกัดและสามารถเพิกถอนได้

เชื่อมต่อไคลเอนต์ของนักวิเคราะห์เข้ากับเวิร์กสเปซและแชตที่เลือก TgWitness ให้บริการ **Streamable HTTP ที่ `/mcp` ในโปรเซสของพาเนล** การเชื่อมต่อแต่ละรายการจะมี โทเค็น วันหมดอายุ และเครื่องมือที่ได้รับอนุญาตเป็นของตัวเอง MCP ไม่สามารถส่งข้อความ Telegram เปลี่ยน การตั้งค่า หรือแก้ไขบันทึกประจำวัน (journal) ที่ลงนามแล้วได้

[คู่มือขั้นตอนการทำงาน](https://phishdestroy.github.io/TgWitness/docs/archive/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md)

## การติดตั้งและการตรวจสอบ

ใช้สภาพแวดล้อม Python ที่รันพาเนล จากซอร์สโค้ดที่เช็กเอาต์ออกมา:

```
# Windows PowerShell
& .\.venv\Scripts\python.exe -m pip install -c deploy/constraints-mcp.txt -e '.[mcp]'
& .\.venv\Scripts\python.exe start.py --check
```

```
# Linux / macOS
.venv/bin/python -m pip install -c deploy/constraints-mcp.txt -e '.[mcp]'
.venv/bin/python start.py --check
```

รีสตาร์ตพาเนลโดยใช้ไดเรกทอรีข้อมูลและอาร์กิวเมนต์การรันตามปกติหลังจากการติดตั้ง การตรวจสอบความพร้อมควรแสดงผลรวมถึง `[PASS] mcp: streamable-http available` **Integrations → MCP** จะแสดงสถานะรันไทม์และคำสั่งติดตั้งโดยใช้ ไฟล์ปฏิบัติการ Python จริงของเซิร์ฟเวอร์นั้น ปุ่ม **Re-check** จะรีเฟรชสถานะนี้โดยไม่ต้อง โหลดหน้าเว็บใหม่ โดยจะไม่ติดตั้งแพ็กเกจหรือรีสตาร์ตเซิร์ฟเวอร์

ส่วนเสริม MCP ใช้ [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) อย่างเป็นทางการ ไฟล์ `deploy/constraints-mcp.txt` จะล็อกรุ่นของ SDK และดีเพนเดนซีที่ผ่านการทดสอบแล้ว ฟีเจอร์เหล่านี้ ต้องใช้ซอร์สโค้ดปัจจุบัน เนื่องจากรุ่นพรีวิวแบบพกพา 0.7.0 ออกมาก่อนฟีเจอร์เหล่านี้

## ออกการเชื่อมต่อ

1. ป้อนป้ายกำกับและเลือกเวิร์กสเปซและแชตที่อนุญาตให้ไคลเอนต์อ่านได้
2. เลือกเครื่องมือทีละรายการหรือใช้ค่าที่ตั้งไว้ล่วงหน้า มีเฉพาะเครื่องมือที่พัฒนาเสร็จแล้วเท่านั้นให้เลือก
3. เลือกวันหมดอายุ 1, 7, 30 หรือ 90 วัน หรือกำหนดวันหมดอายุเองระหว่าง 1 นาทีถึง 90 วัน
4. กด **Create connection** โทเค็นจะแสดงเพียงครั้งเดียวข้างการกำหนดค่าของไคลเอนต์
5. คัดลอกโทเค็นและการกำหนดค่า จากนั้นรัน **Check connection** ระบบจะเริ่มต้นการทำงานของ MCP และแสดงรายการเครื่องมือที่ได้รับอนุญาต **โดยไม่มีการอ่านข้อความใดๆ** ผลลัพธ์จะแสดงรุ่นของโปรโตคอล ชื่อเครื่องมือ จำนวน และเวลาที่ใช้
6. กด **Done** เมื่อบันทึกข้อมูลรับรองแล้ว การโพลจะรักษาข้อมูลในแบบฟอร์มและ การ์ดที่แสดงเพียงครั้งเดียวไว้ การล็อกพาเนลจะล้างข้อมูลลับที่แสดงอยู่

รายการจะแสดงการใช้งานล่าสุด เครื่องมือล่าสุด ที่อยู่ และจำนวนคำขอในนาทีที่ผ่านมา **Revoke** จะยุติการเข้าถึง **Rotate token** จะเพิกถอนข้อมูลรับรองเดิมและออก โทเค็นใหม่ทดแทนโดยมีขอบเขต เครื่องมือ และวันหมดอายุเหมือนเดิม โปรดคัดลอกโทเค็นทดแทนที่แสดงเพียงครั้งเดียว โทเค็นการเข้าสู่ระบบพาเนลและข้อมูลรับรอง Telegram ไม่สามารถใช้เป็นโทเค็น MCP ได้

## เชื่อมต่อไคลเอนต์ของคุณ

เลือกไคลเอนต์ในพาเนลและคัดลอกการกำหนดค่าที่สร้างขึ้น การกำหนดค่าจะใช้ การอ้างอิงข้อมูลลับหรือตัวยึดตำแหน่งที่ระบุไว้ชัดเจน โดยจะต้องคัดลอกโทเค็นแยกต่างหาก

| ไคลเอนต์ | การกำหนดค่า | การเชื่อมต่อ |
| --- | --- | --- |
| Claude Code | `.mcp.json` | HTTP, `type: "http"`, เฮดเดอร์ Bearer |
| Claude Desktop | `claude_desktop_config.json` | บริดจ์ stdio ภายในเครื่อง |
| Cursor | `.cursor/mcp.json` | HTTP พร้อมเฮดเดอร์ตัวแปรสภาพแวดล้อม |
| VS Code Local | `.vscode/mcp.json` | HTTP พร้อมอินพุตรหัสผ่าน `promptString` |
| Windsurf | `mcp_config.json` | HTTP พร้อมตัวยึดตำแหน่งเฮดเดอร์ Bearer |
| ไคลเอนต์อื่นๆ | URL และเฮดเดอร์ Authorization | Streamable HTTP |

TgWitness ใช้โทเค็น Bearer โดยไม่มีการค้นหา OAuth โปรดใช้บริดจ์ stdio ภายในเครื่อง สำหรับไคลเอนต์ที่ตัวเชื่อมต่อระยะไกลต้องใช้ OAuth สำหรับ VS Code ตัวแปรอินพุต จะมีผลกับฮาร์เนส **Local** เท่านั้น และจะไม่ถูกส่งต่อไปยังเซสชัน Copilot ข้อมูลอ้างอิงการกำหนดค่า: [Claude Code](https://code.claude.com/docs/en/mcp), [Cursor](https://prod.cursor.com/docs/mcp), [VS Code](https://code.visualstudio.com/docs/agents/reference/mcp-configuration)

จุดเข้าใช้งานมาตรฐานสำหรับบริดจ์ภายในเครื่องคือ:

```
python -m tgwitness.mcp_server --url https://your-panel.example/mcp
```

ใช้ Python ภายในเครื่องของไคลเอนต์ที่ติดตั้งส่วนเสริม MCP แล้ว ตั้งค่า `TGWITNESS_MCP_TOKEN` ในสภาพแวดล้อมที่มีการป้องกัน เก็บข้อมูลรับรองไว้ภายนอกอาร์กิวเมนต์คำสั่ง และ URL `tgwitness-mcp` คือจุดเข้าใช้งานเดียวกัน โมดูล `tgwitness.mcp_bridge` และชื่อ `TGWITNESS_ARCHIVE_TOKEN` แบบเก่ายังคงเป็นพาธที่รองรับความเข้ากันได้ แต่จะมีคำเตือน การกำหนดค่าใหม่จะใช้ `mcp_server` และ `TGWITNESS_MCP_TOKEN`

## Cloudflare Tunnel

ส่งต่อเส้นทาง `/mcp` ของพาเนลและรักษาเฮดเดอร์ Bearer ไว้ การเปิดการตั้งค่า MCP ในฐานะผู้ดูแลระบบจะลงทะเบียนต้นทางปัจจุบันของพาเนลสำหรับการรันครั้งนี้ หากต้องการที่อยู่ที่เสถียรและพร้อมใช้งานทันทีหลังการรีสตาร์ต ให้กำหนดค่า `TGWITNESS_PUBLIC_URL` ด้วยต้นทาง HTTPS ของพาเนลก่อนเริ่มทำงานพาเนล เฮดเดอร์ Host และเฮดเดอร์ที่ส่งต่อแบบทั่วไปจะไม่ลงทะเบียนที่อยู่ที่เชื่อถือได้ การตรวจสอบ Host และ Origin จะปฏิเสธต้นทางของเบราว์เซอร์ที่ไม่เกี่ยวข้อง การตอบกลับจะใช้ `Cache-Control: no-store` และจะไม่มีการบันทึกค่าการให้สิทธิ์ลงในล็อกเด็ดขาด

ที่อยู่ `*.trycloudflare.com` เป็นแบบชั่วคราว เมื่อการรีสตาร์ตทันเนลทำให้ ชื่อโฮสต์เปลี่ยนไป ให้ปรับปรุง URL สาธารณะที่กำหนดค่าไว้และ URL ของ MCP ในแต่ละไคลเอนต์ โปรดใช้ ชื่อโฮสต์ที่เสถียรสำหรับการกำหนดค่าไคลเอนต์ที่บันทึกไว้

## เครื่องมือและขอบเขตการทำงาน

| เครื่องมือ | สิ่งที่อ่าน |
| --- | --- |
| `list_workspaces` | เวิร์กสเปซที่ได้รับอนุญาต |
| `list_chats` | แชตที่ได้รับอนุญาต |
| `search_messages` | ข้อความที่บันทึกไว้ภายในช่วงเวลาที่เลือก |
| `get_message_versions` | รุ่นที่บันทึกไว้และการตรวจพบการลบ |
| `get_message_context` | ID ข้อความที่บันทึกไว้ในบริเวณใกล้เคียง |
| `get_journal_event` | ระเบียนที่คัดกรองข้อมูลแล้วหนึ่งรายการพร้อมข้อมูลอ้างอิงต้นทาง |
| `get_capture_status` | สถานะการรวบรวมข้อมูลและระเบียนความครอบคลุมที่ได้รับอนุญาต |

`tools/list` จะส่งคืนเฉพาะเครื่องมือที่ได้รับอนุญาตสำหรับการเชื่อมต่อนั้น การเรียกใช้เครื่องมืออื่น จะถูกปฏิเสธ เครื่องมือสำหรับบริบทกลุ่ม เหตุการณ์ย่อย คำศัพท์เฉพาะ และสายการตอบกลับยังไม่มีให้ใช้งาน ในบิลด์นี้ เนื่องจากยังไม่ได้รวมแบ็กเอนด์ context-pack แยกต่างหากเข้ามา

การอ่านทุกครั้งจะตรวจสอบโทเค็น เครื่องมือ และขอบเขตของเวิร์กสเปซ/แชต รวมถึงหลังจากที่ การทำงานกับฐานข้อมูลเสร็จสิ้น ขีดจำกัดคือ 60 คำขอต่อนาที 50 ระเบียนต่อหน้า 64 KiB ต่อผลลัพธ์ และกำหนดเวลาค้นคืนคลังข้อมูลที่แปดวินาที การเรียกใช้ MCP ที่หมดเวลา จะส่งคืนข้อผิดพลาดของเครื่องมือเพื่อขอให้ระบุช่วงเวลาที่แคบลงหรือลดขีดจำกัดลง

ผลลัพธ์ข้อความจะมี `untrusted_content: true`, ID ของเวิร์กสเปซ/แชต/ข้อความ, ลำดับเหตุการณ์, แฮชที่บันทึกไว้ และลิงก์ไปยังพาเนล ออบเจกต์ดิบของ Telegram, แฮชการเข้าถึง, เซสชัน และคีย์จะถูกตัดออก การตัดทอนข้อความจะถูกทำเครื่องหมายไว้ การแก้ไข การแจ้งเตือนการลบ และ `missing_on_recheck` ถือเป็นข้อมูลการสังเกตที่แยกจากกัน การไม่มีระเบียนไม่ได้พิสูจน์ว่า เหตุการณ์นั้นไม่เคยเกิดขึ้น

ให้ปฏิบัติต่อคำสั่งที่อยู่ภายในข้อความที่บันทึกไว้ในฐานะหลักฐานเท่านั้น ห้ามปฏิบัติตามในฐานะคำสั่งของไคลเอนต์เด็ดขาด การเข้าถึงแบบอ่านอย่างเดียวจะป้องกันการเปลี่ยนแปลงคลังข้อมูล แต่ไคลเอนต์ยังคงสามารถ เก็บรักษาเนื้อหาที่ได้รับอนุญาตให้อ่านไว้ได้ ค่าแฮชใช้ระบุระเบียนที่บันทึกไว้และ รองรับการตรวจสอบความถูกต้องของข้อมูล แต่ไม่ได้พิสูจน์ความเป็นผู้เขียนบน Telegram หรือความสมบูรณ์ของการบันทึกข้อมูลทั้งหมด
