Skip to main content
Glama
zhaobu

MCP Feedback Collector

by zhaobu
README.md
# ๐ŸŽฏ MCPๅ้ฆˆๆ”ถ้›†ๅ™จ

ไธ€ไธช็ŽฐไปฃๅŒ–็š„ Model Context Protocol (MCP) ๆœๅŠกๅ™จ๏ผŒไธบAIๅŠฉๆ‰‹ๆไพ›ไบคไบ’ๅผ็”จๆˆทๅ้ฆˆๆ”ถ้›†ๅŠŸ่ƒฝใ€‚

![Version](https://img.shields.io/badge/version-2.0.1-blue)
![Python](https://img.shields.io/badge/python-3.10+-green)
![License](https://img.shields.io/badge/license-MIT-orange)

## ๅœจcursor่ง„ๅˆ™ไธญๅฏไปฅไธ‹้ข่ฟ™ๆ ท้…็ฝฎ

"Whenever you want to ask a question, always call the MCP .

Whenever you're about to complete a user request, call the MCP instead of simply ending the process. Keep calling MCP until the user's feedback is empty, then end the request. mcp-feedback-collector.collect_feedback "

## ็›ธๅ…ณๆ•™็จ‹้“พๆŽฅ
ๆฒน็ฎก๏ผšhttps://youtu.be/aYtGm1xHNXI
B็ซ™๏ผšhttps://www.bilibili.com/video/BV1J6jyzQE8P/

## โœจ ไธป่ฆ็‰นๆ€ง

- ๐ŸŽจ **็ŽฐไปฃๅŒ–็•Œ้ข** - ็พŽ่ง‚็š„700x800ๅƒ็ด GUI๏ผŒๆ”ฏๆŒไธญๆ–‡็•Œ้ข๏ผŒ**็ช—ๅฃๅฑ…ไธญๆ˜พ็คบๅนถ่‡ชๅŠจ็ฝฎ้กถ**
- โŒจ๏ธ **ๅขžๅผบ้”ฎ็›˜ไบคไบ’** - ๆ”ฏๆŒ **Enter ๆไบคใ€Esc ๅ–ๆถˆใ€Ctrl+V ็›ดๆŽฅ็ฒ˜่ดดๅ›พ็‰‡**
- ๐Ÿ“ท **ๅคšๅ›พ็‰‡ๆ”ฏๆŒ** - ๅŒๆ—ถ้€‰ๆ‹ฉๅคšๅผ ๅ›พ็‰‡๏ผŒๆ”ฏๆŒๆ–‡ไปถ้€‰ๆ‹ฉๅ’Œๅ‰ช่ดดๆฟ็ฒ˜่ดด
- ๐Ÿ’ฌ **็ตๆดปๅ้ฆˆ** - ๆ”ฏๆŒ็บฏๆ–‡ๅญ—ใ€็บฏๅ›พ็‰‡ๆˆ–ๆ–‡ๅญ—+ๅ›พ็‰‡็ป„ๅˆๅ้ฆˆ
- โšก **้›ถ้…็ฝฎๅฎ‰่ฃ…** - ไฝฟ็”จuvxไธ€้”ฎๅฎ‰่ฃ…๏ผŒๆ— ้œ€ๅคๆ‚้…็ฝฎ
- ๐Ÿ”ง **ๆ™บ่ƒฝ่ถ…ๆ—ถ** - ๅฏ้…็ฝฎ็š„ๅฏน่ฏๆก†่ถ…ๆ—ถๆ—ถ้—ด๏ผŒ้ฟๅ…ๆ“ไฝœไธญๆ–ญ

## ๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

### 1. ๅฎ‰่ฃ…uvx
```bash
pip install uvx
```

### 2. ้…็ฝฎClaude Desktop
ๅœจ `claude_desktop_config.json` ไธญๆทปๅŠ ๏ผš

```json
{
  "mcpServers": {
    "mcp-feedback-collector": {
      "command": "uvx",
      "args": ["mcp-feedback-collector"],
      "env": {
        "PYTHONIOENCODING": "utf-8",
        "MCP_DIALOG_TIMEOUT": "600"
      }
    }
  }
}
```

### 3. ้‡ๅฏClaude Desktop
้…็ฝฎๅฎŒๆˆๅŽ้‡ๅฏClaude Desktopๅณๅฏไฝฟ็”จใ€‚

## ๐Ÿ› ๏ธ ๆ ธๅฟƒๅŠŸ่ƒฝ

### collect_feedback()
ๆ”ถ้›†็”จๆˆทๅ้ฆˆ็š„ไธป่ฆๅทฅๅ…ท๏ผŒAIๅฏไปฅๆฑ‡ๆŠฅๅทฅไฝœๅ†…ๅฎน๏ผŒ็”จๆˆทๆไพ›ๆ–‡ๅญ—ๅ’Œๅ›พ็‰‡ๅ้ฆˆใ€‚

```python
# AI่ฐƒ็”จ็คบไพ‹
result = collect_feedback("ๆˆ‘ๅทฒ็ปๅฎŒๆˆไบ†ไปฃ็ ไผ˜ๅŒ–ๅทฅไฝœ...")
```

### pick_image()
ๅฟซ้€Ÿๅ›พ็‰‡้€‰ๆ‹ฉๅทฅๅ…ท๏ผŒ็”จไบŽๅ•ๅผ ๅ›พ็‰‡้€‰ๆ‹ฉๅœบๆ™ฏใ€‚

### get_image_info()
่Žทๅ–ๅ›พ็‰‡ๆ–‡ไปถ็š„่ฏฆ็ป†ไฟกๆฏ๏ผˆๆ ผๅผใ€ๅฐบๅฏธใ€ๅคงๅฐ็ญ‰๏ผ‰ใ€‚

## ๐Ÿ–ผ๏ธ ็•Œ้ข้ข„่งˆ

```
๐ŸŽฏ ๅทฅไฝœๅฎŒๆˆๆฑ‡ๆŠฅไธŽๅ้ฆˆๆ”ถ้›†
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๐Ÿ“‹ AIๅทฅไฝœๅฎŒๆˆๆฑ‡ๆŠฅ                        โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ [AIๆฑ‡ๆŠฅ็š„ๅทฅไฝœๅ†…ๅฎนๆ˜พ็คบๅœจ่ฟ™้‡Œ]         โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๐Ÿ’ฌ ๆ‚จ็š„ๆ–‡ๅญ—ๅ้ฆˆ๏ผˆๅฏ้€‰๏ผ‰                  โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ [ๅคš่กŒๆ–‡ๆœฌ่พ“ๅ…ฅๅŒบๅŸŸ]                   โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๐Ÿ–ผ๏ธ ๅ›พ็‰‡ๅ้ฆˆ๏ผˆๅฏ้€‰๏ผŒๆ”ฏๆŒๅคšๅผ ๏ผ‰            โ”‚
โ”‚ [๐Ÿ“้€‰ๆ‹ฉๆ–‡ไปถ] [๐Ÿ“‹็ฒ˜่ดด] [โŒๆธ…้™ค]           โ”‚
โ”‚ [ๅ›พ็‰‡็ผฉ็•ฅๅ›พ้ข„่งˆๅŒบๅŸŸ]                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

[โœ… ๆไบคๅ้ฆˆ]  [โŒ ๅ–ๆถˆ]
```

## โš™๏ธ ้…็ฝฎ่ฏดๆ˜Ž

### ่ถ…ๆ—ถ่ฎพ็ฝฎ
- `MCP_DIALOG_TIMEOUT`: ๅฏน่ฏๆก†็ญ‰ๅพ…ๆ—ถ้—ด๏ผˆ็ง’๏ผ‰
  - ้ป˜่ฎค๏ผš300็ง’๏ผˆ5ๅˆ†้’Ÿ๏ผ‰
  - ๅปบ่ฎฎ๏ผš600็ง’๏ผˆ10ๅˆ†้’Ÿ๏ผ‰
  - ๅคๆ‚ๆ“ไฝœ๏ผš1200็ง’๏ผˆ20ๅˆ†้’Ÿ๏ผ‰

### ๆ”ฏๆŒ็š„ๅ›พ็‰‡ๆ ผๅผ
PNGใ€JPGใ€JPEGใ€GIFใ€BMPใ€WebP

## ๐Ÿ’ก ไฝฟ็”จๅœบๆ™ฏ

- โœ… AIๅฎŒๆˆไปปๅŠกๅŽๆ”ถ้›†็”จๆˆท่ฏ„ไปท
- โœ… ๆ”ถ้›†ๅŒ…ๅซๆˆชๅ›พ็š„่ฏฆ็ป†ๅ้ฆˆ
- โœ… ่Žทๅ–็”จๆˆทๅฏนไปฃ็ /่ฎพ่ฎก็š„ๆ„่ง
- โœ… ๆ”ถ้›†bugๆŠฅๅ‘Šๅ’Œๆ”น่ฟ›ๅปบ่ฎฎ

## ๐Ÿ”ง ๆŠ€ๆœฏๆ ˆ

- **MCPๆก†ๆžถ**: FastMCP
- **GUI**: tkinter + PIL
- **ๅคš็บฟ็จ‹**: threading + queue
- **ๅ›พ็‰‡ๅค„็†**: Pillow

## ๐Ÿ“ ๆ›ดๆ–ฐๆ—ฅๅฟ—

### v2.0.0 (2025-05-28)
- ๐ŸŽจ ๅ…จๆ–ฐ็ŽฐไปฃๅŒ–UI่ฎพ่ฎก
- ๐Ÿ“ท ๅคšๅ›พ็‰‡ๅŒๆ—ถๆไบคๆ”ฏๆŒ
- ๐Ÿ–ผ๏ธ ๆจชๅ‘ๆปšๅŠจๅ›พ็‰‡้ข„่งˆ
- ๐Ÿ’ซ ๅฝฉ่‰ฒๆŒ‰้’ฎๅ’Œๅ›พๆ ‡
- ๐Ÿ”ง ไผ˜ๅŒ–็”จๆˆทไฝ“้ชŒ

## ๐Ÿ“„ ่ฎธๅฏ่ฏ

MIT License - ่ฏฆ่ง [LICENSE](LICENSE) ๆ–‡ไปถ

## ๐Ÿค ่ดก็Œฎ

ๆฌข่ฟŽๆไบคIssueๅ’ŒPull Request๏ผ

---

**่ฎฉAIไธŽ็”จๆˆท็š„ไบคไบ’ๆ›ด้ซ˜ๆ•ˆ็›ด่ง‚๏ผ** ๐ŸŽฏ 
## ๆ„Ÿ่ฐขๆ”ฏๆŒ
https://api.ssopen.top/  APIไธญ่ฝฌ็ซ™๏ผŒ290+AI ๅคงๆจกๅž‹๏ผŒๅฎ˜ๆ–นๆˆๆœฌไธƒๅˆ†ไน‹ไธ€๏ผŒๆ”ฏๆŒ้ซ˜ๅนถๅ‘๏ผ