Noyalib Mcp

io.github.sebastienrousseauPublished by GitHub account sebastienrousseauv0.0.58Updated Oct 24, 2026

MCP server for lossless YAML 1.2 parsing, formatting, and validation (pure Rust).

VerifiedSTDIODesktop onlyFiles & StorageDeveloper Tools

Overview

AI-generated overview

Local MCP server for lossless YAML 1.2 parsing, reading, editing and validation, letting an assistant inspect and modify YAML files safely.

What you can do
  • Parse YAML and return typed structured results
  • Read and set values in YAML documents, including multidocument files
  • Edit YAML losslessly while preserving formatting and comments
  • Validate YAML against a caller-supplied schema under a strict or standard profile
  • Expose prompts and resources for agent integration
When to use it
Useful when an assistant needs to read, change or check YAML configuration files, such as CI configs, Kubernetes manifests or app settings, without losing comments or layout. Also fits workflows that need schema validation of YAML before committing changes.
Requirements
Runs as a local process over stdio by default; can also serve streamable HTTP at /mcp or HTTP+SSE. Install via cargo install or the published container image; building from source needs Rust 1.89.0 or newer. An MCP client is required. The npm wrapper currently refuses to run because per-platform archives are not published. Optional flags set the transport, host, port, root directory, profile and session limit.
Before you install
File tools write to YAML files on disk, so start the server with a root directory confining them; paths outside that root, including via symlinks, are refused. The HTTP transports do not authenticate and only reject foreign Host or Origin headers, so do not expose them to untrusted networks without an auth layer. Schemas must be supplied by the caller and treated as untrusted input.

Installation

In SourceWeft

  1. Open Noyalib Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[noyalib-mcp logo]

noyalib-mcp

Model Context Protocol server for lossless YAML inspection, editing, and validation.

[Build] [Registry] [Docs] [OpenSSF Scorecard] [License: Apache-2.0 OR MIT] [MSRV 1.89.0] [Glama MCP server score]

[noyalib-mcp Demo]


Contents

Getting started

The noyalib-mcp ecosystem

Library reference

Operational


Install

As a Rust library

toml
[dependencies]noyalib-mcp = "0.0.58"

Install or run the server through the channel that fits the host:

bash
cargo install noyalib-mcp --lockeddocker run --rm -i ghcr.io/sebastienrousseau/noyalib-mcp:latest

The npm wrapper (npx @sebastienrousseau/noyalib-mcp) runs a binary only when its package carries a SHA-256 for your platform. Releases do not yet publish per-platform archives, so today it refuses to run and points to the two commands above.

Requirements

  • Rust 1.89.0 or newer when building from source.
  • Linux, macOS, and Windows are tested by CI.
  • The crate pins noyalib at exactly =0.0.58 under the lockstep contract.
  • An MCP client is required to drive the server.
SurfaceMinimum toolchainEnforcement
Server and libraryRust 1.89.0manifest and MSRV CI
Complete test surfaceRust 1.89.0all-target CI

Quick Start

Use stdio for a child-process integration:

bash
noyalib-mcp

A stdio client begins with an MCP initialization request before sending the initialized notification or listing tools:

json
{  "jsonrpc": "2.0",  "id": 1,  "method": "initialize",  "params": {    "protocolVersion": "2025-11-25",    "capabilities": {},    "clientInfo": {      "name": "example",      "version": "0.0.1"    }  }}

Serve streamable HTTP at /mcp, or the legacy HTTP+SSE bridge at /sse and /messages/:

bash
noyalib-mcp --transport streamable-http --host 127.0.0.1 --port 8000noyalib-mcp --transport sse --host 127.0.0.1 --port 8001

The server negotiates supported MCP revisions during initialize; clients should not send raw tool calls before completing that handshake.

The noyalib-mcp ecosystem

ComponentRole
noyalib-mcpMCP server, transports, tools, prompts, and resources
noyalibYAML parser, CST editor, and schema validator
noya-cliHuman-facing formatting and validation commands
rmcpOfficial Rust MCP SDK used for protocol handling

Capabilities at a glance

AreaCapabilityStatus
Transportstdio, streamable HTTP, and HTTP+SSESupported
ProtocolRevisions from 2024-11-05 through 2026-07-28Negotiated
ResultsText plus typed structuredContentSupported
YAMLParse, get, set, multidocument set, edit, and validateSupported
MetadataTool schemas, annotations, examples, prompts, and resourcesPublished

Ecosystem comparison

Delivery surfaceLossless YAML editsRemote transportTyped tool results
noyalib-mcpYesHTTP and SSEYes
noya-cliYesNoNot applicable
noyalibYesNoNative Rust types

See docs/COMPARISON.md for scope and evidence.

Benchmarks

The checked-in mcp_tools Criterion harness measures tool dispatch and YAML operations without treating noisy timing values as correctness gates.

bash
cargo bench --bench mcp_tools

See docs/BENCHMARKS.md for methodology.

Features

  • Six typed tools for YAML reads, edits, parsing, and validation.
  • Declared outputSchema, structuredContent, annotations, and examples.
  • stdio, streamable HTTP, and legacy HTTP+SSE transports.
  • Prompts and resources for agent integration.
  • Protocol revision negotiation and session-aware routing.

Configuration

OptionEffect
--transport stdioUse process stdin and stdout; this is the default
--transport streamable-httpServe MCP at /mcp
--transport sseServe /sse and /messages/
--host ADDRESSBind an HTTP transport to an address
--port PORTSelect the HTTP listening port
--root DIRConfine the file tools to DIR (default: the working directory, which may not be / or the home directory)
--profile strict|standardRules every tool parses under, the file tools and noyalib_edit included: noyalib's strict YAML 1.2 profile (the default: duplicate keys and odd indentation are errors, tighter limits) or the library defaults
--max-sessions NSessions an HTTP transport holds at once (default 64)

Bind remote transports deliberately. The default loopback host avoids exposing the server beyond the local machine. The file tools (noyalib_get, noyalib_set, noyalib_set_multidoc) refuse any path that resolves outside the root, symlinks included; start the server with --root on the directory a client may touch. The HTTP transports refuse a foreign Host or Origin and do not authenticate. SECURITY.md has the full trust model.

Examples

Client configuration recipes are in docs/agent-integration.md.

When not to use noyalib-mcp

  • Use noyalib directly inside a Rust application that does not need MCP.
  • Use noya-cli for shell pipelines and repository-wide validation.
  • Do not expose an HTTP transport to an untrusted network without an authentication and authorization layer in front of it.
  • The server does not fetch remote schemas; callers must supply trusted schema content.

The detailed README reference retains client setup, tool detail, verification steps, and conformance discussion.

Development

bash
makemake testmake clippymake fmtcargo fuzz run fuzz_tool_call

CI checks Rust formatting, linting, tests, documentation, dependency policy, fuzz regressions, protocol behaviour, and the shared YAML test suite. See DEVELOPMENT.md.

Security

Report vulnerabilities through SECURITY.md. The crate forbids unsafe code, audits dependencies, uses bounded noyalib operations, and emits release attestations and SBOMs. Treat file content, YAML, schemas, and MCP metadata as untrusted input.

Documentation

Stability guarantees

  • During 0.0.x, the patch component is the breaking-change axis.
  • Tool names, argument schemas, output schemas, and transport routes form the public compatibility surface.
  • Protocol revisions are negotiated rather than inferred.
  • The MSRV may rise only on the breaking axis with a changelog explanation.

License

Dual-licensed under either the Apache License, Version 2.0 or the MIT License, at your option.

Source: README.md at commit 19990d2

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

12
  1. v0.0.58LatestOct 16, 2026
  2. v0.0.57Oct 9, 2026
  3. v0.0.56Oct 8, 2026
  4. v0.0.54Oct 7, 2026
  5. v0.0.53Oct 6, 2026
  6. v0.0.52Oct 4, 2026
  7. v0.0.51Sep 22, 2026
  8. v0.0.50Sep 22, 2026
  9. v0.0.47Sep 22, 2026
  10. v0.0.45Sep 19, 2026
  11. v0.0.44Sep 17, 2026
  12. v0.0.43Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts