Skip to main content

A MCP server with playwright fetch tools

Project description

playwright-mcp-fetch

Current version: 0.1.1

This tool provides a Model Context Protocol (MCP) server for fetching content from websites and converting it to different formats using Playwright.

Requirements

  • Python 3.10 or higher

Features

  • fetch_html: Fetch the raw HTML content from a website
  • fetch_markdown: Fetch content from a website and convert it to Markdown format
  • fetch_txt: Fetch and return plain text content from a website (HTML tags removed)
  • fetch_json: Fetch and parse JSON content

Installation

From Source

git clone https://github.com/kevinwatt/playwright-mcp-fetch.git
cd playwright-mcp-fetch
pip install -e .

Install Dependencies

pip install -r requirements.txt
# Install Playwright browsers
playwright install

Usage

Run as stdio MCP Server

playwright-mcp-fetch

Run as SSE MCP Server

# Run with the SSE transport
playwright-mcp-fetch-sse

This will start an HTTP server providing the following endpoints:

  • GET /: Server status page
  • GET /sse: SSE connection endpoint
  • POST /api/list-tools: List available tools
  • POST /api/call-tool: Call a tool

Environment Variables

  • PORT: HTTP server port (default: 3000)
  • TRANSPORT_TYPE: Transport type, either stdio or sse (default: stdio)
  • fetch_html: Whether to enable the fetch_html tool, either Enable or Disable (default: Disable)

MCP Client Configuration

To use this server in an MCP client, use the following configuration:

{
  "mcpServers": {
    "fetch-tools": {
      "enabled": true,
      "transport": "sse",
      "url": "http://localhost:3000/sse"
    }
  }
}

You can replace fetch-tools with any name you prefer, and adjust the URL according to your deployment environment.

API Examples

List Tools

curl -X POST http://localhost:3000/api/list-tools

Call a Tool

curl -X POST http://localhost:3000/api/call-tool \
  -H "Content-Type: application/json" \
  -d '{"name": "fetch_markdown", "arguments": {"url": "https://example.com"}}'

SSE Client Example

import json
import aiohttp
import asyncio

async def sse_client():
    async with aiohttp.ClientSession() as session:
        async with session.get("http://localhost:3000/sse") as response:
            async for line in response.content:
                if line.startswith(b"data: "):
                    data = json.loads(line[6:].decode("utf-8"))
                    print(f"Received event: {data}")

asyncio.run(sse_client())

Development

# Install in development mode
pip install -e .

# Run tests
pytest

Docker Support

Build and run with Docker:

docker build -t playwright-mcp-fetch .
docker run -p 3000:3000 -e TRANSPORT_TYPE=sse playwright-mcp-fetch

Or use Docker Compose:

docker-compose up -d

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

playwright_mcp_fetch-0.1.2.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

playwright_mcp_fetch-0.1.2-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file playwright_mcp_fetch-0.1.2.tar.gz.

File metadata

  • Download URL: playwright_mcp_fetch-0.1.2.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for playwright_mcp_fetch-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4a0f4276a7935aa3a379ac0d8c28cbeaba0fac24c9ddbc4e553c7aa4ad057ffe
MD5 588ca938cf9c533ebcc97a489f3c5cae
BLAKE2b-256 0ca5ecf7a151ce72c63911c5692f032ff9e652b937a596ee6ee3c7043f625f31

See more details on using hashes here.

File details

Details for the file playwright_mcp_fetch-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for playwright_mcp_fetch-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fba18bdc7731f85bed49574907055e5ff94946a65d96d1aea9a05a147ef87082
MD5 1dc2198a661a3b0c347d7ca484d624e1
BLAKE2b-256 a039055048ec532d50b4f4fdd51f393b6d0ad034aa2bd3877135accae4754f0a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page