Exposes two tools for web scraping workflows: html_to_md converts HTML into clean Markdown, and extract_text strips straight to plain text. Built for agents that need to ingest web content without the noise of tags, scripts, and styling. Part of a fourteen-server collection (mcp-stack) that handles transforms LLMs routinely hallucinate. Ships as an npm package you can run via npx in Claude Desktop, Cursor, Cline, or any MCP client. Install it when your agent is fetching pages and you want deterministic parsing instead of letting the model imagine what the HTML contained or guess at Markdown conversion rules.
Public tool metadata for what this MCP can expose to an agent.
text_convert_html_to_markdownUse this when you need to convert HTML to clean Markdown text. Returns the converted markdown in JSON. Returns: 1. markdown (converted text) 2. inputLength (character count of HTML) 3. outputLength (1 paramsUse this when you need to convert HTML to clean Markdown text. Returns the converted markdown in JSON. Returns: 1. markdown (converted text) 2. inputLength (character count of HTML) 3. outputLength (
htmlstringFourteen small MCP servers for everyday LLM / RAG / agent work. Each ships independently on npm, listed in the official MCP Registry, and is callable from Claude Desktop, Cursor, Cline, Windsurf, Zed, and any other MCP-compatible client.
| Package | Tools | When to install |
|---|---|---|
@mukundakatta/promptbudget-mcp | truncate_to_token_budget | LLM needs to fit text into a context window mid-task |
@mukundakatta/citecite-mcp | inject_citations, parse_citations, strip_citations | Round-trip [1] [2] markers in RAG outputs |
@mukundakatta/ragmetric-mcp | recall_at_k, hit_at_k, mrr, ndcg_at_k, evaluate_batch | LLM helps score retrieval quality |
@mukundakatta/ragdrift-mcp | interpret_drift_score, recommend_thresholds, explain_drift_dimensions | LLM diagnoses RAG drift alerts |
| Package | Tools | When to install |
|---|---|---|
@mukundakatta/csv-tools-mcp | parse_csv, to_csv, pluck_columns | LLM needs RFC 4180-correct CSV (quoted fields, embedded commas, BOMs) |
@mukundakatta/regex-test-mcp | test_regex, find_all, replace | LLM needs exact regex semantics with real match offsets and named groups |
@mukundakatta/jmespath-mcp | json_query | LLM needs deep JSON traversal (filters, projections, pipes) without hallucinating |
@mukundakatta/diff-mcp | unified_diff, apply_patch, parse_patch | Code-review or code-edit agent needs character-precise patches |
@mukundakatta/sqlfmt-mcp | format_sql, list_dialects | Deterministic SQL formatting across 19 dialects |
@mukundakatta/shellquote-mcp | quote_bash, quote_bash_argv, quote_cmd, quote_powershell | Safe shell argument escaping; LLMs constantly mishandle quotes/$VAR |
@mukundakatta/json5-mcp | parse_json5, to_json5, to_strict_json | LLM emitted JSON-with-comments / trailing-commas; round-trip to strict JSON |
@mukundakatta/toml-yaml-json-mcp | parse, format, convert | TOML / YAML / JSON conversion (LLMs especially mishandle TOML) |
@mukundakatta/timezone-mcp | convert_tz, now_in, tz_offset | IANA timezone math with real DST rules; LLMs hallucinate offsets |
@mukundakatta/html-to-markdown-mcp | html_to_md, extract_text | Web-scraping agents need clean Markdown / text from HTML |
The first four wrap or re-implement logic from the user's Rust + Python work:
ragdrift (crates.io) /
ragdrift-py (PyPI) — five-dimensional drift detectionembedrank, promptbudget,
stopstream, citecite,
ragmetric — pure-Rust crates from
the rust-llm-stack workspaceThe MCP servers are independent: they implement the logic they need in plain JavaScript so installing them doesn't pull a Rust toolchain.
Add to your MCP client config. Example for Claude Desktop:
{
"mcpServers": {
"promptbudget": { "command": "npx", "args": ["-y", "@mukundakatta/promptbudget-mcp"] },
"citecite": { "command": "npx", "args": ["-y", "@mukundakatta/citecite-mcp"] },
"ragmetric": { "command": "npx", "args": ["-y", "@mukundakatta/ragmetric-mcp"] },
"ragdrift": { "command": "npx", "args": ["-y", "@mukundakatta/ragdrift-mcp"] },
"csv-tools": { "command": "npx", "args": ["-y", "@mukundakatta/csv-tools-mcp"] },
"regex-test": { "command": "npx", "args": ["-y", "@mukundakatta/regex-test-mcp"] },
"jmespath": { "command": "npx", "args": ["-y", "@mukundakatta/jmespath-mcp"] },
"diff": { "command": "npx", "args": ["-y", "@mukundakatta/diff-mcp"] },
"sqlfmt": { "command": "npx", "args": ["-y", "@mukundakatta/sqlfmt-mcp"] },
"shellquote": { "command": "npx", "args": ["-y", "@mukundakatta/shellquote-mcp"] },
"json5": { "command": "npx", "args": ["-y", "@mukundakatta/json5-mcp"] },
"toml-yaml-json": { "command": "npx", "args": ["-y", "@mukundakatta/toml-yaml-json-mcp"] },
"timezone": { "command": "npx", "args": ["-y", "@mukundakatta/timezone-mcp"] },
"html-to-md": { "command": "npx", "args": ["-y", "@mukundakatta/html-to-markdown-mcp"] }
}
}
git clone https://github.com/MukundaKatta/mcp-stack
cd mcp-stack
npm install
npm test --workspaces
MIT OR Apache-2.0.
therealtimex/browser-use
jae-jae/fetcher-mcp
merajmehrabi/puppeteer-mcp-server
com.thenextgennexus/playwright-mcp-server
saik0s/mcp-browser-use