Skip to main content

Unofficial headless MCP server for navigating McMaster-Carr and finding part numbers

Project description

McMaster Navigator MCP

Unofficial headless MCP server for navigating McMaster-Carr and finding part numbers from text queries or page navigation.

This server is for the gap before your product-data pipeline: it finds McMaster part numbers from rendered search/category pages. Once you have part numbers, use your own product API or CAD/data-sheet pipeline for detailed assets.

This project is not affiliated with, endorsed by, or sponsored by McMaster-Carr.

Features

  • Headless-only browsing with SeleniumBase UC mode.
  • Stateful navigation across searches, categories, product pages, back, and current page.
  • Product number extraction from rendered links, images, and page HTML.
  • MCP-safe stdio transport; browser logs are kept off protocol stdout.
  • Isolated temporary Chrome profile by default so stale user sessions do not break agent runs.
  • Automatic one-time browser reset/retry for common first-run ChromeDriver failures.
  • Sequential browser session with Selenium page-load timeouts.
  • Browser-free URL helper for fast product/search URL generation.

Requirements

  • Python 3.11 or newer
  • Google Chrome installed
  • Network access to https://www.mcmaster.com

SeleniumBase downloads a matching driver automatically on first use. The first live request can take longer than later requests.

Install

pip install mcmaster-navigator-mcp

Before publishing to PyPI, you can send someone the wheel:

pip install /path/to/mcmaster_navigator_mcp-0.1.0-py3-none-any.whl

For local development:

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

MCP Config

After PyPI publish, the lowest-friction config is:

{
  "mcpServers": {
    "mcmaster-navigator": {
      "command": "uvx",
      "args": ["mcmaster-navigator-mcp"]
    }
  }
}

If you install it into an environment yourself:

{
  "mcpServers": {
    "mcmaster-navigator": {
      "command": "mcmaster-navigator-mcp"
    }
  }
}

For a local virtual environment, point the MCP client at the installed console script:

{
  "mcpServers": {
    "mcmaster-navigator": {
      "command": "/absolute/path/to/.venv/bin/mcmaster-navigator-mcp"
    }
  }
}

Tools

  • mcmaster_find_parts: best default. Searches and browses rendered pages, then returns part numbers.
  • mcmaster_search: search McMaster and return the rendered page state.
  • mcmaster_open: open a URL, path, part number, or search phrase.
  • mcmaster_follow_link: follow a link from the current page by index, text, or URL.
  • mcmaster_current_page: inspect the current rendered page.
  • mcmaster_back: go back in browser history.
  • mcmaster_url: generate URLs without launching a browser.
  • mcmaster_doctor: return environment diagnostics.
  • mcmaster_close_browser: close/reset the headless browser worker.

Example Query

Ask your agent:

Use mcmaster_find_parts to find stainless steel socket head cap screw part numbers.

Expected output shape:

{
  "query": "stainless steel socket head cap screw",
  "count": 37,
  "products": [
    {
      "part_number": "91251A542",
      "name": "Socket Head Screws",
      "url": "https://www.mcmaster.com/91251A542",
      "sources": ["link", "image"],
      "confidence": 0.95
    }
  ],
  "pages_visited": []
}

Environment Variables

  • MCMASTER_NAV_PROFILE_DIR: optional persistent Chrome profile directory. Default: a temporary isolated profile per server process.
  • MCMASTER_NAV_PAGE_TIMEOUT: Selenium page load timeout in seconds. Default: 45.
  • MCMASTER_NAV_SETTLE_SECONDS: render settle delay after navigation. Default: 3.
  • MCMASTER_NAV_AUTO_DRILL_DEPTH: category levels to auto-open during search. Default: 2.
  • MCMASTER_NAV_MAX_PRODUCTS: maximum products extracted from one page. Default: 80.
  • MCMASTER_NAV_MAX_LINKS: maximum links extracted from one page. Default: 100.

Publishing

Build locally:

python -m build
twine check dist/*

Publish:

twine upload dist/*

Use a package name and project description that clearly identify this as an unofficial navigator MCP.

Validation

This package should pass the local checks before publishing:

python -m pytest -q
python -m build
twine check dist/*

For a live smoke test, run the server through an MCP client and call mcmaster_find_parts with a query such as brass ball valve.

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

mcmaster_navigator_mcp-0.1.0.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

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

mcmaster_navigator_mcp-0.1.0-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file mcmaster_navigator_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: mcmaster_navigator_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.12

File hashes

Hashes for mcmaster_navigator_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b8cd65576e82e9973dee7dbc5a6f4249333ce17f5998943ed3ffb7ffd8eba759
MD5 11bef9a4a97880aa5748ddec66b4f6ce
BLAKE2b-256 67f135179ca857abeea84bdf4d33d0bd6fc258266887e1a8d8aa525b37c39607

See more details on using hashes here.

File details

Details for the file mcmaster_navigator_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcmaster_navigator_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 525891f8d66fcbe9dfae203fcc0f05841cee72990250b1fb239fed37c1d87560
MD5 298855ec683b4bc60a0956d625a28fe7
BLAKE2b-256 a117775a8caf09f47144ddae8938828beee2d6232b6db7e2eb9086fa0ad0a527

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