9507dc6e6854f62ba1605d7c22ce2694c6872172
Add mcp-manifest-generate CLI tool to reverse-engineer manifests from Claude Code settings.json. Infers install methods from command patterns (npx→npm, uvx→pip, .exe→dotnet-tool). Converts --flag args to typed config entries (--api-key→secret). Supports --probe flag to run MCP handshake for real server name/version. Add interactive --init wizard mode. Update schema with additional validation rules. Add comprehensive CLI help and examples to README
mcp-manifest-validate
Validate mcp-manifest.json files, test autodiscovery from domains, and generate manifests from existing MCP server configs.
Validate
# Validate a local manifest
npx mcp-manifest-validate ./mcp-manifest.json
# Test autodiscovery from a domain
npx mcp-manifest-validate ironlicensing.com
# Validate from a URL
npx mcp-manifest-validate https://example.com/mcp-manifest.json
# Only test discovery (skip validation)
npx mcp-manifest-validate --discover ironlicensing.com
What It Checks
- Discovery — Can the manifest be found via well-known URL or HTML link tag?
- Schema — Does it conform to the mcp-manifest spec?
- Semantics — Are config keys unique? Do template variables reference real config entries? Does the transport match the endpoint?
- Installation — Is the command available on PATH?
Example Output
MCP Manifest Validator
Input: ironlicensing.com
Discovery
✓ Manifest found via well-known: https://ironlicensing.com/.well-known/mcp-manifest.json
Schema Validation
✓ Valid against mcp-manifest schema v0.1
Server Info
ℹ Name: IronLicensing
ℹ Version: 1.1.0
ℹ Description: Manage IronLicensing products, tiers, features, licenses, and analytics
ℹ Author: IronServices
Installation
ℹ Method: dotnet-tool (IronLicensing.Mcp)
ℹ Command: ironlicensing-mcp
✓ "ironlicensing-mcp" found on PATH
Transport
ℹ Type: stdio
Config
ℹ profile [string] (arg: --profile)
ℹ api-key [secret] (env: IRONLICENSING_API_KEY, arg: --api-key)
ℹ base-url [url] (env: IRONLICENSING_BASE_URL, arg: --base-url)
✓ All checks passed
Programmatic Use
import { validateManifest, discover, checkCommand } from 'mcp-manifest-validate';
// Validate a manifest object
const { valid, errors } = validateManifest(manifest);
// Discover from a domain
const { manifest, source, errors } = await discover('ironlicensing.com');
// Check if a command exists
const exists = await checkCommand('ironlicensing-mcp');
Generate
Create mcp-manifest.json from your existing Claude Code MCP server configs:
# List all configured MCP servers
npx mcp-manifest-generate
# Generate manifest for a specific server
npx mcp-manifest-generate --server ironlicensing
# Use a specific settings file
npx mcp-manifest-generate --from-settings ~/.claude/settings.json --server myserver
# Probe the server for name/version via MCP handshake
npx mcp-manifest-generate --server ironlicensing --probe
# Output to file
npx mcp-manifest-generate --server ironlicensing -o mcp-manifest.json
# Generate for all servers
npx mcp-manifest-generate --all
# Raw JSON (for piping)
npx mcp-manifest-generate --server ironlicensing --json
The generator reverse-engineers your existing config:
--flag valueargs become typed config entries (--api-key→ type:secret)- Environment variables become config entries with
env_varfield - Command patterns infer install method (
npx→ npm,uvx→ pip,.exe→ dotnet-tool) --proberuns an MCP initialize handshake to get the real server name and version
Review the generated manifest, fill in the TODO description, and commit.
License
CC0 1.0 — Public domain.
Description
Validate mcp-manifest.json files and test autodiscovery from domains.
http://www.mcp-manifest.dev
Languages
JavaScript
100%