Nifra docs について
Nifraは、型付きAPI、Webアプリ、エージェント実行を統合するTypeScriptフルスタックフレームワークです。コーディングエージェント向けに、実際のプロジェクト情報や検証済みの例、型、検査機能も提供します。
主な機能
- 01型付きAPIとコード生成不要のクライアント
- 025種類のUIライブラリと複数ランタイム
- 03エージェントツールとプロトコルアダプター
- 04制限付き実行、承認、再開可能な証跡
- 05型検査とルートのセキュリティ保証
活用シーン
- 01複数ランタイム向けのフルスタックアプリ構築
- 02コーディングエージェントへのプロジェクト情報提供
- 03ページやリモートクライアントへのツール公開
- 04ルートの安全性と契約変更の検証
MCP 対応
ツールとMCP Appsを公開するMCPアダプターに加え、エージェントがルート、例、型を調べられるプロジェクトコンテキスト用MCPサーバーを提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.nifra.devclaude mcp add --transport http nifrajs-nifra-docs https://mcp.nifra.dev{"mcpServers":{"nifrajs-nifra-docs":{"type":"http","url":"https://mcp.nifra.dev"}}}Cursor で開く{"servers":{"nifrajs-nifra-docs":{"type":"http","url":"https://mcp.nifra.dev"}}}VS Code で開く{"mcpServers":{"nifrajs-nifra-docs":{"type":"http","url":"https://mcp.nifra.dev"}}}{"mcpServers":{"nifrajs-nifra-docs":{"serverUrl":"https://mcp.nifra.dev"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | number | いいえ | 返すセクションの最大数(デフォルト:3、最大:5)。 |
| query | string | いいえ | ドキュメントのセクションと照合するキーワード(インデックスの場合は省略)。 |
詳細
Nifra
AI ネイティブな TypeScript フレームワーク。
型付き API と、5 つの UI ライブラリに対応したフルスタック SSR。Bun、Node、Deno、エッジで動作する 1 つのアプリ。
人間もコーディングエージェントも安全に変更できるように構築されています。
ドキュメント · プレイグラウンド · ベンチマーク · 他のフレームワークとの比較
Nifra は、エージェントが関与する形で構築、運用、使用されるソフトウェアのためのものです。
エージェントは、アプリに後付けされたチャット吹き出しや、API を推測するコーディングアシスタントであってはなりません。 実際の契約を見つけ、型付きの機能を呼び出し、進捗を UI にストリーミングし、適切な境界で承認を求め、状態を楽観的に更新し、サーバーと整合させ、作業が実際に行われた証拠を残すべきです。Nifra はこれらをひとつのシステムにまとめます。
- 構築面: 型付き API、ランタイムスキーマ、コード生成不要のクライアント、フルスタック SSR、5 つの UI ライブラリと 5 つのランタイムで動作する 1 つのアプリ。
- エージェント面: 同じ機能とツールの契約から利用できる、ページ内 WebMCP、リモート MCP/MCP Apps、A2A、AG-UI。
- 実行面: 上限付きのエージェントターン、予算、承認、冪等性、キャンセル、再開可能な証跡、プロバイダーに依存しないモデルポート。
- UI 面: 決定的な予測 UI、共有実行状態、ストリーミングされる差分、Human-in-the-loop の判断、コンテンツを含まないブラウザビュー、Run Studio。
- 証明面: ライブの MCP プロジェクトコンテキストに加え、型チェック、ルート保証、エフェクトの来歴、マニフェスト、契約から導出される検証ゲート。
ひとつの契約。あらゆる面に対応。
中核となる設計上の判断はシンプルです。機能を一度定義し、その場面に合った面へ投影します。ページ内エージェントはページを開いている間 WebMCP を使用でき、バックグラウンドエージェントはリモート MCP を使用でき、別のエージェントは A2A を使用でき、人間向けのクライアントは AG-UI を利用できます。それぞれが同じ型付きの検証、認可、承認、出力、証跡の境界を共有します。
import { t } from "@nifrajs/schema"
import { defineAgentCapability, registerWebMcpTools } from "@nifrajs/webmcp"
export const addToCart = defineAgentCapability({
name: "cart.add",
description: "Add a product to the current cart.",
input: t.object({ sku: t.string(), quantity: t.number() }),
output: t.object({ cartVersion: t.string() }),
writes: ["cart"],
execute: (input) => addItemOnTheServer(input),
predict: ({ input, version }) => ({
baseVersion: version,
patch: [{ op: "add", path: "/items/-", value: input }],
}),
})
// Explicit page-local discovery. Unsupported hosts receive a safe no-op report.
await registerWebMcpTools([addToCart])
同じ addToCart.tool を Nifra のリモート MCP アダプターに投影することも、エージェントランナーから呼び出すこともできます。予測は決定的なアプリケーションコードであり、LLM による推測ではありません。コミット、ロールバック、競合、有効期限、サーバーを正とする整合処理が、明示的な結果として扱われます。
WebMCP と予測 UI のガイドと エージェントレイヤーをご覧ください。
型付きバックエンドから始める
bun create nifra my-app # scaffold the API starter
cd my-app
bun install
bun run dev
SSR を使うフルスタック React アプリの場合:
bun create nifra my-app --template site --framework react
または、既存のプロジェクトにバックエンドを追加します:
bun add @nifrajs/core @nifrajs/schema @nifrajs/client
import { server } from "@nifrajs/core/server"
import { t } from "@nifrajs/schema"
export const app = server()
.get("/users/:id", (c) => ({ id: c.params.id }))
.post("/users", { body: t.object({ name: t.string() }) }, (c) => ({
id: crypto.randomUUID(),
name: c.body.name,
}))
クライアントの型はサーバーから推論されます。コード生成も、重複するスキーマも、古くなった SDK も不要です:
import { client } from "@nifrajs/client"
import type { app } from "./server"
const api = client<typeof app>("http://localhost:3000")
const result = await api.users({ id: "42" }).get()
if (result.ok) result.data.id // route return type, checked by tsc
else result.error // failures are returned, never thrown
ルートを変更すると、すべての呼び出し元は更新されるまでコンパイルできなくなります。アプリの成長に合わせて、ローダー、アクション、ストリーミング、
defer()/<Await>、アイランド、クエリーキャッシュ、プログレッシブエンハンスメント対応のフォーム、サーバー関数を追加できます。同じウェブレイヤーを React、Vue、Solid、Svelte、Preact で実行できます。
ウェブレイヤーは、別のデータレイヤーを追加することなく、ページを常に最新かつ高速に保ちます:
- ライブ更新 - ローダーは
live(...)を使って読み取ったキーを指定します。公開すると、ナビゲーション時に実行されるものと同じミドルウェア、ゲート、ローダーを通じて、開いているすべてのタブで該当するローダーだけが再読み込みされます。 - 部分的なプリレンダリング(実験的) - すべての訪問者に共通するページの部分はキャッシュから一度に配信され、訪問者ごとの各空白部分はローダーの処理完了に応じてストリーミングされます。
- 5 つすべてのアダプターでの サーバーコンポーネント - React の RSC/Flight と、その他のアダプター向けのネイティブなサーバーレンダリング範囲に対応します。
- キープアライブ - 戻る/進む操作で、状態、スクロール位置、フォーカスを保ったままページが復元されます。
- SSG と ISR によるタグパージでは、データキャッシュ、ページストア、ライブページ、CDN の順にクリアされるため、書き込み元は自身の書き込み結果を読み取れます。
エージェント型バックエンド:制約付き、型付き、可観測
Nifra は、エージェントが製品そのものであるアプリケーション向けのランタイムも提供します。モデルプロバイダー、 認証情報、永続状態、テナント管理、ポリシーは注入されるポートであり、フレームワークはそれらを取り巻く安全性と 実行セマンティクスを担います。
import { createAgentState, runAgent } from "@nifrajs/agent"
const result = await runAgent(definition, { value: input }, ports, {
state: createAgentState("support-1"),
maxTurns: 8,
})
型付きのツールコントラクト、制限付きのターンと予算、承認、キャンセル、冪等性、再開可能なトークンのみの証跡、モデル/トークンのストリーミング、一時的な共有状態、組み合わせ可能なテレメトリーを利用できます。ターン後のゲートに失敗した場合、スタンドアロンの
nifra-agent ホストで、制限付きの修復ターンに移行できます。ローカルプロセスアダプターと拡張機能アダプターは、クラッシュや偶発的な問題を封じ込めます。悪意のあるコードを隔離するサンドボックスではありません。
エージェント型 UI:意図から目に見える状態へ
UI は後回しではありません。Nifra では、エージェントがアプリとやり取りするための明確な方法をいくつか提供します:
| サーフェス | 最適な用途 | Nifra のコントラクト |
|---|---|---|
| WebMCP | 現在開いているページで動作するエージェント | 明示的なツール許可リスト、型付きの入力/出力、制限付きのレシート、決定論的な予測、バージョン管理された調整 |
| MCP/MCP Apps | リモートツール、バックグラウンド作業、リッチなツール結果 | 同じコアツールをリモート MCP と ui:// ウィジェットに投影 |
| AG-UI | エージェントの実行を製品 UI にストリーミング | SSE ライフサイクル、テキスト/推論/ツールの差分、共有状態のスナップショット/差分、再開可能な証跡、型付きの再開 |
| Agent App/Workbench | ブラウザーとデスクトップの制御プレーン | ネゴシエートされた機能、承認、引き継ぎ、判断用受信トレイ、機能レジストリ、Run Studio |
予測型のインタラクションでは、アプリケーションが純粋なパッチと調整ルールを提供します。ストアはそれをアトミックに適用し、その後、サーバーの正規状態を受け入れるか、ロールバック、競合、期限切れを報告します。エージェントホストがない場合でも、人間向け UI はすべての機能を利用できます。
エージェントを書き直さずに相互運用
中心となるのはランナーで、プロトコルアダプターはその周辺を担います。
@nifrajs/mcpはツールと MCP Apps を公開します。@nifrajs/webmcpは明示的なページローカルツールと予測 UI を公開します。@nifrajs/a2aは A2A 1.0 カードと JSON-RPC/SSE をマウントします。@nifrajs/ag-uiは SSE 経由で AG-UI イベントをマウントします。@nifrajs/agent-appはバックエンドに依存しないブラウザクライアントを提供します。@nifrajs/coding-agent、@nifrajs/agent-protocol、@nifrajs/piはスタンドアロンのコーディングエージェントホストを提供します。さらに、@nifrajs/acpを使うと、あらゆる Agent Client Protocol エージェントをそのホスト経由で動かせます。
すべてのプロトコル境界で、引き続きアプリケーション認証と認可が必要です。公開されているリファレンスアダプターでは、認証情報、永続ストレージ、テナント状態、運用ポリシーをパッケージの外部で管理するため、デプロイ環境に適した実装を提供できます。
古いドキュメントではなく、稼働中のプロジェクトをコーディングエージェントに提供
Nifra を一度登録すれば、エージェントは実際のプロジェクトを調査し、バージョンを確認したサンプルや型を取得して、正しいルートディレクトリにスキャフォールドを作成し、HTTP/SSR/WebSocket のチェックを実行し、最近のリクエストを調査して、構造化された修正を繰り返し適用できます。
claude mcp add nifra -- bunx nifra mcp
nifra init-agents
nifra context # live route and convention map
nifra smoke # real SSR, API, auth and hydration requests against the build
nifra check # typecheck, drift, and bundle-boundary gate
nifra assure # route security evidence gate
nifra levels # cumulative proof level and next missing rung
ローカルサーバーはコードが存在する場所で実行されるため、ソースが Nifra に送信されることはありません。Nifra の検証済みコーパスだけを必要とするエージェント向けに、教育用ツールも mcp.nifra.dev でホストされています。Pi と Claude Code で利用できるスキルもあります。
約束ではなく、証明
エージェントシステムに必要なのは、「モデルが動いたと言った」というだけのものではありません。Nifra は重要な主張をゲートに変えます。
nifra check
nifra assure
nifra capabilities check
nifra manifest diff
nifra levels --min 1
nifra checkは型の不整合、型付きクライアントを迂回した直接呼び出し、サーバー専用コードのバンドルへの混入、その他のコントラクト違反を検出します。nifra assureは稼働中のルートグラフを分類し、必須の認証、検証、レート制限、CSRF、またはボディサイズ上限の証拠が欠けている場合に失敗します。nifra capabilities checkは、宣言されたエフェクトトークンをモジュールグラフおよびレビュー済みのロックファイルと照合します。nifra manifest diffは、昇格時にコントラクト、保証、エフェクト、レスポンスの機密性の変更を検出します。nifra levelsは、型付きコントラクトからコントラクト由来の不変条件テストまで、プロジェクトが実際に達成している累積的な証明レベルのうち、最も高いものを報告します。
ドキュメントとサンプルは稼働中の API に対してコンパイルされ、機械可読な MCP コーパスはビルド済みパッケージから生成されます。エージェントには古い提案ではなく、修正可能な診断が提供されます。
フレームワークによる負担のないフルスタックの移植性
アプリのライフサイクルは app.fetch(Request): Promise<Response} です。一度定義すれば、小さなアダプターを使って Bun、Node、Deno、Cloudflare Workers/Pages、または Vercel Edge にデプロイできます。Web レイヤーはルート/データモデルを変更せずに、React、Vue、Solid、Svelte、Preact をサポートします。
site/shared/data/benchmarks.json にある公開済みスナップショットは、ウェブサイトの表とベンチマーク比較記事の正規の情報源です。ベンチマークスイートは bench/site-bench.ts を通じて、新しい結果をスナップショットに統合します。公開されている表には Nifra が劣る結果も含まれ、ベア HTTP、ミドルウェア形式の HTTP、動的 SSR、キャッシュ可能な SSR の結果はそれぞれ分けて掲載されています。
ベンチマークの方法と全結果を参照し、bun run bench:http / bun run bench:ssr を実行してご自身でも確認できます。
バッテリー(56 パッケージ、すべて型付き、すべてオプション)
パッケージは役割ごとに分類されています。
| レイヤー | パッケージ |
|---|---|
| バックエンド | core · schema · client · middleware |
| フルスタック Web | web · web-react · web-vue · web-solid · web-svelte · web-preact · web-vanilla · cache · i18n · image · content |
| ランタイム | node · deno · edge · workers · aws-lambda |
| エージェントランタイム | agent · prompt · runner · agent-telemetry |
| エージェント UI とプロトコル | webmcp · agent-app · mcp · a2a · ag-ui |
| コーディングエージェント | coding-agent · agent-protocol · pi · acp · skills |
| アプリサービスと品質 | auth · better-auth · authjs · jobs · cron · storage · uploads · testing · mock · otel |
| ツール | cli · create-nifra · devtools · ts-plugin |
すべてのパッケージはオプションで、型が付いています。まず core から始め、製品に必要な機能だけを追加してください。すべてのドキュメントを見る。
開発
bun install
bun run check # lint, typecheck, tests, docs, corpus, and size gates
bun run build # emit dist/ for all packages
bun run bench:http # reproducible HTTP matrix
貢献を歓迎します。CONTRIBUTING.mdをご覧ください。MIT ライセンスです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
