mcpField
H
hardly

hardly

ローカル
github.com/b1tninja開発ツール12 日前に更新

hardly について

hardly は、大容量の HAR キャプチャ全体をエージェントのコンテキストに読み込まずに索引化・分析するコマンドラインツール兼 MCP サーバーです。サイトの調査やクライアント構築を行う開発者とエージェント向けに、幅広い Web 技術の情報を秘匿情報の削除とページ分割を行って提示します。

主な機能

  1. 01HAR データを SQLite に索引化
  2. 02エンドポイント、フォーム、認証方式の要約
  3. 03シークレットの削除とレスポンス本文の切り詰め
  4. 04ヘッドレスまたは対話モードでのサイト取得
  5. 05OpenAPI 仕様とクライアントコードの出力
  6. 06CLI と MCP の共通ツール群

活用シーン

  1. 01大容量のブラウザー HAR キャプチャの調査
  2. 02API エンドポイントと認証フローの特定
  3. 03OpenAPI ファイルまたは Python クライアントの生成
  4. 04ブロックされた取得や複雑なブラウザー操作の診断

MCP 対応

stdio MCP サーバーは、HAR データの分析やサイト取得に使うツール、プロンプト、リソースを提供します。CLI と共通の語彙を使い、読み取り専用分析、確認付きリクエスト送信、ファイル書き込みに対応します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"b1tninja-hardly": {
"command": "uvx",
"args": [
"hardly"
]
}
}
}
起動コマンドuvx hardly

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

パッケージ
pypihardly1.0.0

ツール

71

掲載時のツール一覧 · 1 日前に更新

パラメーター型必須説明
sectionsanyいいえ

詳細

hardly

PyPI Python CI License: MPL-2.0

コンテンツに依存しない汎用 CLI および MCP サーバーです。HAR ファイルの読み取りとキャプチャを行い、クライアント SDK に必要なエンドポイント、フォームとラベル、データやメディアの種類、認証情報と認証の仕組みを提供します。

目的

ブラウザーでキャプチャした HAR ファイルは、数十メガバイトになることもよくあります。それを読み取るエージェントはトークンを消費する一方で、構造を見落とすことがあります。hardly は HAR を一度 SQLite にストリーミングし、その後、MCP 経由で小さく、機密情報を除去したページ分割ツール(および同等の CLI)を提供します。本文は切り詰められ、秘密情報は除去され、リストはページ分割されます。ファイル全体が必要になることは、ほとんどありません。

hardly は、特定のサイトではなく、技術(HTML フォーム、ASP.NET WebForms、GraphQL、OAuth/OIDC、Cookie/CSRF、ボット対策など)とリソースの種類(JSON、CSV、HTML テーブル、PDF、画像など)を把握します。後続の SDK は、それぞれ独自の手順や用語を保持します。docs/scope.mdを参照してください。

インストール

pip install hardly                  # or: pipx install hardly / uv tool install hardly
pip install 'hardly[capture]' && python -m playwright install chromium   # optional: record HARs

hardly 自体を開発する場合:pip install -e ".[dev]"(CONTRIBUTING.md)。

Python 3.10 以降が必要です。保存するには出力パスを指定してください。指定しない場合、何も書き込まれません。 output_path を渡さない限り、すべてメモリ内に保持されます(hardly session open HAR -o index.db)。Python の場合:with open_session(har) as s: ...(integrating.md)。

60 秒で始めるクイックスタート

hardly guide mode                             # which of the three modes fits
hardly session overview path/to/capture.har   # counts per server, method and status
hardly session site-brief path/to/capture.har # one-screen digest of a server-rendered site
hardly endpoint list path/to/capture.har --host api.example.com
hardly session report path/to/capture.har     # one-pass findings with severity
hardly write export path/to/capture.har --format openapi -o api.yaml
hardly write export path/to/capture.har --format client_python --host api.example.com -o client.py

エージェントの場合は、hardly_guide_task_plan(goal, har_path, url)から始めてください(CLI:hardly guide task-plan --goal ...)。呼び出し例と現在の環境状態を含む、順序付きのプランが返されます。

名前から動作がわかります

CLI と MCP サーバーで共通の用語を使います。コマンド名は、hardly_ を除いたツール名です(hardly_session_open は hardly session open HAR、hardly_send_entry は hardly send entry HAR 12 --confirm)。

先頭の語意味
send実際のサーバーにリクエストを送信します。confirm=true(CLI では --confirm)が必要です。指定しない場合はプランのみを返します
writeファイルを書き込みます。overwrite=true(--overwrite)を指定しない限り、既存ファイルへの上書きを拒否します
browser実際のブラウザーを操作するか、ブラウザーから読み取ります
その他すべて読み込み済みのデータのみを読み取ります

統合ツールは sections リストを受け取ります。例:hardly_auth_report(sections=['credentials', 'cookies'])。リファレンス:docs/tools.md(71 個のツール)、docs/cli.md (コマンド)。安定性の保証についてはdocs/api-stability.mdを参照してください。

3 つのモード

モード使用する状況エントリーポイント
archiveHAR ファイルがすでにある場合hardly_session_open(har_path) の後に hardly_session_site_brief / hardly_endpoint_list
headlessURL だけがあり、エージェントがページを操作できる場合hardly_browser_capture_discover(url, analyze=true, confirm=true)(CLI hardly browser capture-discover URL --analyze --confirm)
interactiveボット対策、CAPTCHA、MFA、複雑な UI がある場合hardly_browser_start(headed=true)を実行し、人に確認してからhardly_browser_stop

キャプチャ後は、返された session_id を使って archive モードで続行してください。hardly は CAPTCHA やボット対策を決して回避しません。これらを検出し、停止する、人に確認する、または別の環境で再実行するよう案内します(docs/gate-policy.md)。詳細:docs/capture.md。

クローンせずにインストールして実行

uvx hardly serve                              # MCP server over stdio (archive mode)
uvx --from 'hardly[capture]' hardly browser --help   # with the Playwright capture extra
pipx install 'hardly[capture]'                # or install the CLI permanently
hardly skill install                          # copy the Agent Skill into ~/.claude/skills/hardly

公開パッケージ用の MCP クライアント設定:

{ "mcpServers": { "hardly": { "command": "uvx", "args": ["hardly", "serve"] } } }

ブラウザーキャプチャにはローカルへのインストールが必要です([capture] エクストラを指定し、その後 python -m playwright install chromium を実行します。ヘッド付きキャプチャにはディスプレイが必要です)。コンテナーイメージ ghcr.io/b1tninja/hardly(マルチアーキテクチャ対応、各リリースでビルド)は、アーカイブ/ヘッドレス分析専用です。作業ディレクトリを /workspace にマウントしてください。 リリースと検証の詳細:docs/releasing.md。

MCP のセットアップ(Cursor など)

ローカル仮想環境(推奨。ヘッド付きキャプチャにはディスプレイが必要です):

{
  "mcpServers": {
    "hardly": {
      "command": "/path/to/hardly/.venv/bin/python",
      "args": ["-m", "hardly"]
    }
  }
}

Windows では ...\\.venv\\Scripts\\python.exe を使用してください。hardly serve は同じサーバーを起動します。

Docker(オフライン分析専用。作業ディレクトリをマウントしてください):

python scripts/build_image.py       # builds hardly-mcp:latest (Windows: scripts\deploy-docker.ps1)
{
  "mcpServers": {
    "hardly": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
               "-v", "/home/me/work:/workspace",
               "-e", "HARDLY_WORKSPACE=/workspace",
               "hardly-mcp:latest"]
    }
  }
}

マウント先のホストパスは /workspace/... に対応します。ローカルでのビルドを省略するには、hardly-mcp:latest の代わりに公開イメージ ghcr.io/b1tninja/hardly:latest を使用してください。

エージェントのオンボーディング

  • hardly_guide_task_plan、hardly_guide_mode、hardly_server_status(MCP が古い場合は、サーバーを再起動してください)、hardly_guide_help(topic)。
  • MCP プロンプト:analyze_har、discover_apis、capture_portal、document_api、find_auth_flow、reverse_engineer_api、build_client_sdk、diagnose_blocked_capture、verify_client。
  • MCP リソース:hardly://cheatsheet と、同梱ドキュメント用の hardly://docs/<name>。
  • エージェントスキル:hardly skill install [--dest DIR](デフォルトは ~/.claude/skills/hardly)、または hardly skill print。ソース:skills/hardly。

ドキュメント

ドキュメント内容
docs/README.mdすべてのドキュメントのインデックス
docs/scope.md対象範囲と対象外の範囲、変更チェックリスト
docs/cheatsheet.md1 ページのクイックリファレンス
docs/concepts.mdセッション、インデックス、秘匿化、モード
docs/sdk-workflow.mdキャプチャからクライアント SDK までの手順
docs/reporting.mdhardly_session_report の検出結果
docs/catalog.mdターゲットカタログ、TargetAdapter、一括検証
docs/capture.mdヘッドレス/対話型キャプチャ、レシピ、環境変数
docs/technologies.mdテクノロジーごとの検出内容
docs/architecture.mdデータフローと設計ルール
docs/troubleshooting.md初回使用時によくある問題
docs/tools.mdすべての MCP ツールの生成されたリファレンス
docs/cli.mdCLI の文法とすべてのコマンド(自動生成)
docs/api-stability.md公開対象と v1 の互換性ポリシー
docs/api-decisions.mdv1 の名称の選定方法、旧名称から新名称への対応

ライブラリとしての使用

from hardly import open_session

with open_session("capture.har") as s:      # in memory; pass output_path= to save the index
    print(s.conn.execute("select count(*) from entries").fetchone()[0])

開発とテスト

pytest -q                 # offline; HARDLY_LIVE_CAPTURE=1 enables live Playwright tests
ruff check .

公開デモサイトに対するライブ負荷テスト(非公開 HAR は不要):hardly soak live --list を実行してから、hardly soak live(または --ids datatables-ajax,quotes-login,…)を実行します。カタログには、ループバックの WebForms/トークンログイン、HTML/AJAX テーブル、フォームログイン、GraphQL、JSON/OpenAPI が含まれます。hardly.live_targets と docs/test-targets.md を参照してください。 CONTRIBUTING.md、AGENTS.md;リリースノートは CHANGELOG.md にあります。

セキュリティ

HAR ファイルには、有効なパスワードやセッショントークンが含まれていることがよくあります。hardly はデフォルトで秘匿化しますが、キャプチャは機密情報として扱ってください。コミットしたり共有したりせず、漏えいした場合は認証情報をローテーションしてください。アクセス権のあるターゲットに対してのみ hardly を使用してください。SECURITY.md を参照してください。

ライセンス

MPL-2.0。生成された出力(スタブ、OpenAPI、レポート)は対象外です。NOTICE.md を参照してください。

コメント

MCP は初めてですか?

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

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