noyalib-mcp について
noyalib-mcp は、YAML 1.2 の検査、編集、検証を行う MCP サーバーで、YAML ファイルを扱うエージェントや MCP クライアントを対象とします。noyalib を基盤に、ロスレス編集、型付き結果、ローカルおよび HTTP のトランスポートを提供します。
主な機能
- 01YAML ドキュメントの解析と検査
- 02YAML 値の読み取り、設定、編集
- 03複数ドキュメントの更新
- 04選択可能なプロファイルによる YAML 検証
- 05指定ルート内に制限したロスレスなファイル編集
- 06stdio、streamable HTTP、HTTP+SSE に対応
活用シーン
- 01MCP クライアントから YAML 設定を確認
- 02内容を保ちながら YAML 値を変更
- 03strict または standard の規則で YAML ファイルを検証
- 04HTTP 経由でリモートクライアントに YAML ツールを提供
MCP 対応
6 種類の型付き YAML ツール、プロンプト、リソースを MCP クライアントに提供します。stdio、streamable HTTP、旧式の HTTP+SSE に対応し、プロトコル改訂版をネゴシエートします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/sebastienrousseau/noyalib-mcp:0.0.58ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/sebastienrousseau/noyalib-mcp:0.0.58stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
noyalib-mcp
YAMLを損失なく検査、編集、検証するためのModel Context Protocolサーバーです。
目次
はじめに
noyalib-mcpエコシステム
- noyalib-mcpエコシステム — プロトコルとライブラリの関係
ライブラリリファレンス
- 機能の概要 — 現在の機能をテーマ別に紹介
- エコシステムの比較 — 簡易比較表。完全な表は
docs/COMPARISON.mdを参照してください - ベンチマーク — ハーネスの対象範囲。完全な手法は
docs/BENCHMARKS.mdを参照してください - 機能 — MCPツールとリソース
- 設定 — トランスポートとエンドポイント
- 使用例 — 実行可能なクライアント
運用
- noyalib-mcpを使用しない場合 — 制限事項
- 開発 — makeターゲット、ファジング、CI
- セキュリティ — 保証とコンプライアンス
- ドキュメント — すべてのリファレンスドキュメント
- 安定性の保証 — プロトコル、SemVer、ツールチェーンの運用方針
- ライセンス
インストール
Rustライブラリとして
[dependencies]
noyalib-mcp = "0.0.58"
ホスト環境に合った方法でサーバーをインストールまたは実行してください。
cargo install noyalib-mcp --locked
docker run --rm -i ghcr.io/sebastienrousseau/noyalib-mcp:latest
npmラッパー(npx @sebastienrousseau/noyalib-mcp)は、パッケージにお使いのプラットフォーム用のSHA-256が含まれている場合にのみバイナリを実行します。リリースではまだプラットフォームごとのアーカイブを公開していないため、現時点では実行を拒否し、上記の2つのコマンドを案内します。
要件
- ソースからビルドする場合は、Rust 1.89.0以降が必要です。
- Linux、macOS、WindowsはCIでテストされています。
- ロックステップ契約に基づき、クレートは
noyalibを正確に=0.0.58に固定しています。 - サーバーを操作するにはMCPクライアントが必要です。
| 対象 | ツールチェーンの最低要件 | 適用方法 |
|---|---|---|
| サーバーとライブラリ | Rust 1.89.0 | マニフェストとMSRV CI |
| テスト対象全体 | Rust 1.89.0 | 全ターゲットCI |
クイックスタート
子プロセスとの統合には stdio を使用します。
noyalib-mcp
stdio クライアントは、initialized 通知を送信したりツールを一覧表示したりする前に、MCP 初期化リクエストを送信します。
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": {
"name": "example",
"version": "0.0.1"
}
}
}
ストリーム可能な HTTP を /mcp で提供するか、レガシーな HTTP+SSE ブリッジを /sse と /messages/ で提供します。
noyalib-mcp --transport streamable-http --host 127.0.0.1 --port 8000
noyalib-mcp --transport sse --host 127.0.0.1 --port 8001
サーバーは initialize 中にサポートする MCP リビジョンをネゴシエートします。クライアントは、このハンドシェイクが完了する前に、生のツール呼び出しを送信しないでください。
noyalib-mcp エコシステム
| コンポーネント | 役割 |
|---|---|
noyalib-mcp | MCP サーバー、トランスポート、ツール、プロンプト、リソース |
noyalib | YAML パーサー、CST エディター、スキーマバリデーター |
noya-cli | 人間向けのフォーマットおよび検証コマンド |
rmcp | プロトコル処理に使用する公式 Rust MCP SDK |
主な機能
| 分野 | 機能 | 状態 |
|---|---|---|
| トランスポート | stdio、ストリーム可能な HTTP、HTTP+SSE | 対応 |
| プロトコル | 2024-11-05 から 2026-07-28 までのリビジョン | ネゴシエーション |
| 結果 | テキストと型付きの structuredContent | 対応 |
| YAML | 解析、取得、設定、複数ドキュメントの設定、編集、検証 | 対応 |
| メタデータ | ツールスキーマ、アノテーション、例、プロンプト、リソース | 公開済み |
エコシステムの比較
| 提供形態 | 損失のない YAML 編集 | リモートトランスポート | 型付きツール結果 |
|---|---|---|---|
| noyalib-mcp | はい | HTTP と SSE | はい |
noya-cli | はい | いいえ | 該当なし |
noyalib | はい | いいえ | ネイティブ Rust 型 |
対象範囲と根拠については、docs/COMPARISON.md を参照してください。
ベンチマーク
リポジトリに含まれる mcp_tools Criterion ハーネスは、ノイズの多い計測値を正確性の判定基準とせずに、ツールのディスパッチと YAML 操作を測定します。
cargo bench --bench mcp_tools
測定方法については、docs/BENCHMARKS.md を参照してください。
機能
- YAML の読み取り、編集、解析、検証を行う、型付きの 6 つのツール。
outputSchema、structuredContent、アノテーション、例を宣言します。- stdio、ストリーム可能な HTTP、レガシーな HTTP+SSE トランスポート。
- エージェント統合用のプロンプトとリソース。
- プロトコルリビジョンのネゴシエーションとセッションを考慮したルーティング。
設定
| オプション | 効果 |
|---|---|
--transport stdio | プロセスの標準入力と標準出力を使用します。これがデフォルトです |
--transport streamable-http | /mcp で MCP を提供します |
--transport sse | /sse と /messages/ を提供します |
--host ADDRESS | HTTP トランスポートを指定したアドレスにバインドします |
--port PORT | HTTP のリスニングポートを指定します |
--root DIR | ファイルツールの操作範囲を DIR に限定します(デフォルト:作業ディレクトリ。/ やホームディレクトリではない場合があります) |
--profile strict|standard | すべてのツールが解析に使用するルールです。ファイルツールと noyalib_edit も対象です。noyalib の厳格な YAML 1.2 プロファイル(デフォルト。重複キーと不規則なインデントはエラーになり、制限も厳しくなります)またはライブラリのデフォルトを指定します |
--max-sessions N | HTTP トランスポートが同時に保持するセッション数(デフォルト 64) |
リモートトランスポートをバインドする際は、慎重に設定してください。デフォルトのループバックホストでは、サーバーがローカルマシンの外部に公開されません。ファイルツール(noyalib_get、noyalib_set、noyalib_set_multidoc)は、シンボリックリンクも含め、ルート外に解決されるパスを拒否します。クライアントがアクセスできるディレクトリを --root に指定してサーバーを起動してください。HTTP トランスポートは、許可されていない Host または Origin を拒否しますが、認証は行いません。信頼モデルの詳細は SECURITY.md を参照してください。
例
mcp_session.rs:SDK を使用したメモリ内セッション。handshake.sh:初期化してツールを一覧表示します。set-then-get.sh:損失のない変更と読み戻しを行います。
クライアント設定のレシピは、docs/agent-integration.md に記載されています。
noyalib-mcp を使用しない場合
- MCP が不要な Rust アプリケーションでは、
noyalibを直接使用してください。 - シェルのパイプラインやリポジトリ全体の検証には、
noya-cliを使用してください。 - 認証・認可レイヤーを前段に設けずに、信頼できないネットワークへ HTTP トランスポートを公開しないでください。
- サーバーはリモートスキーマを取得しません。呼び出し側が信頼できるスキーマの内容を用意する必要があります。
詳細な README リファレンスには、クライアントのセットアップ、ツールの詳細、検証手順、適合性に関する説明が記載されています。
開発
make
make test
make clippy
make fmt
cargo fuzz run fuzz_tool_call
CI では、Rust のフォーマット、リンティング、テスト、ドキュメント、依存関係のポリシー、ファジングの回帰、プロトコルの動作、共通の YAML テストスイートをチェックします。DEVELOPMENT.mdを参照してください。
セキュリティ
脆弱性はSECURITY.mdを通じて報告してください。このクレートではunsafeコードを禁止し、依存関係を監査し、上限のある noyalib 操作を使用するとともに、リリースのアテステーションと SBOM を生成します。ファイルの内容、YAML、スキーマ、MCP メタデータは信頼できない入力として扱ってください。
ドキュメント
- ユーザーマニュアル
- API リファレンス
- 開発者向けドキュメント
- エージェントとの統合
- ツールリファレンス
- アーキテクチャ
- エンジニアリングポリシー
- コンプライアンス評価
- 詳細な README リファレンス
安定性の保証
0.0.xの間は、パッチ番号が破壊的変更の軸になります。- ツール名、引数スキーマ、出力スキーマ、トランスポートのルートは、公開される互換性の対象です。
- プロトコルのリビジョンは、推測ではなくネゴシエーションによって決定されます。
- MSRV を引き上げる場合は、変更履歴で説明したうえで、破壊的変更の軸でのみ引き上げられます。
ライセンス
Apache License, Version 2.0またはMIT Licenseのいずれかを選択して、デュアルライセンスのもとで提供されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。