mcpField
R
Robokassa Mcp

Robokassa Mcp

ローカル
github.com開発ツール127 週間前に更新

Robokassa Mcp について

Robokassa Mcpは、決済連携向けのPythonクライアント兼MCPサーバーで、Robokassa決済ゲートウェイに接続します。チェックアウト、決済状況、返金、事前承認、定期課金、税務レシートなどを扱います。

主な機能

  1. 01署名付きチェックアウトURLの生成
  2. 02決済状況の確認
  3. 03返金の作成と状況確認
  4. 04カード事前承認の管理
  5. 05定期課金の処理
  6. 06税務レシートと分割決済の対応

活用シーン

  1. 01Robokassaのチェックアウトリンク生成
  2. 02決済完了の確認
  3. 03返金の実行または状況確認
  4. 04サブスクリプション課金の設定

MCP 対応

MCPクライアントに、チェックアウト、決済状況、返金、定期課金、税務レシート、Webhook署名検証など18個のRobokassaツールを公開します。stdioとHTTPベースのトランスポートに対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"robokassa": {
"command": "uvx",
"args": [
"robokassa-mcp"
],
"env": {
"ROBOKASSA_LOGIN": "<ROBOKASSA_LOGIN>",
"ROBOKASSA_PASSWORD1": "<ROBOKASSA_PASSWORD1>",
"ROBOKASSA_PASSWORD2": "<ROBOKASSA_PASSWORD2>",
"ROBOKASSA_PASSWORD3": "<ROBOKASSA_PASSWORD3>"
}
}
}
}
起動コマンドuvx robokassa-mcp
設定が必要な環境変数
ROBOKASSA_LOGINMerchant login identifier for the Robokassa shop.
ROBOKASSA_PASSWORD1シークレットShop's Password #1 — used for checkout URL signing, SuccessURL signature verification, CalcOutSumm, fiscal receipts, and SMS.
ROBOKASSA_PASSWORD2シークレットShop's Password #2 — used for OpStateExt payment status checks and ResultURL signature verification.
ROBOKASSA_PASSWORD3シークレットShop's Password #3 — used for Refund API (JWT HS256). Refund API access must be enabled in the cabinet.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypirobokassa-mcp0.1.2

ツール

18

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
inv_idintegerはい
algorithmenumいいえmd5 | sha256 | sha384 | sha512
password2anyいいえ
merchant_loginanyいいえ

詳細

robokassa-mcp — MCP を通じて AI エージェントに公開される Robokassa 決済ゲートウェイ

robokassa-mcp

CI PyPI Python License Docs

📚 ドキュメント  ·  PyPI  ·  Docker  ·  MCP レジストリ


Robokassa(ロシアの決済ゲートウェイ)向けの包括的な Python クライアントおよび Model Context Protocol サーバーです。

チェックアウト、XML ステータスインターフェース、返金、ホールディング(事前承認)、定期サブスクリプション、54-ФЗ の税務レシート、Partner API、補助エンドポイントなど、API の全機能をカバーしています。

インストール(公開後)

# As an MCP server for Claude Desktop / Claude Code / Cursor / Windsurf
uvx robokassa-mcp

# As a Python library
pip install robokassa-mcp

Python ライブラリとして使用する

import asyncio
from decimal import Decimal
from robokassa import create_invoice, RobokassaClient

# Build a signed checkout URL (no HTTP — just URL construction).
invoice = create_invoice(
    merchant_login="my-shop",
    out_sum=Decimal("599.00"),
    inv_id=12345,
    password1="...",
    description="Premium subscription",
    email="[email protected]",
)
print(invoice.url)  # https://auth.robokassa.ru/Merchant/Index.aspx?...

# Check the state of a payment (hits the OpStateExt XML endpoint).
async def check() -> None:
    async with RobokassaClient("my-shop", password2="...") as client:
        state = await client.check_payment(inv_id=12345)
        print(state.is_paid, state.info.op_key)

asyncio.run(check())
返金の全体的な流れ
from robokassa import RobokassaClient

async def refund_flow(inv_id: int) -> None:
    async with RobokassaClient("my-shop", password2="p2", password3="p3") as client:
        # 1. Fetch the payment state to get its OpKey.
        state = await client.check_payment(inv_id)
        assert state.info.op_key, "payment not complete yet"

        # 2. Initiate a refund.
        created = await client.refund_create(state.info.op_key)
        print("refund requestId:", created.request_id)

        # 3. Poll status until finished / canceled.
        while True:
            status = await client.refund_status(created.request_id)
            if status.is_terminal:
                print("final:", status.state)
                break
Webhook 署名の検証(FastAPI の例)
from fastapi import FastAPI, Request, HTTPException, PlainTextResponse
from robokassa import verify_result_signature, build_ok_response

app = FastAPI()

@app.post("/robokassa/result")
async def result_url(req: Request) -> PlainTextResponse:
    form = dict(await req.form())
    if not verify_result_signature(form, password2="..."):
        raise HTTPException(status_code=403, detail="Bad signature")
    # ... persist the notification, mark invoice paid ...
    return PlainTextResponse(build_ok_response(form["InvId"]))

MCP サーバーとして使用する

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集します。

{
  "mcpServers": {
    "robokassa": {
      "command": "uvx",
      "args": ["robokassa-mcp"],
      "env": {
        "ROBOKASSA_LOGIN": "your-shop-login",
        "ROBOKASSA_PASSWORD1": "password1",
        "ROBOKASSA_PASSWORD2": "password2",
        "ROBOKASSA_PASSWORD3": "password3"
      }
    }
  }
}
Claude Code
claude mcp add robokassa \
  -e ROBOKASSA_LOGIN=my-shop \
  -e ROBOKASSA_PASSWORD1=... \
  -e ROBOKASSA_PASSWORD2=... \
  -e ROBOKASSA_PASSWORD3=... \
  -- uvx robokassa-mcp
Cursor

~/.cursor/mcp.json を編集します。

{
  "mcpServers": {
    "robokassa": {
      "command": "uvx",
      "args": ["robokassa-mcp"],
      "env": {
        "ROBOKASSA_LOGIN": "your-shop-login",
        "ROBOKASSA_PASSWORD1": "password1",
        "ROBOKASSA_PASSWORD2": "password2",
        "ROBOKASSA_PASSWORD3": "password3"
      }
    }
  }
}
VS Code(GitHub Copilot)

ユーザーまたはワークスペースの settings.json に記述します。

{
  "github.copilot.chat.mcp.servers": {
    "robokassa": {
      "command": "uvx",
      "args": ["robokassa-mcp"],
      "env": {
        "ROBOKASSA_LOGIN": "your-shop-login",
        "ROBOKASSA_PASSWORD1": "password1",
        "ROBOKASSA_PASSWORD2": "password2",
        "ROBOKASSA_PASSWORD3": "password3"
      }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json を編集します。

{
  "mcpServers": {
    "robokassa": {
      "command": "uvx",
      "args": ["robokassa-mcp"],
      "env": {
        "ROBOKASSA_LOGIN": "your-shop-login",
        "ROBOKASSA_PASSWORD1": "password1",
        "ROBOKASSA_PASSWORD2": "password2",
        "ROBOKASSA_PASSWORD3": "password3"
      }
    }
  }
}
HTTP トランスポート(MCP Inspector、リモートクライアント)
uvx robokassa-mcp --transport http --port 8000

フラグ:--transport {stdio,http,streamable-http,sse}、--host、--port。

エージェントに公開される MCP ツール

18 個のツールはすべて @mcp.tool() でラップされており、MCP 対応の任意のエージェント(Claude Desktop、Claude Code、Cursor、Windsurf など)から利用できます。

ツール目的認証
create_invoice署名付きのチェックアウト URL を作成します(54-ФЗ のレシートは任意)。Password#1
check_paymentInvId による支払いの現在の状態を取得します(OpStateExt 経由)。Password#2
list_currenciesショップで利用可能な支払い方法を一覧表示します。—
calc_out_sum指定された支払いについて、ショップに入金される金額を計算します。Password#1
refund_create返金を開始します(Refund API へのアクセスが必要です)。Password#3 JWT
refund_statusrequestId による返金の進行状況を確認します。—
verify_result_signatureResultURL の Webhook を検証します。Password#2
verify_success_signatureSuccessURL のリダイレクトを検証します。Password#1
hold_init / hold_confirm / hold_cancel2 段階のカード事前承認です。Password#1
init_recurring_parent / recurring_chargeサブスクリプションの自動課金です。Password#1
build_split_invoiceマーケットプレイス向けの複数受取人チェックアウトです。—
send_sms有料 SMS サービスです。Password#1
second_receipt_create / second_receipt_status前払い後の 54-ФЗ の最終レシートです。Password#1
partner_refundパートナーインテグレーター向けの代替返金経路です。Partner JWT

低レベルの署名ヘルパーは Python からのみ利用できます:compute_signature、op_state_signature、build_checkout_signature、build_refund_jwt、build_sms_signature、compute_result_signature、compute_success_signature、encode_fiscal_body。

API の対応状況

Robokassa の 8 つの公開 API グループとの対応状況:

グループ対応状況モジュール
Merchant Checkout✅ create_invoice(+ 54-ФЗ)robokassa.checkout
XML Interfaces✅ check_payment、list_currencies、calc_out_sumrobokassa.xml_interface
Refund API✅ refund_create、refund_statusrobokassa.refund
Holding / Pre-auth✅ init / confirm / cancelrobokassa.holding
Recurring✅ 親 + 子robokassa.recurring
Fiscal 54-ФЗ✅ 2 回目のレシートの作成 / 状態確認robokassa.fiscal
Partner API🟡 partner_refund のみ — 対応状況のメモを参照robokassa.partner
Auxiliary✅ send_sms、Webhook 署名、分割払いrobokassa.sms、robokassa.webhooks、robokassa.split

環境変数

認証情報が明示的に渡されない場合、ほとんどの高レベルのエントリーポイントでは、以下の環境変数が使用されます。

変数必要な操作
ROBOKASSA_LOGINすべての操作
ROBOKASSA_PASSWORD1チェックアウト、Webhook の SuccessURL 検証、CalcOutSumm、税務関連、SMS
ROBOKASSA_PASSWORD2check_payment(OpStateExt)、Webhook の ResultURL 検証
ROBOKASSA_PASSWORD3refund_create

署名アルゴリズム

署名を生成するすべてのヘルパーは、algorithm= に "md5" / "sha256" / "sha384" / "sha512" を指定できます。Robokassa の管理画面で設定したものと一致させてください。

開発

git clone https://github.com/artgas1/robokassa-mcp.git
cd robokassa-mcp
uv sync --all-extras --dev
uv run pytest            # 107+ unit tests
uv run ruff check .
uv run pyright

ライセンス

MIT — LICENSE を参照してください。保守はベストエフォートです。PR は歓迎しますが、速やかにレビューされるとは限りません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。