Wire-schema validation does not see raw-HTTP / inline-mock scenario traffic
メンテナーはふだん 7 日以内に返信
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 68/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- testing-qa
調査の方向性
src/scenarios/client/ にある一覧記載のクライアントシナリオと、src/scenarios/server/ にあるサーバーシナリオから始め、次に TypeScript SDK everything-client に対してコアクライアントスイートを実行し、不足している wire-schema チェックを再現します。共有のバージョン対応モックサーバーと raw fetch または Client のパスを追跡し、request-metadata.ts、mrtr-client.ts、json-schema-ref-deref.ts、http-base.ts 内のインラインモックも確認します。バイパストラフィックが検証され、意図的な違反がオプトアウトでき、draft server/discover モックが現在の _meta serverInfo 形式を使用していれば完了です。
索引モデルが issue の本文から書いたものです。
説明
#399 validates every JSON-RPC message that flows through the shared choke points (the SDK transport hooks and the version-aware mock server). Traffic that bypasses those choke points is never schema-checked, and the bypass surface is wider than the note in the PR body (which only mentions the client-auth express mock).
Known uninstrumented paths:
Client scenarios with hand-rolled inline HTTP mocks (requests from the client under test are not validated):
src/scenarios/client/initialize.ts— the client'sinitializerequest is never schema-checkedsrc/scenarios/client/sse-retry.tssrc/scenarios/client/elicitation-defaults.tssrc/scenarios/client/http-base.tsand its subclasses (request-metadata.ts,mrtr-client.ts,json-schema-ref-deref.ts)- the client-auth scenarios' express mock (already disclosed in #399)
Server scenarios using raw fetch or their own SDK Client (messages to/from the server under test are not validated):
src/scenarios/server/sse-polling.tsandsse-multiple-streams.ts— both build their own uninstrumentedClientsrc/scenarios/server/http-standard-headers.ts,lifecycle.ts,stateless.ts— rawfetchcalls
Observable at the CLI: running the core client suite against the typescript-sdk everything-client, only tools_call reports a wire-schema-valid check; initialize, sse-retry, and every auth scenario record no wire traffic at all.
Related cleanup while touching these files: four client-scenario inline mocks still emit the pre-#3002 top-level serverInfo on draft server/discover responses instead of _meta['io.modelcontextprotocol/serverInfo'] (request-metadata.ts, mrtr-client.ts, json-schema-ref-deref.ts, http-base.ts — src/mock-server/stateless.ts was already fixed in #403).
Suggested direction: route inline client-scenario mocks through the shared version-aware mock server where feasible, and add a small validated-fetch helper for the raw-HTTP server scenarios so intentional protocol violations can opt out explicitly.
- 主要言語
- TypeScript
- スター
- 130
- フォーク
- 107
- 平均マージ
- 8日 19時間
- マージ済み PR(30日)
- 2
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
modelcontextprotocol/conformance のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
modelcontextprotocol/conformance#531 · コメント 1 件 ·
メンテナーはふだん 7 日以内に返信
-
server-stateless: 500 ms whole-request deadline in no-log-without-loglevel reports slow servers as failures対応中かも @birbprophet が 7 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
modelcontextprotocol/conformance#530 ·
メンテナーはふだん 7 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
modelcontextprotocol/conformance#519 ·
メンテナーはふだん 7 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
modelcontextprotocol/conformance#315 · コメント 1 件 ·
メンテナーはふだん 7 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
modelcontextprotocol/conformance#312 · コメント 1 件 ·
メンテナーはふだん 7 日以内に返信
modelcontextprotocol/conformance の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
AOSSIE-Org/DebateAI#611 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
openzim/mwoffliner#2933 ·
メンテナーはふだん 1 日以内に返信
-
Use the README category name for website links and submissions対応中かも @dajiaohuang が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
birobirobiro/awesome-shadcn-ui#647 ·
メンテナーはふだん 2 日以内に返信
-
Twake Drive picker: closePicker() never destroys the intent (stop() is on the promise returned by start(), not by create())対応中かも @chibenwa が今日担当しました。 オープンclaude
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
linagora/twake-calendar-frontend#1498 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
check:passed streams:add
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信