mcpField
P
PurRAssist

PurRAssist

ローカル
github.com/Blackcat-InformaticsAI・エージェント0今日更新

PurRAssist について

PurRAssistは、Rustクレート、CLI、MCPサーバーとして、未完成のJSON、ツール呼び出し、名前、パス、テキスト編集から意図を復元します。結果全体をスキーマで検証して修正の根拠を返し、曖昧な候補も残します。

主な機能

  1. 01スキーマに基づくJSON復元
  2. 02複数方言のツール呼び出し修復
  3. 03名前とパスのファジーマッチング
  4. 04Markdownとソース編集の計画
  5. 05ジャーナル付きファイル置換と取り消し

活用シーン

  1. 01モデルのJSONをスキーマ検証前に修復
  2. 02不正なツール呼び出しを実行せず復元
  3. 03誤記された名前やパスの照合
  4. 04Markdownやソース編集の計画と取り消し

MCP 対応

stdio MCPサーバーは、共通の復元・編集ツールをMCPクライアントに公開します。CLIも同じ登録済み操作を呼び出します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
cargopurrassist-cli0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

修復された構造物を持つ黒猫 PurRAssist

PurRAssist

細部をほぼ正しく扱うAIを支援します。

PurRAssistは、不完全なJSON、名前、パス、テキストから意図を復元します。デコーダーにスキーマと処理レベルを指定すると、組み合わせた修正候補を検索し、結果全体を検証して、変更内容を示す証拠を返します。スキーマに適合する推測も、あくまで推測です。曖昧な候補はそのまま表示されます。Rustクレート、MCPサーバー、CLIとして利用できます。

バージョン 0.1.0。 rust-v0.1.0 として公開されています。6つのクレートは crates.io で公開されており、docs.rs にドキュメントがあります。変更履歴、受け入れられる範囲を示す実装コントラクト、実行可能な証拠を示す認定記録をご覧ください。既知の制限事項はリリースを妨げるものではありません。リリース手順には、パッケージとレジストリのゲートが記録されています。

1つのエンジン、3つのインターフェース

1つの復元エンジンを、Rustクレート、MCPサーバー、コマンドラインツールという3つの同等な方法で利用できます。どの方法でも、同じエンジンと証拠レシートを使用します。

Rustクレート
cargo add purrassist
use purrassist::{Outcome, RecoveryRequest, Schema};

let schema = Schema::compile(r#"{
  "type": "object",
  "required": ["temperature"],
  "properties": {"temperature": {"type": "number"}},
  "additionalProperties": false
}"#)?;

let answer = schema.recover("[[{temperatur: '42',}]]", RecoveryRequest::default());
match answer.outcome {
    Outcome::Resolved(value) => assert_eq!(value.to_json(), r#"{"temperature":42}"#),
    Outcome::BestGuess(value) => println!("inferred: {}", value.to_json()),
    Outcome::Ambiguous(values) => println!("{} interpretations", values.len()),
    Outcome::Unresolved => println!("{}", answer.receipt.stopped),
}
# Ok::<(), purrassist::schema::SchemaError>(())

purrassistクレートはRustインターフェースです。純粋なエンジン、構文インテグレーション、deriveマクロを再エクスポートします。

MCPサーバー
cargo install purrassist-cli
purrassist mcp --root /path/to/workspace

stdioサーバーを起動する任意のMCPクライアントに、サーバーを追加できます。

{
  "mcpServers": {
    "purrassist": {
      "command": "purrassist",
      "args": ["mcp", "--root", "/path/to/workspace"]
    }
  }
}

サーバーは、stdio経由で改行区切りのJSON-RPCを使用します。各ツールはツールリファレンスに記載されています。サーバーを起動すると、ルートに.purrassist/ディレクトリが作成されます。ファイルツールはここにトランザクションジャーナルを保存します。以下のcallコマンドも同様です。

CLI
purrassist decode --schema schema.json --input response.txt
purrassist call match_strings --root DIR < args.json

purrassist call TOOL --root DIRは標準入力からJSON引数オブジェクトを読み取り、MCPと同じ操作を呼び出します。登録済みのすべてのツールについて、CLIとMCPの結果は一致します。このことは、テストevery_registry_entry_has_a_fixture_validated_through_cli_and_mcpでツールごとに確認されます。便利なコマンドであるdecodeとmatchは、それぞれ独自の出力を返すショートカットであり、ツールの出力とは異なります。purrassist validateはvalidate_jsonツールの出力をそのまま表示します。

クレート一覧

リリース対象は6つのクレートで、次の順に公開されます。

クレート役割
purrassist-core共有エンジン:純粋な復元、マッチング、スキーマ、Markdown、ツール呼び出しの各エンジンを提供し、サードパーティのランタイム依存関係はありません。
purrassist-derive共有エンジン:型付きツール定義のための、依存関係ゼロの#[derive(ToolDefinition)]と#[derive(ToolEnum)]を提供します。
purrassist-syntax共有エンジン:ソースの検査と検証済みの修復のため、Tree-sitter文法を隔離して統合します。
purrassistRustインターフェース:エンジンとderiveマクロを再エクスポートするファサードです。
purrassist-hostCLIとMCPサーバーの両方で使用するファイルシステムおよびヘルパーとのインテグレーション:ルートスコープのファイル、ジャーナル付き置換、共有ツールレジストリを提供します。
purrassist-cliCLIとstdio MCPサーバー:purrassist実行ファイルです。

ワークスペース内の2つのクレートは内部用で、公開されていません。wasm-harness(ネイティブ、WASI、ブラウザーWASMの受け入れテスト記録)と、purrassist-helper-census(重複機能の調査)です。

機能

純粋なコアは、独自のJSONパーサー、正確な10進数演算、スキーマバリデーター、Unicode正規化、編集距離、音声学的マッチング、セマンティックルール、復元検索、レシートを備えています。サードパーティのランタイム依存関係はありません。 隔離された構文クレートでは、固定されたTree-sitter文法ファミリーを使用しています。依存関係一覧をご覧ください。各ツールについてはツールリファレンスで説明しています。

現在のインターフェースは次のとおりです。

  • ネストされたラップの解除、構文修復、近似キー/列挙値、文字列化された値、スキーマ全体の検証、第一者の証人生成代数によって生成される値の補完(必須プロパティ、patternProperties/additionalProperties/dependentSchemas の補完、propertyNames に準拠したキーの修復)を備えた JSON の復旧。スキーマを考慮しないヒューリスティックは使用しません。
  • Unicode、字句、レーベンシュタイン距離、制限なしのダメラウ・レーベンシュタイン距離、英語の Soundex、エイリアス、コンテキストに応じたパスの照合。
  • 明示的な意味ドメインルールと、呼び出し元が提供する埋め込み類似度。
  • ソースに基づくテキスト編集、制限付きのファジー置換、再配置可能な統合差分、重複チェック、バイト単位での正確な取り消し、Markdown 編集インデックス、および構造に基づくセクション/リスト/テーブル/参照の操作。固定された CommonMark/GFM の 1,324 個すべての例に対して正確なレンダリングチェックを行い、生成された保持プロパティと独立した差分テストも実施します。
  • Python、Rust、JavaScript/JSX、TypeScript/TSX の文法検査と、検証済みの句読点修復。文法の受理は、プログラムの正しさを証明するものではありません。
  • ジャーナル方式による単一ファイルの置換と、連携して書き込むプロセス向けの条件付き取り消し。
  • モデルの生出力からのツール呼び出し復旧:重み付けされた可逆な方言文法と、最良優先によるマークアップ修復、型付きツールまたはロスレスな OpenAI/MCP/Anthropic 宣言(Draft 2020-12 または Draft-07 スキーマ)との照合、項目別の修復内容を含む呼び出しごとの結果、変更を伴うツール向けの保守的なガード、および任意の方言または OpenAI の tool_calls 配列としての再出力に対応します。まだ組み込み済みでない方言、またはリクエストの許可リストに含まれていない方言の呼び出しマークアップは、無視されず、拒否された試行(unsupported_dialect)として報告されます。次の 12 種類の方言が付属します:qwen3-coder-xml.v1、hermes.v1、openai-tool-calls.v1、llama3-json.v1、mistral-v3.v1、mistral-v11.v1、deepseek-v3.1.v1、deepseek-v3.v1、kimi-k2.v1、anthropic-tool-use.v1、harmony.v1、bare-json.v1。呼び出し元は文法 DSL を使って独自の方言を追加できます。型付きツール定義は、Rust の構造体と列挙型に #[derive(ToolDefinition)] および #[derive(ToolEnum)] を指定して生成できます(依存関係ゼロの purrassist-derive クレートをファサードから再エクスポートしています。以下の例を参照してください)。対応予定として追跡中の項目:pythonic.v1(#12)、glm-4.5.v1(#13)、gemma3-tool-code.v1(#14)の各方言、*-stripped バリアント(#18)、ストリーミング認識(#16)、プロバイダーのストリーミングイベント(#17)。ツール呼び出しの復旧を参照してください。
  • CLI、stdio MCP、再開可能なヘルパーのリクエスト/レスポンスアダプター(prepare_helper および complete_helper。ヘルパーを参照してください)。デフォルトでは、モデルは必要なく、読み込まれず、接続もされません。

ツールのスキーマと型付き引数を、同じ Rust 構造体から定義できます:

use purrassist::json;
use purrassist::tool_call::{FromNode, ToolArguments};

#[derive(purrassist::ToolEnum, Debug, PartialEq)]
enum Order {
    Asc,
    Desc,
}

/// Search the index.
#[derive(purrassist::ToolDefinition, Debug, PartialEq)]
#[tool(effects = read_only)]
struct Search {
    /// What to look for.
    query: String,
    #[param(default = 10)]
    limit: u32,
    order: Option<Order>,
}

assert_eq!(Search::tool_definition().name(), "search");
let arguments = json::parse(r#"{"query": "cats", "order": "Desc"}"#)?;
assert_eq!(
    Search::from_node(&arguments),
    Ok(Search { query: "cats".into(), limit: 10, order: Some(Order::Desc) }),
);
# Ok::<(), Box<dyn std::error::Error>>(())

Schema::generate_witness/generate_witness_governed は、それぞれ証人生成代数(正規化、ド・モルガンの法則による双対性での not の除去、allOf 制約の統合、型に応じた値の生成、$ref/$dynamicRef の再帰的処理)を実装します。結果は、検証済みの Witness、閉形式の Unsatisfiable 証明(探索の打ち切りから推論されることはありません)、または正直な Exhausted のいずれかです。復旧処理では、推測した値をすべて同じ代数によって補完します。Schema::compile_governed および with_resources_governed は、無効なスキーマとリソースの失敗を区別する型付きの CompilationError 値を返します。合計の準備・復旧予算を共有するには、同じ governor を recover_governed に渡してください。decode_json ツールはこれを自動的に行います。便利なコンパイルメソッドでは、デフォルトの有限予算を使用します。 purrassist_core::patch::Patch(順序付けられ、重複しない、ソースダイジェストに紐付いたバイト範囲置換の集合)は、このクレートにおける単一の編集表現です。edits::EditPlan/TextEdit はそのエイリアスです。apply に加えて、管理された invert、compose、commute、rebase、diff の代数を提供します。apply_edit/apply_file は、明示的な rebase_from 入力を介して、rebase/diff を使い、変更が割り込んだ古いプランを調整します。プランの適用を参照してください。Rust の markdown::Document API が提供する構造操作――insert_section、remove_section、move_section(移動したセクション自身の見出しのレベル変更は任意)、rename_heading、ListItemEdit::Move、renumber_list、TableRowEdit::Move、TableColumnEdit::Move、および add_reference/relabel_reference/remove_reference/unlink_reference(影響を受ける定義に解決されるすべてのショートカット/折りたたみ/完全参照の使用箇所を書き換えます)――は、ホストツール plan_markdown_structure を通じて利用でき、型付きの op(section_insert、section_remove、section_move、section_rename、list_move、list_renumber、table_row_move、table_column_move、reference_add、reference_relabel、reference_remove、reference_unlink)で選択されます。各操作は管理され、ダイジェストに紐付けられ、再解析によるチェックが行われ、厳密な逆操作を提供します。

Rust の markdown::InlineFragment レイヤーは、正確なバイト範囲を保持し、コードスパン、強調、強い強調、インラインリンク/画像、エスケープ、改行、自動リンク、生のインライン HTML をレンダリングします。明示的な方言の選択により、固定された CommonMark/GFM のレンダリング上の違いが保持されます。名前付きエンティティと数値エンティティはデコードされます。markdown::References は、指定された段落ブロックから定義を収集します。InlineFragment::parse_with_references は、定義の出自を保持しながら、完全リンク、折りたたみリンク、ショートカットリンクおよび画像を解決します。Document::render_html はコンテナー全体から定義を収集し、ブロックをレンダリングします。GFM レンダリングでは、テーブル、タスクリスト、取り消し線、拡張自動リンク、タグフィルタリングが有効になります。明示的な拡張プロファイルも利用できます。固定された公式ドキュメントの全1,324例で、上流プロファイルにおけるHTMLと完全に一致します。生成された敵対的な保持チェックと独立した差分チェックにより、この有限のコーパスが拡張されます。適格性記録には、それらの対象範囲と限界が記載されています。

ファイルツールは古いバージョンを拒否し、取り消しのためにトランザクション ID を記録します。ポータブルなファイルシステムレイヤーは、協調する書き込み側を調整します。悪意のあるディレクトリ置換に対するサンドボックスではなく、複数ファイルにまたがるアトミックなトランザクションでもありません。

管理対象のエンジンとホストツールは、明示的なトランザクション境界とともに、呼び出し側が所有するキャンセルを受け付けます。stdio MCP サーバーはツールの実行中もキャンセルを処理し、アクティブなツール呼び出しを最大4件まで受け付けます。

チェックアウトを使う

cargo run -p purrassist-cli -- --help
cargo run -p purrassist-cli -- match raeder reader writer
cargo run -p purrassist-cli -- call match_strings --root . < examples/match-strings.json
cargo run -p purrassist-cli -- call resolve_string --root . < examples/resolve-string.json
cargo run -p purrassist-cli -- decode --schema examples/temperature.schema.json \
  --input examples/temperature.input.txt
cargo run -p purrassist-cli -- recover-tool-calls --tools tools.json --emit openai turn.txt
cargo run -p purrassist-cli -- mcp --root /path/to/workspace

decode は、回答とレシートを JSON として返します。Exact は復旧を行いません。Quick、Standard、Deep、Maximum の順に、有限の検索予算が増加します。予算の枯渇は明示され、スキーマが充足不能であることの証明にはなりません。recover-tool-calls は recover_tool_calls MCP ツールと同じ結果を出力し、呼び出しを実行することはありません。examples/ にあるすべてのリクエスト例は、テストスイートによって CLI と MCP の両方で実行されます。ツールリファレンスでは、各ツール、その引数、および例について説明しています。統合ガイドには、recover-tool-calls のすべてのオプションが記載されています。

開発と検証

Rust エディション 2024、MSRV 1.98 です。開発には Clippy と rustfmt を備えた nightly Rust を使用します。コミット検証の回避は許可されません。

make check       # formatting, attribution/dependencies, lint, optimized tests, docs
make wasm-test   # compare native/WASI recovery, matching, embeddings, Markdown, and grammars
make syntax-oracles  # compare fixed syntax probes to independent compilers
make benchmark  # recovery quality assertions and latency baseline
make fuzz       # ten coverage-guided targets and independent pattern/Markdown oracles
make fuzz-hosted  # the CI and pre-tag fuzz gate (known #6/#11 limitations handled)
make resources  # allocations, heap/RSS, latency, artifact size, and uncached build cost
make package    # Cargo verification and registered source/license archive audit
make release-gate  # the one release gate, run on the release toolchain by pull requests and release qualification

リソースプロファイリングは make resources で利用できます。測定範囲と前提条件をご覧ください。外部プロファイラーを使用し、クレートのランタイム依存関係は追加しません。

10 個のターゲットそれぞれに対するカバレッジ誘導型キャンペーンは、 make fuzz TARGET=<target>(たとえば TARGET=json)で利用できます。プロパティ、再生、認定の制限事項をご覧ください。デフォルトの make fuzz は現在、既知の制限事項に記載されている issue #11 と #6 のシグネチャで停止します。make fuzz-hosted は、これらの制限事項を維持して明示したまま、すべてのターゲットを完了します。

適合性

JSON Schema の検証では、$schema によって選択される 2 つの方言を実装しています。Draft 2020-12(デフォルト)と Draft-07(http://json-schema.org/draft-07/schema#。MCP サーバーが一般的に宣言するため、末尾の # はあってもなくても構いません)です。Draft-07 のサポート範囲は、additionalItems を伴うタプル items、definitions、2 種類の dependencies、兄弟要素を上書きする $ref、ベース URI を変更する $id、プレーン名の #anchor 識別子、および注釈のみの format です。Draft-07 の検証では、バリデーター purrassist.schema.draft-07.v1 が報告されます。Draft 2019-09、Draft-06、およびそれ以前の方言はコンパイル時に拒否されます。証拠の生成、スキーマに基づく復元、およびツール宣言アダプターは、適用される 2 つの方言のいずれかに従います。

チェックイン済みの Draft 2020-12 メインコーパスには 1,301 件のテストが含まれ、さらに選定されたオプションケース 121 件も実行されます。また、optional/format/ の完全なベンダー提供コーパス(2020-12 のすべての形式を対象とする 878 件。RFC 5892/5893 の IDNA2008 における文脈依存ルールと Bidi ルールを含む)も、形式アサーション語彙を宣言する方言のもとで実行されます。Draft-07 の必須ケース 929 件はすべて合格します。Draft-07 の optional/ ケース 911 件(形式は注釈の結果に基づいて判定)のうち 905 件が合格し、合格しない 6 件は理由とともにグループ別に記載されています。理由は、コンテンツアサーション(設計上、注釈のみ)と Draft 2019-09 のクロスドラフト参照(未実装の方言)です。Unicode 17 の正規化テストには 20,034 件が含まれます。これらのスイート、回帰テスト、固定ヘルパートランスクリプト、および範囲を限定したミューテーションプローブはローカルで実行されます。完全なリリース認定には、認定記録に記載されている、正確なコミットに対するゲートとレジストリーの受け入れが必要です。

ライセンスとファミリー

ファーストパーティーコードは、MIT OR Apache-2.0 OR MulanPSL-2.0 のいずれかを選択して利用できます(MIT、Apache-2.0、MulanPSL-2.0)。 GitHub のサイドバーに表示されるのは 3 つのライセンスのうち 1 つだけです。正式なライセンス表記は Cargo.toml の SPDX 式です。サードパーティーのデータと文法への依存関係には、それぞれの通知が適用されます。 PurRAssist は PurRDF と、Blackcat Informatics の猫のシルエットとカラーパレットを共有しています。波括弧と検証マークは、このクレートのサービスエンブレムです。

コメント

MCP は初めてですか?

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

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