Skip to main content
Glama
iqingyoung

429-throttle-mcp

by iqingyoung

429-throttle-mcp

English | 中文

API 429 拒否に悩まされない — レート制限付き MCP プロキシ。モデルが長期的なタスクで呼び出しペースを自動制御できるようにします。


概要

多くの無料大モデル API(Grok、Gemini、Dots など)は毎分約 30 回しか呼び出せません。モデルが長期的なタスク(検索 + PPT 生成、ツールの一括呼び出し)を実行する際、制限を超えて 429 拒否されることがよくあります。

429-throttle-mcp はこの課題に対して透過的なレート制限レイヤーを提供します:

模型 → call_api 工具 → 限流器 → 实际 API 请求 → 返回结果 + 用量快照

モデルはレート制限の存在を知る必要はなく、通常どおり call_api を呼び出すだけです。レート制限ロジックは MCP 内部で透過的に実行されます——クォータが足りれば通過させ、足りなければモデルに待機時間を伝えて再試行させます。


Related MCP server: tiny-mcp-gateway

パッケージ構成

Monorepo 構成で、2 つの独立した npm パッケージがコアのレート制限ロジックを共有します:

429-throttle-mcp/
├── packages/
│   ├── rate-limiter.js              # 核心限流逻辑(共享)
│   ├── 429-throttle-mcp/            # MCP Server 包
│   │   ├── package.json
│   │   ├── server.js
│   │   └── README.md
│   └── dsh-throttle/                # DSH Plugin 包
│       ├── package.json
│       ├── plugin.js
│       └── README.md
├── dsh-manifest.json
├── README.md
└── .env.example

パッケージ名

インストール

用途

429-throttle-mcp

npm i 429-throttle-mcp

MCP Server(ZCode などの MCP クライアント)

dsh-throttle

npm i dsh-throttle

DeepSeek Harness Plugin


コアパラメータ

パラメータ

デフォルト値

説明

MAX_CALLS

30

毎分の最大呼び出し回数 (RPM)

MAX_TOKENS

750000

毎分の最大 Token 数 (TPM)、リクエストボディとレスポンスボディを含む


公開ツール

call_api

レート制限プロキシを介して HTTP リクエストを送信します。すべての外部 API 呼び出しはこのツールを経由する必要があります。

パラメータ

タイプ

必須

説明

url

string

✅

対象 API の完全な URL

method

string

❌

HTTP メソッド、デフォルトは GET

body

string

❌

リクエストボディ、JSON 文字列

headers

string

❌

カスタムリクエストヘッダー、JSON 文字列

戻り値:API レスポンス + _meta.rateLimit 使用量スナップショット。レート制限で拒否された場合は、RATE_LIMIT_EXCEEDED エラーと retryAfterSeconds 推奨待機時間を返します。

get_rate_limit_status

現在のレート制限使用状況を照会します。使用済み/残りの呼び出し回数と Token 数、および推奨事項を返します。キューのカウンターは含まれず、ユーザーの不安を回避します。

set_rate_limit

レート制限パラメータを動的に調整します(スライダー調整に対応し、再起動不要でリアルタイムに反映されます)。

パラメータ

タイプ

説明

callsPerMinute

number

毎分の最大呼び出し回数 (RPM)

tokensPerMinute

number

毎分の最大 Token 数 (TPM)


インストール

MCP クライアント(ZCode など)

npm install 429-throttle-mcp

MCP 設定に以下を追加します:

{
  "mcpServers": {
    "429-throttle-mcp": {
      "command": "node",
      "args": ["node_modules/429-throttle-mcp/server.js"],
      "env": {
        "MAX_CALLS": "30",
        "MAX_TOKENS": "750000"
      }
    }
  }
}

DeepSeek Harness

npm install dsh-throttle

DSH 設定に以下を追加します:

{
  "plugins": {
    "dsh-throttle": {
      "maxCalls": 30,
      "maxTokens": 750000
    }
  }
}

ワークフロー例

モデルがブランド PPT 検索タスクを実行する場合:

  1. get_rate_limit_status を呼び出す → クォータが十分であることを確認

  2. call_api を呼び出す → ブランドキーワードを検索

  3. 拒否された場合 → retryAfterSeconds 待機後に再試行

  4. すべての情報を収集するまで 2〜3 を繰り返す

  5. set_rate_limit を呼び出す → 生成フェーズ用にレート制限パラメータを引き締める


レート制限アルゴリズム

スライディングウィンドウ + トークンバケット(Sliding Window + Token Bucket):60 秒のスライディングウィンドウを維持し、呼び出しごとにタイムスタンプとトークン消費量を記録します。ウィンドウ外の古いレコードは自動的にクリーンアップされます。制限を超えた場合は、最も古いレコードの残り待機時間を計算します。

並行処理の安全性:tryConsume() は同期関数であり、Node.js のシングルスレッドイベントループ内で自然に直列化されるため、競合状態は発生しません。


プロンプトに「ゆっくり呼び出せ」と書くのではなく、これを使う理由

方法

効果

プロンプトに「2 秒ごとに呼び出せ」と書く

❌ モデルにストップウォッチはなく、守らず、バーストして結局 429

外部スクリプトでのレート制限

❌ 追加プロセスが必要、モデルが認識せず、エラー時のデバッグが困難

MCP レート制限プロキシ(本プロジェクト)

✅ モデルは意識せず、透過的にチェック、構造化エラー + 待機推奨


応用シナリオキーワード

429報錯, anti 429, MCP限流, 大模型每分钟调用限制, 免费大模型速率限制, Agent批量调用触发429, MCP排队调用, RPM, TPM, rate limiter mcp, quota guard, mcp server, mcp proxy, throttle, llm api quota, cop, HTTP 429, Too Many Requests, rate limiting, token bucket, sliding window, API proxy, LLM rate limit, AI API throttle, concurrent rate limit, 30 calls per minute


ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A least-privilege enforcement proxy for MCP servers. It sits between MCP clients and upstream servers, enforcing tool policies, hiding denied tools, requiring human approval for risky actions, and providing a structured audit trail.
    MIT