buglens
README.md

<p align="center">
<a href="https://github.com/iambilalshahid/qa-sheet-mcp"><img src="https://img.shields.io/badge/GitHub-Open_Source-22c55e?style=for-the-badge&logo=github&logoColor=white" /></a>
<a href="./LICENSE"><img src="https://img.shields.io/badge/MIT_License-22c55e?style=for-the-badge" /></a>
<a href="https://github.com/iambilalshahid/qa-sheet-mcp"><img src="https://img.shields.io/github/stars/iambilalshahid/qa-sheet-mcp?style=for-the-badge&color=22c55e" /></a>
</p>
<p align="center">
<img src="https://img.shields.io/badge/MCP-Server-059669?style=flat-square" />
<img src="https://img.shields.io/badge/FastMCP-4.1.4-059669?style=flat-square" />
<img src="https://img.shields.io/badge/Google_Sheets-34A853?style=flat-square&logo=googlesheets&logoColor=white" />
<img src="https://img.shields.io/badge/Python-3.12+-3776AB?style=flat-square&logo=python&logoColor=white" />
<img src="https://img.shields.io/badge/Build-Passing-4c1?style=flat" />
<img src="https://img.shields.io/badge/Solo_Dev-Bilal_Shahid-000?style=flat-square" />
</p>
<p align="center">
<b>Your QA bugs live in Google Sheets. AI actually SEES the screenshot, fixes the code, and marks it Devdone.</b><br/>
No CSV export. No copy-paste. No tab switching. Just MCP magic.
</p>
---
## ๐ค The Problem Every Dev Team Has
Your QA team logs bugs in Google Sheets. Smart. Organized. Totally fine.
Then the dev gets pinged.
**Here's what actually happens next:**
1. Open the sheet *(Tab 1)*
2. Find your assigned bug *(scroll, scroll, find the row)*
3. See a Snipboard screenshot link โ click it *(Tab 2)*
4. Look at the image. Describe it mentally.
5. Switch back to your code *(Tab 3 โ or VSCode โ or wherever)*
6. Try to fix something you're now half-remembering
7. Go back to the sheet *(Tab 1, again)*
8. Manually type `Devdone` โ or mis-type `DevDone` and break the dropdown
**That's 6+ context switches. Per bug. Every single time.**
20 bugs a day? You just spent your morning on tab gymnastics.
And the worst part? **Your AI assistant never saw the screenshot.** You're out here describing UI bugs in plain text like it's 2019.
---
## ๐ก There Is a Better Way
**buglens** is an MCP server that plugs directly into your editor and closes the entire loop โ automatically.
> Pull the bug โ AI sees the screenshot โ Fix the code โ Devdone auto โ Done โ
Your AI reads the sheet **live** (not a CSV export โ *live*), fetches the Snipboard link, **actually sees the visual bug**, fixes your code, and marks it `Devdone`. You never left your editor. You never opened a tab. You never typed a status.
---
## ๐ฏ How It Works
| Step | What Happens | Under the Hood |
| --- | --- | --- |
| 1. Live Sheet | AI pulls your open bugs by assignee | `gspread` live API โ no CSV, always fresh |
| 2. Vision | AI fetches the Snipboard link and **SEES** the screenshot | `get_bug_screenshot()` โ base64 โ Gemini Vision |
| 3. Fix | AI understands the visual bug and patches the code | Certificates, Dashboard, Student modules |
| 4. Devdone | AI writes status back to the exact row | `mark_as_devdone()` โ case-safe, no dropdown breaks |
---
## ๐ณ Project Structure
<details>
<summary><b>๐ฆ qa-sheet-mcp</b></summary>
<blockquote>
<details>
<summary><b>๐ src</b></summary>
<blockquote>
<details>
<summary><b>๐ qa_sheet_mcp</b></summary>
<blockquote>
* ๐ `__init__.py`
* ๐ `server.py` โ *Main MCP server containing 8 registered tools*
</blockquote>
</details>
</blockquote>
</details>
<details>
<summary><b>๐ AGENTS</b></summary>
<blockquote>
* ๐ `GEMINI.md` โ *Gemini agent specific configurations*
* ๐ `CLAUDE.md` โ *Claude agent specific configurations*
* ๐ `AGENTS.md` โ *General cross-agent context metrics*
* ๐ `VIBE.md` โ *Guidelines for autonomous vibe coding sessions*
* ๐ `DEV.md` โ *Developer workspace log book*
</blockquote>
</details>
* ๐ `pyproject.toml` โ *Project metadata and package dependencies*
* ๐ซ `.gitignore` โ *Ignore specs for builds, credentials, and virtual envs*
* ๐ `README.md` โ *This roadmap documentation*
</blockquote>
---
## Installation
# 1. Create venv
python3 -m venv venv
source venv/bin/activate
# 2. Install from GitHub
pip install git+https://github.com/iambilalshahid/buglens.git
# 3. Or for local dev
git clone https://github.com/iambilalshahid/buglens.git
cd buglens
pip install -e .
```
[Jump to Gemini Installation](./AGENTS/GEMINI.md)
</details>
<details>
<summary><b>Clone for local dev / contribution</b></summary>
```bash
git clone https://github.com/iambilalshahid/qa-sheet-mcp.git
cd qa-sheet-mcp
python3 -m venv venv
source venv/bin/activate
pip install -e .
```
</details>
---
## โ๏ธ Configuration
Add this block to your `mcp.json` โ works with **Cursor**, **Claude Desktop**, and **Antigravity**.
```json
{
"mcpServers": {
"qa-sheet": {
"command": "python",
"args": ["-m", "qa_sheet_mcp.server"],
"env": {
"SHEET_ID": "your-sheet-id-here",
"WORKSHEET_NAME": "Admin bug report",
"GOOGLE_CREDS_PATH": "./credentials.json",
"QA_ASSIGN_TO": "Bilal",
"QA_PROBLEM_TYPE": "FE"
}
}
}
}
```
<details>
<summary><b>๐ Environment variable reference</b></summary>
| Variable | Description |
| --- | --- |
| `SHEET_ID` | From URL `/d/<THIS>/edit` โ use `l` not `I` (easy to confuse) |
| `WORKSHEET_NAME` | Your sheet tab name โ e.g. `Admin bug report` |
| `GOOGLE_CREDS_PATH` | Path to your Service Account `credentials.json` |
| `QA_ASSIGN_TO` | Your name exactly as it appears in the sheet: `Bilal`, `Ahmar` |
| `QA_PROBLEM_TYPE` | Filter by type: `FE`, `BE`, or `FE,BE` |
</details>
---
## ๐ Status Workflow
Every transition is validated. No more typos silently breaking your dropdown.
```mermaid
stateDiagram-v2
[*] --> Open
Open --> InProgress
InProgress --> Devdone
InProgress --> ServerDone
Devdone --> QA
ServerDone --> QA
QA --> Verified
QA --> ReOpen
ReOpen --> InProgress
Verified --> [*]
```
**Valid values:** `Open` ยท `In-Progress` ยท `Devdone` ยท `QA` ยท `Re-Open` ยท `Verified` ยท `Discussion` ยท `Hold` ยท `Server Done`
---
## ๐ ๏ธ The 7 Tools
| Tool | What it does |
| --- | --- |
| `get_frontend_bugs_online` | Pull your open FE bugs live from the sheet (with `row_number`) |
| `get_bug_screenshot` | Fetch Snipboard URL โ base64 โ AI sees the bug visually |
| `mark_as_inprogress` | Flip status: `Open` โ `In-Progress` |
| `mark_as_devdone` | Flip status: โ `Devdone` (case-safe write) |
| `get_status_list` | Valid dropdown values + full workflow reference |
| `get_fix_history` | What you fixed today โ reads from `~/` history |
| `debug_sheet_info` | Sheet debug info when things go sideways |
---
## ๐ค Contribute
Open source, solo-built, PRs welcome โ especially for:
- New tool ideas (comment on a bug row? bulk update?)
- More integrations: Notion, Jira, Linear
- Better vision prompting strategies
```bash
git clone https://github.com/iambilalshahid/qa-sheet-mcp.git
git checkout -b feature/your-idea
git commit -m "Add: your feature"
git push origin feature/your-idea
# โ Open a Pull Request
```
---
## ๐ค Author
**Bilal Shahid** โ Solo Dev
GitHub: [@iambilalshahid](https://github.com/iambilalshahid)
---

<p align="center">MIT ยฉ Bilal Shahid โข Open Source โข FastMCP</p># buglens
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues