TypeSafe について
TypeSafe は、TypeSafe の Jev で確率、選択肢、段階評価などの型付き判定を行う MCP サーバーです。単件または最大 1,000 行のバッチに対応し、閾値による判定や絞り込み、集計、保存ができます。
主な機能
- 01二択命題の確率を推定
- 02確率付きで選択肢を選ぶ
- 03順序付き尺度で状態を評価
- 04最大 1,000 行のバッチ処理
- 05閾値判定・絞り込み・集計
活用シーン
- 01リモートのシニア職求人を抽出
- 02サポートメールの緊急度判定と担当振り分け
- 03取引を分類して件数を集計
- 04顧客離脱の可能性でレビューを順位付け
MCP 対応
MCP サーバーは TypeSafe Jev による単件およびバッチの判定ツールを MCP クライアントに提供します。バッチはファイルから読み込め、全結果を JSONL として保存できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| model | string | いいえ | health から取得するモデル。デフォルト:サーバーの jev-latest。 |
| state | any | はい | 判定対象:テキスト、または名前付きフィールドを含む JSON(レコード、スレッド、メタデータ付き投稿)です。質問では `posting.location` のようにフィールドを指定できます。 |
| questions | object | はい | 質問 ID -> 質問。同じ状態に対する独立した判断はすべて 1 回の呼び出しにまとめます。並行して実行され、互いの結果は参照できません。 |
詳細
TypeSafe MCP サーバー
TypeSafe の Jev に尋ねて、AI アシスタントから型付きの確度調整された判断を得られます。はい/いいえで答えられる文がどのくらい当てはまりそうか、選択肢のどれが適切か、あるいは独自の尺度でどの位置に当たるかを確認できます。同じ質問を1つの状態に対して、または最大1000行に対して一度に行えるため、各項目を読むことなく、投稿、取引、メールをアシスタントに振り分けさせられます。すべてのツールは読み取り専用です。どこにも変更を加えず、money を扱うツールもありません。
必要なもの: TypeSafe アカウントと、コンソールから取得した API キーです。呼び出し料金は入力トークン数に応じて課金され、1回あたり1セントの端数程度です。Jev は約0.5秒で回答します。
できること
- 「postings.jsonl にある300件の投稿を確認して、リモート勤務のシニア職を、Jev の確信度とともに一覧にしてください。」
- 「このサポートメールは緊急ですか?請求、技術、営業のどのチームが対応すべきですか?」
- 「先月の600件のカード取引を、食料品、交通、ソフトウェア、その他に分類し、それぞれの件数を数えてください。」
- 「これら40件のレビューについて、顧客が離れる可能性を評価し、最もリスクの高い10件を見せてください。」
- 「これらの文章のうち、『パスワードをリセットする方法』への回答になっているものはどれですか?Jev が確信を持てないものには、私が読むための印を付けてください。」
インストール
Claude Code の場合:
claude mcp add typesafe -e TYPESAFE_API_KEY_FILE="<path to API key file>" -- npx -y @foreverworks/mcp-typesafe
Claude Desktop(Settings、Developer、Edit Config)や、その他ほとんどのクライアントでは、同じコマンドを JSON として読み込みます。
{
"mcpServers": {
"typesafe": {
"command": "npx",
"args": ["-y", "@foreverworks/mcp-typesafe"],
"env": {
"TYPESAFE_API_KEY_FILE": "<path to API key file>"
}
}
}
}
どちらも Node 22.19 以降で公開パッケージを実行します。VS Code と Claude Desktop バンドルでは、サーバーの追加時に TYPESAFE_API_KEY_FILE の入力を求められます。一方、Cursor は環境変数(${env:TYPESAFE_API_KEY_FILE})から値を読み取るため、Cursor の起動前に設定してください。設定では、この変数に格納する値について説明しています。
クローンから実行する場合
git clone https://github.com/foreverworks/mcps.git && cd mcps
npm ci && npm run build
claude mcp add typesafe -e TYPESAFE_API_KEY_FILE="<path to API key file>" -- node "$PWD/servers/typesafe/dist/index.js"
JSON 設定では、コマンドは node、唯一の引数は servers/typesafe/dist/index.js のフルパスです。複数のクライアントで1つの実行中インスタンスを HTTP 経由で共有する方法については、docs/deploying.md を参照してください。
設定
| 変数 | 必須 | 意味 |
|---|---|---|
TYPESAFE_API_KEY_FILE | はい | API キーを格納したファイルです。ローカル実行では、代わりに TYPESAFE_API_KEY にキーそのものを設定できます。 |
TYPESAFE_MODEL | いいえ | 呼び出し時にモデルが指定されていない場合に使用するモデルです。デフォルトは jev-latest で、最新の Jev に追従します。 |
TYPESAFE_BASE_URL | いいえ | デフォルトは https://api.typesafe.ai です。 |
TYPESAFE_OUTBOX_DIR | いいえ | save を指定した ask_batch が JSONL を書き込む場所です。デフォルトは状態フォルダー内の outbox/ です。ファイルは 0640 で書き込まれるため、デプロイ時にユーザーのグループとフォルダーを共有できます。 |
TYPESAFE_STATE_DIR | いいえ | 状態フォルダーです。デフォルトについては docs/configuration.md を参照してください。 |
キーがなくてもサーバーは起動し、ツールを一覧表示します。各呼び出しは、変数名を示す config エラーを返します。ask_batch は MCP_FILE_ROOTS から items_file を読み込みます。この変数と、すべてのサーバーで共有するその他の変数については、docs/configuration.md を参照してください。
API キーの取得
- https://console.typesafe.ai にサインインし、Keys を開きます。
- キーを作成し、自分(またはサーバーのユーザー)だけが読み取れるファイルに書き込みます。
TYPESAFE_API_KEY_FILEにそのファイルを指定します。
各デプロイに専用のキーを設定すると、個別に取り消したり、コンソールの使用状況ページで識別したりできます。TypeSafe のコンソールで発行されたキーのみ使用できます。再販業者のキーは、その再販業者のゲートウェイ経由でのみ使用できます。
初回実行
アシスタントに TypeSafe の health チェックを実行するよう依頼してください。応答には、接続先の API、デフォルトのモデル、キーでアクセスできるモデルが含まれます。キーがない場合は config、拒否された場合は auth と表示されるため、バッチを開始する前に確認できます。
ツール
read は何も変更しません。ここにあるツールはすべて読み取り専用です(入力トークンに対する課金は計測であり、支払いではありません)。
| ツール | アクセス | 機能 |
|---|---|---|
health | 読み取り | キーが存在し、受け入れられているか、およびアクセス可能なモデルを確認します。 |
ask | 読み取り | 1 つの状態について、すべての質問を 1 回の往復で行います。TypeSafe が返す回答から、Score の legend を除いたものを返します。 |
ask_batch | 読み取り | 入力またはファイルから指定された最大 1000 件の状態について、同じ質問を行います。デフォルトでは 8 件を並行処理し、質問ごとの要約と簡潔な行を返します。save を指定すると、全行を JSONL として outbox に保存します。しきい値に基づく任意の実行、レビュー、または棄権の判定と、重要な行のみを一覧表示する where、top、counts も利用できます。 |
質問の種類は、yes/no の文が成り立つ確率を示す noul、2~255 個の選択肢それぞれの確率を示す choice、または最低から最高の順に並べた 2~10 段階に状態を位置付ける score です。
トラブルシューティング
config。 キーがありません。コンソールで取得したキーを格納したファイルを TYPESAFE_API_KEY_FILE に指定するか、ローカル実行では TYPESAFE_API_KEY を設定してください。
auth。 TypeSafe がキーを拒否しました。キーが console.typesafe.ai/keys にまだ存在することを確認し、取り消されている場合はファイルを差し替えてください。
input。 指定された質問には回答できません。メッセージにフィールド名が示されます(choice には少なくとも 2 個の選択肢が必要で、score は 2~10 段階です)。行数が 20 を超える場合、すべての行に id が必要です。
rate_limited。 サーバー独自の再試行後も、TypeSafe によるスロットリングまたは過負荷状態が続いています。1 分待つか、concurrency を下げてバッチを送信してください。
api。 その他の拒否、再試行を経ても解消しない 5xx、または接続なし(ステータス 0)を示します。1 回再試行してください。解消しない場合は health を実行し、サーバーのログを確認してください。
drift。 TypeSafe が、このサーバーで認識できない形式で応答しました(SDK の型定義が更新されている可能性があります)。報告してください。
仕組み
ネットワーク。 評価には副作用がないため、各リクエスト
(POST /v1/systemone、GET /v1/models)は再試行できます。5xx または接続切断の場合は再試行し、429 または 529(「過負荷」)の場合は、TypeSafe の SDK と同様にレート制限として待機します。呼び出しは 1 分後にタイムアウトします。すべての回答は SDK の型(型のみの @typesafe-ai/sdk、src/domain/schema.ts)に照らして検証されます。
バッチ。 バッチは失敗した行があっても処理を続けて報告しますが、すべての行が失敗する原因(キーがない、キーが拒否されたなど)がある場合は停止するため、1,000 行すべてがそれぞれ 401 を受け取ることはありません。回答は ID で行と結び付けられます。20 行を超える場合は ID が必須です。行を目視で確認できる間だけ、位置による結び付けが安全だからです。
ファイルからの行。 items に行を入力する代わりに、items_file を渡します。MCP_FILE_ROOTS 内のパスで指定する、1 行につき {"id", "state"} オブジェクトが 1 つある JSONL、またはそのようなオブジェクトの JSON 配列を指定できます(スクリプトからの場合は、sha256 とともに content_base64 として渡すこともできます)。行がモデルを通過することはないため、処理中に変更されることはありません。不正な行があると、何も送信される前に行番号とともに呼び出しが失敗します。応答にはファイルの sha256 とサイズが記載されます。
判定。 質問に thresholds を設定すると、各行の回答の確度に応じて、回答には act(十分確信があり、実行に移せる)、review(人が確認すべき)、または abstain(使用しない)が付与されます。確度は、二択質問では |p - 0.5| x 2(p が 0.95 でも 0.05 でも 0.9)、選択肢またはスコアでは TypeSafe が返す信頼度です。確度は小数点以下 3 桁に切り捨てられ、行に表示される数値となります。実行するには act_above を厳密に上回り、レビュー対象とするには review_above を上回る必要があります。しきい値を調整したら、バージョンが固定された Jev に model を設定してください。jev-latest はしきい値の対象となるモデルが変わる可能性があります。
行の選択。 where には、各質問で指定したすべての条件を満たす回答済みの行だけが含まれます。二択質問では true または false(集計で数える「はい」は p >= 0.7、「いいえ」は p <= 0.3)、選択肢ではラベル、行に表示される値では min と max、さらに verdict を指定できます。top は、ある質問で p またはスコアが最も高い k 行を残し、counts は where が残した行の回答を集計します。サマリーには引き続きすべての行が含まれます。リクエストの送信前にすべての条件が検証されるため、選択肢にないラベルがあると、1,000 行の処理ではなく呼び出しが失敗します。
npx tsx scripts/smoke.ts は、数千の入力トークンを使って、実際の API に対してビルド済みサーバーをテストします。health、各質問タイプにつき 1 回の ask、outbox に保存する 5 行のバッチ、そして TypeSafe に到達しない入力エラーを実行します。
制限事項
- 判定のみです。 Jev はテキストを作成せず、複数ステップの推論も行いません。ルール、検索、算術処理はコードで行い、確率にしきい値を設定してください(
thresholdsで質問ごとに設定できます)。 whereの条件は「and」でのみ結合されます。 「or」を使う場合は、保存した JSONL から行を読み込むか、選択肢を明記した質問をしてください。- 1 回の呼び出しにつき最大 1,000 行です。それを超える場合は分割してください。
listで別の指定をしない限り、バッチの応答にはすべての行が記載されます。 大きなバッチでは、saveとともにlist: "none"または"failed"を渡し、JSONL を読み込んでください。
TypeSafe 用のその他のサーバー
2026-10-15 に検索しました。TypeSafe が公開しているものはありません。GitHub の組織には SDK、エージェントスキル、n8n ノードがあります。npm にはコミュニティ製のサーバーが 2 つあります。
typesafe-mcp:Bun 上で動作する stdio 方式で、キーは環境変数に設定します。glob に一致するファイルを使ったバッチ処理ができ、各回答に act、review、abstain の判定が付きます。@y0usaf/typesafe-mcp:stdio 方式で、evaluateツールが 1 つあります。
このサーバーは、ほかのサーバーが提供していない機能を備えています。独立したサービスとして HTTP 経由でも実行でき、呼び出すクライアントには読み取られないファイルにキーを保存します。バッチのすべての回答を JSONL として outbox に保存し、ファイルの SHA-256 を記載します。また、このリポジトリのすべてのサーバーが共有する規約に従います。判定と where、top、counts は typesafe-mcp に準拠し、しきい値は呼び出しごとではなく質問ごとに設定します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。