npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@iflow-mcp/xiangxiaobo-copilot-leecher

v1.0.0

Published

Squeeze every drop out of your GitHub Copilot premium requests — turn follow-up prompts into free MCP tool calls

Readme

🧛 Copilot Leecher

English | 中文

Squeeze every drop out of your GitHub Copilot premium requests — turn follow-up prompts into free MCP tool calls.

Why This Exists

GitHub Copilot charges by premium requests (300/month on Pro; each Claude Opus 4.6 call costs 3 requests), not by tokens. Through experimentation, we discovered:

| Action | Costs a Premium Request? | |---|---| | New user prompt | ✅ Yes | | Follow-up in the same session | ✅ Yes | | Tool call / MCP call | ❌ No |

So the most cost-effective way to use Copilot is: pack as much work as possible into a single premium request.

The problem? Humans rarely express everything perfectly in one shot. Follow-up questions ("wait, also do X…") are inevitable — and each one burns another request.

Copilot Leecher solves this by providing a request_review MCP tool. When the agent finishes a task, it calls this tool and blocks — waiting for your feedback via a local web UI. Your feedback is returned as a tool call result (free!), not a new user prompt. The agent then acts on your feedback within the same request.

One prompt → review → refine → review → approve. All for the price of a single premium request.

How It Works

You (1 prompt)                    Copilot Agent
    │                                  │
    ├─── "Implement feature X" ────────►  (works on it…)
    │                                  │
    │                  request_review() │  ← MCP tool call (FREE)
    │                                  │
    │   ┌──────────────────────────────┤
    │   │ Web UI (localhost:3456)      │
    │   │ "Also handle edge case Y"   │  ← your feedback
    │   └──────────────────────────────┤
    │                                  │
    │                  (improves work…) │
    │                                  │
    │                  request_review() │  ← still FREE
    │   ┌──────────────────────────────┤
    │   │ "ok"                         │  ← approved
    │   └──────────────────────────────┤
    │                                  │
    │            ✅ Done ◄──────────────┤
    │                                  │
    Total premium requests used: 1

Quick Start

1. Install & Build

git clone https://github.com/user/copilot-leecher.git
cd copilot-leecher
npm install
npm run build

2. Configure VS Code

Add to your VS Code settings.json:

{
  "github.copilot.chat.mcp.servers": {
    "copilot-leecher": {
      "command": "node",
      "args": ["/absolute/path/to/copilot-leecher/dist/index.js"]
    }
  }
}

Replace the path with your actual absolute path.

3. Restart VS Code & Open Dashboard

Restart VS Code. The MCP server auto-starts an HTTP dashboard at http://127.0.0.1:3456.

4. Use It

In your Copilot Chat prompt or Agent Contract, instruct the agent:

After completing your work, call the request_review tool with a taskId and summary.
Wait for feedback. If approved, finish. Otherwise, improve and request review again.

Then open http://127.0.0.1:3456 to review and provide feedback.

Architecture

┌─────────────────┐   ┌─────────────────┐   ┌─────────────────┐
│  VS Code #1     │   │  VS Code #2     │   │  Browser        │
│  Copilot Agent  │   │  Copilot Agent  │   │  127.0.0.1:3456 │
└────────┬────────┘   └────────┬────────┘   └────────┬────────┘
         │ MCP                 │ MCP                  │ HTTP
    ┌────▼────┐           ┌────▼────┐                 │
    │MCP+HTTP │           │MCP only │                 │
    │Server #1│           │Server #2│                 │
    │(:3456)  │           │(skipped)│                 │
    └────┬────┘           └────┬────┘                 │
         └────────┬────────────┘                      │
                  ▼                                   │
    ┌──────────────────────────────────┐              │
    │  /tmp/copilot-reviewer-sessions/ │◄─────────────┘
    │  (file-system persistence)       │
    └──────────────────────────────────┘
  • The first MCP process binds port 3456 for the web dashboard.
  • Subsequent instances skip the HTTP server but share session data via the filesystem.

MCP Tool: request_review

| Parameter | Type | Required | Description | |---|---|---|---| | taskId | string | ✅ | Unique task identifier (e.g. task-20260217-001) | | summary | string | ✅ | Brief summary of work done (2-3 sentences) |

Returns: { status, feedback, sessionId, reviewerUrl }

  • status: "approved" or "needs_revision"
  • feedback: The reviewer's text

HTTP API

| Method | Endpoint | Description | |---|---|---| | GET | /api/sessions | List all sessions | | GET | /api/sessions/pending | List pending sessions | | GET | /api/sessions/:id | Get session details | | POST | /api/sessions/:id/feedback | Submit feedback { "feedback": "..." } | | GET | /api/health | Health check |

Agent Contract Template

Add this to your prompt / system instructions:

After completing all tasks, you MUST call the `request_review` tool.

- taskId: a unique identifier for the task
- summary: 2-3 sentences describing what you did

Then wait for expert feedback:
- "ok" / "approved" / "lgtm" → task complete, stop working
- anything else → improve your work based on the feedback, then call request_review again

NEVER finish without an approved review.
# Agent Contract

## Review Requirements

### When to Request Review
After completing all task steps, you MUST call `request_review`.

### How to Call
- **taskId**: Use format `[type]-[date]-[seq]` (e.g. `feature-20260217-001`)
- **summary**: 2-3 sentences summarizing your work

### Handling Feedback
1. **Approved** ("ok" / "approved" / "lgtm"): Stop working, confirm completion
2. **Needs revision**: Read feedback, improve, call request_review again
3. **Timeout**: Inform user, offer to retry

### Rules
- ❌ NEVER finish without approved review
- ❌ NEVER skip the review step
- ✅ Always request review after completing work
- ✅ Keep improving until approved

Project Structure

src/
├── index.ts            # MCP server entry (auto-starts HTTP server)
├── reviewer-server.ts  # Express HTTP server + Web UI
├── types.ts            # TypeScript type definitions
└── shared-state.ts     # File-system-based session persistence

Development

npm run watch     # watch mode
npm run dev       # build + run MCP server

Troubleshooting

MCP Server won't connect?
Ensure an absolute path in settings.json and that dist/index.js exists. Check VS Code Output panel → "MCP Server" logs.

Port 3456 in use?
A second MCP instance auto-skips HTTP startup. Sessions are shared via /tmp/copilot-reviewer-sessions/ — one dashboard shows all.

Agent doesn't call request_review?
Make sure your Agent Contract / prompt explicitly requires it.

License

MIT


中文说明

薅 GitHub Copilot Premium Request 羊毛的勤俭玩法 —— 把追问变成免费的 MCP tool call。

为什么做这个

GitHub Copilot 按 premium request 次数计费(Pro 套餐每月 300 次,一次 Claude Opus 4.6 调用算 3 次),而不是按 token 计费。经过实验,我们发现:

| 操作 | 消耗 Premium Request? | |---|---| | 新的 user prompt | ✅ 是 | | 同 session 中的追问/后续提问 | ✅ 是 | | Tool call / MCP 调用 | ❌ |

所以最划算的用法是:让一次 premium request 做尽可能多的事情

问题是,人很难一次性把需求表达清楚,追问在所难免——但每次追问都会额外消耗一个 request。

Copilot Leecher 提供了一个 request_review MCP tool。Agent 完成任务后调用此工具,进入阻塞等待状态,你在本地 Web UI 上给出反馈。反馈以 tool call result(免费!)的形式返回给 Agent,而不是新的 user prompt。Agent 在同一个 request 内继续工作。

一次 prompt → 审查 → 改进 → 审查 → 通过。全程只消耗一个 premium request。

简单来说:这个 MCP 服务"骗"大模型把你事实上的追问当成 tool call result 来处理。

工作原理

你 (1 条 prompt)                  Copilot Agent
    │                                  │
    ├─── "实现功能 X" ─────────────────►  (开始干活…)
    │                                  │
    │                  request_review() │  ← MCP tool call(免费)
    │                                  │
    │   ┌──────────────────────────────┤
    │   │ Web UI (localhost:3456)      │
    │   │ "边界情况 Y 也处理一下"       │  ← 你的反馈
    │   └──────────────────────────────┤
    │                                  │
    │                  (继续改进…)     │
    │                                  │
    │                  request_review() │  ← 仍然免费
    │   ┌──────────────────────────────┤
    │   │ "ok"                         │  ← 通过
    │   └──────────────────────────────┤
    │                                  │
    │            ✅ 完成 ◄──────────────┤
    │                                  │
    消耗的 premium request 总数: 1

快速开始

1. 安装 & 构建

git clone https://github.com/user/copilot-leecher.git
cd copilot-leecher
npm install
npm run build

2. 配置 VS Code

settings.json 中添加:

{
  "github.copilot.chat.mcp.servers": {
    "copilot-leecher": {
      "command": "node",
      "args": ["/你的绝对路径/copilot-leecher/dist/index.js"]
    }
  }
}

3. 重启 VS Code & 打开 Dashboard

重启 VS Code 后,MCP Server 会自动在 http://127.0.0.1:3456 启动 Web 审查界面。

4. 使用

在 Copilot Chat 提示词或 Agent Contract 中,指示 Agent:

完成所有工作后,调用 request_review 工具,附上 taskId 和工作摘要。
等待审查反馈:若反馈为 "ok" / "approved",结束任务;否则根据反馈改进后重新请求审查。
未通过审查不得结束工作。

然后打开 http://127.0.0.1:3456 进行审查并提交反馈。

Agent Contract 模板

完成所有任务后,你**必须**调用 `request_review` tool:

- taskId: 任务唯一标识(如 feature-20260217-001)
- summary: 2-3 句简要描述完成了什么

然后等待专家反馈:
- "ok" / "approved" / "lgtm" / "通过" → 结束工作
- 其他内容 → 根据反馈改进,然后再次调用 request_review

**重要:未通过审查不得结束工作!**
# Agent Contract

## 审查要求

### 何时请求审查
完成所有任务步骤后,**必须**调用 `request_review`。

### 调用方式
- **taskId**: 格式 `[类型]-[日期]-[序号]`(如 `feature-20260217-001`)
- **summary**: 2-3 句描述你完成的工作

### 反馈处理
1. **通过**("ok" / "approved" / "lgtm" / "通过"):停止工作,确认完成
2. **需要改进**:阅读反馈,改进工作,再次调用 request_review
3. **超时**:告知用户,询问是否重新请求

### 规则
- ❌ 未经审查通过不得结束任务
- ❌ 不得跳过审查步骤
- ✅ 完成工作后立即请求审查
- ✅ 持续改进直到获批

常见问题

Q: MCP Server 无法连接?
确保 settings.json 中使用绝对路径,且 dist/index.js 存在。查看 VS Code 输出面板 → "MCP Server" 日志。

Q: 端口 3456 被占用?
第二个 MCP 实例会自动跳过 HTTP 启动。Session 通过 /tmp/copilot-reviewer-sessions/ 文件共享,同一个 Dashboard 可见所有实例的会话。

Q: Agent 不调用 request_review?
检查 Agent Contract 提示词中是否明确要求了。

许可证

MIT