by mldsveda
Python web scraping toolkit and MCP server that gives AI agents clean, structured web data from any URL or built-in scrapers.
# Add to your Claude Code skills
git clone https://github.com/mldsveda/PyScrappyLast scanned: 8/4/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-04T06:28:13.481Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}PyScrappy is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by mldsveda. Python web scraping toolkit and MCP server that gives AI agents clean, structured web data from any URL or built-in scrapers. It has 102 GitHub stars.
Yes. PyScrappy passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/mldsveda/PyScrappy" and add it to your Claude Code skills directory (see the Installation section above).
PyScrappy is primarily written in Python. It is open-source under mldsveda on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh PyScrappy against similar tools.
No comments yet. Be the first to share your thoughts!
PyScrappy is an AI-native web scraping toolkit that turns websites into structured, LLM-ready data. Use it as a Python library or expose it as an MCP server for AI agents.
📖 Documentation: pyscrappy.vercel.app
.to_markdown() turns any result into clean Markdown; also .to_json() and .to_dataframe()scrape_many / scrape_all run scrapes in parallelpy.typed markerpip install pyscrappy
Optional extras:
# Browser support (for JS-rendered pages)
pip install 'pyscrappy[browser]'
playwright install chromium
# DataFrame support
pip install 'pyscrappy[dataframe]'
# MCP server (use PyScrappy's scrapers as AI-agent tools)
pip install 'pyscrappy[mcp]'
# Everything
pip install 'pyscrappy[all]'
PyScrappy ships an MCP server that exposes its scrapers as tools, so an agent (Claude, Cursor, an OpenAI agent, a local LLM) can pull structured web data from any URL and hand it straight to the model:
AI agent ──MCP tool call──▶ PyScrappy ──fetch + extract──▶ Any website
▲ │
└────────────── clean Markdown / JSON ◀───────────────────────┘
pip install 'pyscrappy[mcp]'
claude mcp add pyscrappy pyscrappy-mcp
Then just ask: "use pyscrappy to summarize the latest headlines from bbc.com." See MCP server for the full setup and tool list.
Ollama can't talk MCP on its own, so normally you'd run a host (Goose, Cline, …) in between. PyScrappy skips that with a built-in agent that talks to Ollama directly and lets a local model call the scrapers as tools:
pip install 'pyscrappy[mcp]' # needs Python 3.10+
pyscrappy chat --model qwen2.5 "what's the current AAPL quote?"
It exposes the same 22 tools as the MCP server. The only requirement is a model
that supports tool calling (Llama 3.1, Qwen 2.5, Mistral, …); how well it
picks the right tool is up to the model. Point it at a remote Ollama with
--host, and pass -v to see each tool call.
PyScrappy ships an optional Model Context Protocol server, so an AI agent (e.g. Claude) can call PyScrappy's scrapers as tools and get structured web data back.
pip install 'pyscrappy[mcp]'
The MCP extra installs the standalone fastmcp package and requires Python 3.10
or newer. On Python 3.9 the core scraping library still works, but the MCP server
is unavailable.
This installs the pyscrappy-mcp command. It uses stdio by default for local MCP
clients; Streamable HTTP and legacy SSE are available for remote deployments:
pyscrappy-mcp # stdio (default)
pyscrappy-mcp --http # Streamable HTTP
pyscrappy-mcp --sse # legacy SSE
You can also run the stdio server with python -m pyscrappy.mcp.
claude mcp add pyscrappy pyscrappy-mcp
Add to your claude_desktop_config.json and restart the app:
{
"mcpServers": {
"pyscrappy": {
"command": "pyscrappy-mcp"
}
}
}
Tip: Claude Desktop does not inherit your shell
PATH. Ifpyscrappy-mcpis not found, use the absolute path to the command (e.g. the one printed bywhich pyscrappy-mcp).
| Tool | Description |
|---|---|
scrape_url |
Scrape any URL — text, links, images, tables, metadata |
scrape_wikipedia |
Fetch a Wikipedia article (full / paragraphs / headers) |
scrape_stock |
Yahoo Finance quotes, history, and profiles |
scrape_news |
RSS/Atom feeds, auto-discovered site feeds, or a single article |
search_images |
Image search (returns URLs + metadata) |
search_youtube |
YouTube video search |
search_linkedin_jobs |
Public LinkedIn job listings |
search_github |
GitHub repository search (stars, language, …) |
search_hackernews |
Hacker News story search (points, comments) |
search_books |
Book search via Open Library (title, author, year) |
get_weather |
Current weather for a place (no key) |
get_crypto |
Cryptocurrency prices and market data (CoinGecko) |
convert_currency |
Exchange rates and currency conversion |
define_word |
Word definitions and examples |
search_amazon |
Amazon product search |
search_newegg |
Newegg electronics / computer hardware search |
search_ikea |
IKEA furniture / home search |
search_soundcloud |
SoundCloud track search (uses the browser backend) |
lookup_movie |
Movie/TV info from IMDB by title or id (via OMDb; needs OMDB_API_KEY) |
scrape_zomato |
Restaurant listings by city |
search_ubereats |
Uber Eats restaurants by city |
get_ubereats_menu |
An Uber Eats restaurant's full menu (from its store URL) |
The lookup_movie tool needs a free OMDb API
key. Pass it to the server through your MCP client config, e.g. for Claude Desktop:
{
"mcpServers": {
"pyscrappy": {
"command": "pyscrappy-mcp",
"env": { "OMDB_API_KEY": "your-key" }
}
}
}
Once registered, just ask the agent naturally, e.g. "use pyscrappy to get the latest headlines from bbc.co.uk and the AAPL stock quote."
Every scraper that works without a proxy is also exposed as an MCP tool (last column).
| Scraper | What it does | Browser? | MCP tool |
|---|---|---|---|
GenericScraper |
Scrape any URL with auto-extraction | Optional | scrape_url |
| Data / Research | |||
WikipediaScraper |
Articles, sections, infoboxes | No | scrape_wikipedia |
IMDBScraper |
Movie/TV info by title or id (via OMDb API; needs OMDB_API_KEY) |
No | lookup_movie |
StockScraper |
Quotes, history, profiles (Yahoo Finance) | No | scrape_stock |
NewsScraper |
RSS/Atom feeds, article extraction | No | scrape_news |
ImageSearchScraper |
Image search + download | No | search_images |
LinkedInJobsScraper |
Public job listings | No | search_linkedin_jobs |
GitHubScraper |
Repository search (stars, language, …) via GitHub API | No | search_github |
HackerNewsScraper |
Story search (points, comments) via HN API | No | search_hackernews |
OpenLibraryScraper |
Book search (title, author, year) via Open Library | No | search_books |
WeatherScraper |
Current weather by place, via Open-Meteo (no key) | No | get_weather |
CryptoScraper |
Crypto prices / market cap via CoinGecko (no key) | No | get_crypto |
CurrencyScraper |
Currency exchange rates + conversion (no key) | No | convert_currency |
DictionaryScraper |
Word definitions, examples (Free Dictionary API) | No | define_word |
| E-Commerce | |||
AmazonScraper |
Product search | No | search_amazon |
NeweggScraper |
Electronics / computer hardware search | No | search_newegg |
IKEAScraper |
Furniture / home search, per-country prices (JSON API) | No | search_ikea |
| Social Media | |||
YouTubeScraper |
Video search, channel scraping | Optional | search_youtube |
InstagramScraper |
Profiles, hashtag posts (blocked; needs proxy) | Recommended | — |
TwitterScraper |
Tweet search (blocked; needs proxy) | Recommended | — |
| Music | |||
SpotifyScraper |
Track/playlist search (blocked; needs proxy) | Recommended | — |
SoundCloudScraper |
Track search | Optional | search_soundcloud |
| Food Delivery | |||
ZomatoScraper |
Restaurant listings by city | Recommended | scrape_zomato |
UberEatsScraper |
Restaurants by city + full menus (any Uber Eats country) | No | search_ubereats, get_ubereats_menu |
PyScrappy is extensible: you can add your own scrapers, and third parties can
ship them as standalone pyscrappy-<name> packages. A registered scraper works
everywhere a built-in does, including the MCP server and the pyscrappy chat
agent, with no change to