mcpField
O
oldweb-logs

oldweb-logs

リモート
oldweb.tech開発ツール05 日前に更新
リポジトリ公式サイト

oldweb-logs について

ログの解析、CI の失敗、取得した HTTP メタデータ、制限付き JSON 設定を調べる読み取り専用 MCP サーバーです。問題を調査する開発者向けで、ログは一時処理され、保存されません。

主な機能

  1. 01対応形式のログ解析
  2. 02CI 失敗の確認
  3. 03取得した HTTP メタデータの分析
  4. 04文書化された JSON Schema サブセットの検証
  5. 05上限付きの構造化結果

活用シーン

  1. 01デバッグ時のログ調査
  2. 02失敗した CI 実行の調査
  3. 03取得した HTTP メタデータの確認
  4. 04対応 Schema による JSON 設定の検査

MCP 対応

MCP クライアントに読み取り専用のログ・診断ツールを提供し、安定したフィールドと説明用の admin テキストを返します。ログは一時的に解析され、保存されません。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.oldweb.tech/logs/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

5
パラメーター型必須説明
textstringはい最大 256 KiB、ログ行数は 1,000 行です。一時的に処理されます。
formatenumいいえauto | json | rfc5424 | rfc3164 | apache-common | apache-combined | windows-event | common-pid
recordLimitintegerいいえ返却レコード数の上限です。カウントはすべての行を対象とします。デフォルトの 20 はコンテキストを節約します。最大 200 を指定するか、0 を指定するとカウントのみを返します。

詳細

OldWeb MCP 実験

ステートレスな公開 MCP エンドポイントが 3 つ、読み取り専用ツールが 13 個、Azure Container App が 1 つです。

Version 1.1 では、デプロイ準備状況とオフラインのメール追跡を、診断、CI の失敗、記録された HTTP メタデータ、上限付き JSON 設定検証、ログとまとめています。各結果には、安定したプログラム向けフィールドと admin による説明が含まれます。読みやすいテキストは 1,500 文字に制限されています。メール認証に関する主張は検証されません。JSON 検証は、明示的に文書化されたサブセットをサポートし、リモート参照、正規表現、フォーマット、結合子は拒否します。重複結果では、詳細なペアを 200 件までに制限し、正確な overlapCount と省略メタデータを返すようになりました。

100 ケース/サーバーのマトリックスと実際の小型モデル評価については TEST-PLAN.md を、再実行については 評価スキル を参照してください。Azure リソースのサイズ、クォータ、予算ガード、パイロット終了日は変更されません。Codex の評価では、オペレーターのアカウント利用枠を別途消費します。

今後の一括処理と学習

今後の一括処理と学習の計画では、標準アーティファクトの取り込み、大規模データセットの決定論的処理、プライバシーゲート、証拠に紐付いた教訓の低コストな Azure モデルによる草案作成を提案しています。整合性/プライバシーのベンチマークと、ホスティング/推論の統合予算制御とともに、Container Apps Jobs、Functions、Data Factory を比較しています。最初の一括処理ワーカーは、合成データのみを扱う手動 Container Apps Job として実装され、検証済みです。公開入力は引き続き一時的に扱われます。プライベートアップロードとホスト型推論は引き続き保留中です。

開発

Node 24 以降が必要です。このディレクトリで npm ci --ignore-scripts、npm test、npm start の順に実行してください。別のターミナルで npm run smoke を実行します(診断のスモークテストでは公開 DNS に問い合わせます)。ローカル URL:http://127.0.0.1:8080。起動時には本番環境のシークレット/設定が必要です。本番環境ではローカルメモリのクォータを使用できません。

src/tools.ts でツールのスキーマと説明を管理します。スキーマを変更した場合は、ビルド後に node scripts/export-schemas.mjs を実行してください。ログのフィクスチャとパーサーコードは ../system/ から直接再利用されます。IPv4 ブラウザーヘルパーと MCP ヘルパーは ../nettools/subnet-core.js を共有します。JavaScript の安全な整数範囲を超える件数は、10 進文字列としてシリアライズされます。

デプロイ

基盤の Bicep テンプレートは、専用リソースグループの内容を作成します。内容は、ACR Basic、マネージド ID、テーブルストレージ、Application Insights、60 日間の Log Analytics、Consumption 環境、Workbook、月額 25 ドルの予算です。テンプレートは eastus2 の rg-oldweb-mcp-experiment にデプロイしてください。budgetStart には、現在の月の UTC における初日を指定します。アプリテンプレートは初回のブートストラップ用です。以後のリリースでは scripts/deploy.ps1 を使用します。

ビルドコンテキストはリポジトリのルートです。.dockerignore では、サーバー、ロックファイル、共有パーサー、共有サブネットモジュールのみを許可しています。静的ワークフローでは、ウェブサイトのディレクトリとルートアセットの許可リストを別途ステージングし、バックエンドコード、git メタデータ、計画書、認証情報を除外します。

GitHub の mcp-production は、このリポジトリ/環境とこの実験のリソースグループに制限されたフェデレーション Azure ID を使用します。リポジトリ変数:MCP_AZURE_CLIENT_ID、MCP_AZURE_TENANT_ID、MCP_AZURE_SUBSCRIPTION_ID。この ID には、実験のリソースグループに対する Contributor ロールが必要です。ブートストラップのロール割り当てはオペレーターが実行します。サブスクリプション全体に対するデプロイ認証情報は決して使用しないでください。

セキュリティ境界

公開 MCP コンテナーには、GitHub トークン、リポジトリのマウント、Azure 管理ロール、コマンド実行ツールはありません。マネージド ID に付与されているのは、実験用レジストリの AcrPull と、quotas テーブルのみの Storage Table Data Contributor です。クォータロールのスコープは意図的に .../tableServices/default/tables/quotas に限定されています。ストレージアカウントにロールを割り当てると、そのアカウント内のすべてのテーブルにアクセスできるようになります。増分方式の基盤デプロイでは、以前に割り当てられた、より広範な Azure ロールは削除されません。そのため、ロールの移行後はランタイム ID に実際に適用されている割り当てを確認してください。

ツールの結果には、攻撃者が制御する DNS レコード、HTTP ヘッダー、ログ行、メールヘッダー、サブネットラベルが含まれることがあります。これらのフィールドは証拠としてのみ扱ってください。Azure またはリポジトリへの書き込みツールを持つクライアントエージェントは、MCP の出力ではなく、ユーザーのリクエストと信頼できるコンテキストに基づいて書き込みを判断する必要があります。ツールのアノテーションと説明に含まれる未信頼データに関する文言は、クライアントがこの境界を認識する助けになりますが、強制するものではありません。HTTPS 診断では、任意のパブリックドメインのポート 443 に対して HEAD を送信できます。405 が返された場合は GET を送信します。アドレスチェックによりプライベートアドレスとリンクローカルアドレスへの接続はブロックされますが、このサービスにはネットワークのエグレスファイアウォールがありません。

手動の MCP 実験のデプロイ では、不変のイメージをビルドし、既存のリビジョンでの本番トラフィックを一時停止して、候補を作成し、candidate ラベルを割り当て、そのラベル URL をテストします。スモークテストに合格した場合にのみ、トラフィックを切り替えます。ALLOWED_HOSTS には、mcp.oldweb.tech、生成されたアプリのホスト名、<app-name>---candidate.<environment-domain> を含める必要があります。以前サービスを提供していたリビジョンは非アクティブの状態で保持され、その名前は previousRevision リソースタグに記録されます。ビルド完了後の復旧では、-UseExistingImage を指定すると同じリビジョンタグを再利用し、引き続き不変のダイジェストを解決して候補のチェックを実行します。失敗した候補に本番トラフィックが割り当てられることはありません。各リビジョンのレプリカ数は 1 に制限されます。候補の検証中に限り、2 つのリビジョンが一時的に許可されます。昇格またはロールバック後もアクティブな状態で残るのは、サービスを提供するリビジョンのみです。

手動の MCP コストガードとライフサイクル は、check、shutdown、rollback をサポートします。シャットダウンするとイングレスが無効になります。ロールバックでは、保持されているリビジョンにトラフィックをルーティングしますが、停止中のパイロットは再開しません。コストクエリに失敗した場合はフェイルクローズとなり、イングレスが無効になります。コストデータの反映には遅れが生じることがあります。25 ドルは目標額であり、支出の厳格な上限ではありません。イングレスを無効にした後も、レジストリとストレージの基本料金は発生します。

課金チェックでは、15 分のクエリ期限内に最大 6 回試行します。各リクエストのタイムアウトは最大 30 秒です。このチェックでは Azure のリトライヘッダーを読み取ります。要求された待機時間とフォールバックの待機時間のうち、長い方を使用します。フォールバックの待機時間は 30 秒、60 秒、120 秒、180 秒、180 秒です。要求された待機時間が残りの期限を超える場合、チェックは早期の再試行を行わずにパブリックアクセスを一時停止します。HTTP 408、HTTP 429、特定のサーバーエラー、トランスポートエラーは、再試行を引き起こすことがあります。それ以外の HTTP エラーが発生すると、検証は直ちに停止します。課金データが無効または不完全な場合も、検証は停止します。検証を最後まで完了できなかった場合は、パブリックアクセスを一時停止します。検証済みの支出が 20 ドル以上の場合も、パブリックアクセスを一時停止します。テレメトリの障害によって、検証済みの課金判定が変わることはありません。Azure にアクセスせずにこれらの条件を確認するには、./scripts/test-cost-guard.ps1 を実行してください。課金修復レポートを参照してください。

ランタイム構成

公開アクセスアラートは、Azure がイングレスの一時停止を報告した際にメールを送信します。コストガードとは独立して動作します。

設定目的
HMAC_SECRET実験ごとにランダムに生成する呼び出し元フィンガープリント用シークレット。Container App のシークレットとして保存します
TEST_SECRETx-oldweb-test ヘッダー用の別個のランダムなシークレット。内部メトリクスからの除外にのみ使用し、クォータの回避には決して使用しません
TABLE_ENDPOINT、AZURE_CLIENT_IDマネージド ID による永続クォータテーブルへのアクセス
APPLICATIONINSIGHTS_CONNECTION_STRING実験専用のテレメトリ送信先
ALLOWED_HOSTS、ALLOWED_ORIGINSカンマ区切りの完全一致リクエストホスト/オリジン許可リスト
EXPERIMENT_START、EXPERIMENT_ENDUTC の開始時刻と終了時刻。終了時刻になると、ツールリクエストは自動的に停止します
LISTED_ATディレクトリへの実際の掲載開始時刻。公開後にのみ設定します
DISABLEDアプリケーションレベルの緊急停止

ACA は唯一のイングレスプロキシでなければなりません。送信元レート制限では、呼び出し元が指定した左端のエントリではなく、ACA が追加した右端の X-Forwarded-For IP を信頼します。イングレストポロジを変更する場合は、デプロイ前にこのルールを再検証してください。不明な送信元アドレスには、保守的なクォータが共通で適用されます。呼び出し元のグループ化には正規化したユーザーエージェントも使用しますが、制限には使用しないため、ユーザーエージェントを変更しても送信元クォータは回避できません。

診断を同時に受け付けるのは最大 4 件です。DNS では Google DoH を使用し、EDNS クライアントサブネットは無効にします。HTTPS では先に A/AAAA レコードを解決し、公開されていない結果を拒否したうえで、ホスト名の TLS 検証を維持しながらソケットを検証済みアドレスに固定します。リダイレクトごとに再検証します。リクエスト本文のダウンロード、Cookie、任意のポート、認証情報には対応しません。

テレメトリとプライバシー

アプリケーションのテレメトリは明示的に構成され、自動的な HTTP 計測は行いません。引数、URL、スタックトレースを収集するリクエスト/依存関係/例外コレクターを追加しないでください。受け付けた各 MCP リクエストでは、許可リストに登録されたメソッド/ツール/結果のフィールドとバイト数を記録します。初期化時に限り、サニタイズ済みの自己申告によるクライアントメタデータを記録します。正確なセッション ID を推定することはありません。

呼び出し元のフィンガープリントには、HMAC(IP + 正規化したユーザーエージェント)を使用します。これはグループ数の推定値であり、個人の識別やエージェントの検証を行うものではありません。汎用的なプローブは集約されます。内部スモークテストの呼び出しには、定数時間で検証されるシークレットを付与し、Workbook のクエリから除外します。テレメトリのオーバーフローや送信失敗は、復旧時にギャップ数として記録されます。ワークスペースの上限到達イベントもデータの欠落を示します。何も記録されていないだけでは、使用量がゼロだったとは証明できません。

ログは一時的に解析するのみで、永続化しません。Windows CSV の論理レコードを除き、自動モードでは行ごとに形式を特定します。優先度プレフィックス付きの RFC3164 行など、既存のパーサーでサポートされていないケースは、明示的に未解析のまま扱います。年とタイムゾーンが完全に指定されていないタイムスタンプは、範囲から除外します。未解析の生ログ行は返却も記録もしません。

保持期間は 60 日です。実験を終了する際は、フィンガープリント用シークレットを破棄してください。分離されたリソースグループを削除する前に、集計結果をエクスポートしてください。また、エンドポイントが残存しないよう、先に DNS レコードを削除し、レジストリへの掲載を終了してください。

発見とレビュー

10月10日、ユーザーは公式レジストリへの掲載を進めました。バージョン1.1.0の3つのエントリーはすべて有効で、最初の掲載日時は 2026-10-10 17:32:51 UTC です。サイトにリンクされたベースラインの期間は、7日間ではなく約24時間14分でした。その後、ユーザーは終了日を2027年2月15日まで延長しました。この承認済みの期限を維持し、レビューには実際の各フェーズのタイムスタンプを使用してください。掲載の証拠と掲載レポートを参照してください。10月16日のフォローアップでは、レジストリへの重複掲載を行わずに、未掲載の無料ディレクトリを対象としています。

公開されている人気度の推定値とその限界については、10月10日の人気度調査スナップショットを参照してください。

カスタムドメイン、サイトのドキュメント、テレメトリー、コストガードが検証された時点でのみ、計測を開始してください。1~7日目はOldWebリンクとサイトマップによる発見のみを対象とします。当初の計画では7日間が経過してから掲載する予定でしたが、上記のとおり、10月10日に即時掲載が承認されました。残りの申請については、registry/にある3つのマニフェストを使用し、GitHubの名前空間検証を通じて公式MCP Registryに申請してください。Smitheryにも申請し、PulseMCPは申請を受け付けている場合のみ申請してください。新たな掲載URLと実際のタイムスタンプをexperiment-status.jsonに記録してください。既存の最初の掲載タイムスタンプとLISTED_ATは維持してください。ディレクトリへの掲載は、エージェントとの接続を意味するものではありません。

7日目、14日目、37日目にレビューを行ってください。Workbookには、発見状況、呼び出し、結果、クライアントの申告、リピートグループ、テレメトリーの欠落が表示されます。サービスの対象を拡大するのは、外部からの成功した呼び出しが100件以上、おおよそのグループが5つ以上、3日間にわたり活動したグループが2つ以上あり、有効な受け入れ済み呼び出しの成功率が95%以上の場合に限ります。この分母から検証エラー、スロットル、内部テストを除外し、ツールエラーは別途報告してください。掲載の遅延、停止、データの欠落がある場合、結果は結論が出ないものとなります。当初の最終レビューは37日目でした。10月10日、運営者は明示的に追加の暦3か月を承認し、終了日は2027年2月15日となりました。延長後の最終レビューにも同じ判断基準を適用してください。

公開とレビューに関する今後の作業は、ローンチ後に関連するCodexタスクで予定されています。GitHubの6時間ごとのガードが、コストチェックとパイロット終了時のイングレス自動停止を、それぞれ独立して処理します。

ライブデプロイ(2026-10-09)

実装はmainで公開されています。OldWeb のランディングページとプライバシーに関する開示情報は公開済みです。GitHub MCP テスト、静的サイトのデプロイ、OIDC コストガードの実行が成功しました。6 時間ごとのガードは main でスケジュールされています。別途、Codex によるレビューで、毎週金曜日の 09:00 America/New_York に使用状況が報告されます。

Hostinger の DNS は検証済みです(TTL 300):

種別ホスト値
CNAMEmcpoldweb-mcp.greencoast-980eedf2.eastus2.azurecontainerapps.io
TXTasuid.mcp94B9870ED8C129786DAEB4D8C61BE643F1CF0CBBD321D7DB9343E368FC34F78E

Azure のマネージド証明書は SNI を有効にしてバインドされています。3 つすべてのエンドポイントで、https://mcp.oldweb.tech を通じた初期化、検出、実際のツール呼び出しが成功しました。実際のベースライン日付と、最新の検証済みリビジョンはexperiment-status.jsonに記録されています。ユーザーがスケジュールを前倒ししたため、3 件の公式 Registry リスティングは 10 月 10 日に公開されました。

検証:MCP テスト 10 件すべてと、既存のパーサーアサーション 116 件すべてが成功し、Bicep のコンパイルと静的アーティファクトのステージングも成功しました。Inspector と独立した SDK クライアントでエンドポイントを検証しました。ライブ呼び出しにより、マネージド ID を介したクォータへのアクセスを確認しました。AppEvents の保持期間は 60 日です。アプリケーションのテレメトリと Container App のコンソールログには、特徴的なテストログ文字列も、照会された診断ドメインも含まれていませんでした。内部クリーンアップ用のプローブには内部用の印が付けられています。候補に障害が発生した場合も、以前のサービス提供中のリビジョンが維持されました。ロールバックとパブリックイングレスの停止は、ローンチ前に正常にテストされました。

コストガードが最初に投稿した月初来の金額は $0.00 でしたが、報告には遅延が生じる場合があります。イングレスを停止した後も、Registry とストレージの料金は発生し続けます。予算または終了日の到来によって停止した後は、明示的な運用判断なしにパブリックトラフィックを再開してはなりません。

ベースラインは2026-10-09 17:19:14 UTCに開始しました。アプリケーションの期限は2027-02-15 17:19:14 UTCです。6 時間ごとのガードは期限後もイングレスを無効にします。ユーザーの依頼により、公式 Registry への公開は 10 月 10 日に完了しました。残りの無料ディレクトリへの登録は 10 月 16 日 15:00 America/New_York に予定されており、実際の掲載日は個別に記録されます。週次の使用状況レビューは、引き続き毎週金曜日の 09:00 America/New_York に実施されます。最終パイロットレビューは、2027 年 2 月 15 日 15:00 America/New_York に予定されています。

本番ワークフローの証跡:https://github.com/palthainon/oldwebtech/actions/runs/37964839710 。最初のコストガードの実行:https://github.com/palthainon/oldwebtech/actions/runs/37963952062 。ベースライン構成は、ローンチが記録される前に、候補とカスタムドメインのスモークテストに合格しました。

レコード予算:parse_logs の返却レコード数のデフォルトは 20 です。クライアントは recordLimit に 0~200 を指定できます。件数は常に、送信されたすべての行を対象とします。直接呼び出すパーサーヘルパーは、ブラウザー/フィクスチャとの互換性のため、従来どおりデフォルトで 200 を使用します。

承認済みの3か月延長(2026-10-10)

承認済みの期限は2027年2月15日 17:19:14 UTC(東部時間12:19:14)で、11月15日から暦上3か月後です。公開アプリと手動の合成ワーカーの両方でこの期限を使用し、ロールバック待機環境でもこの期限を維持します。月額目標の25ドル、月額一時停止しきい値の20ドル、クォータ、手動専用ワーカーに変更はありません。これは月額目標であり、実験全体の上限額が25ドルという意味ではありません。延長の検証を参照してください。

生のテレメトリは引き続き60日後に失効します。金曜日のレビューでは、クエリ定義、内部テストの除外、欠損フラグを含む、プライバシーに配慮した重複のない週次集計レポートをreports/weekly/にエクスポートします。これらを過去の期間に使用し、呼び出し元の推定値は、文書化された期間内で報告してください。週次の一意グループ数から、生涯にわたる一意の呼び出し元数を確定することはできません。過去の証拠が欠けているため、この評価は確定できません。最終レビューでは、新しい期限までの実際の利用状況を確認します。それ以降も運用を続けるには、あらためて明示的な決定が必要です。

10月16日のディレクトリ確認では、公式レジストリに有効なエントリーが3件あることを確認しました。Smitheryにはアカウント認証が必要です。PulseMCPの投稿受付は引き続き停止しています。いずれの追加ディレクトリにも投稿していません。

10月19日のSmitheryへの投稿はサインインには成功しましたが、公開時にHTTP 403で失敗しました。Smitheryへの掲載は確認されていません。

無効なツール呼び出しは、JSON-RPCコード-32602を伴うHTTP 400を返します。安定したメッセージは引き続きinvalid_tool_or_argumentsです。error.dataオブジェクトには、理由、安全なフィールドのヒント(最大8件)、省略された問題の数、サポートされているツール名、静的な有効なtools/callの例が含まれます。ヒントには、既知のトップレベルスキーマフィールドのみが表示されます。指定された値、動的なフィールド名、生のバリデーターのメッセージは含まれません。テレメトリには結果とサイズが記録されますが、修正用ペイロードやリクエスト引数は記録されません。

検証再試行の測定では、エラー後に既知のツール呼び出しが成功するかどうかを推定します。Azure Workbookと週次レビューでは、既存のメタデータを使用します。プライベートな引数は記録しません。

コメント

MCP は初めてですか?

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

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