Skip to main content

mouser-search-mcp

Model Context Protocol server for the Mouser Electronics Search API.

Exposes the Mouser Search API as MCP tools so MCP-aware clients (Claude Code, Claude Desktop, etc.) can query Mouser's parts catalog.

Tools

Tool Endpoint What it does
search_by_keyword POST /api/v1/search/keyword Keyword search across the catalog (up to 50 parts). Supports paging and RoHS/in-stock filters.
search_by_part_number POST /api/v1/search/partnumber Look up 1–10 part numbers (pipe-separated), with optional exact-match.
search_by_keyword_and_manufacturer POST /api/v2/search/keywordandmanufacturer Keyword search scoped to one manufacturer by name.
search_by_part_number_and_manufacturer POST /api/v2/search/partnumberandmanufacturer Part-number lookup scoped to one manufacturer by name.
list_manufacturers GET /api/v2/search/manufacturerlist Enumerate manufacturer names (use the result to populate the manufacturer_name argument on the two manufacturer-filtered tools).

Prerequisites

Install

Using uv (recommended):

uv pip install -e .

Or with pip:

pip install -e .

Configure

The server reads the API key from the MOUSER_API_KEY environment variable. Copy .env.example to .env and fill in your key, or export it in your shell.

Run

The server speaks MCP over stdio:

MOUSER_API_KEY=... mouser-search-mcp

Use with Claude Code

Register the server (replace the path and key):

claude mcp add mouser-search \
  --env MOUSER_API_KEY=your-key \
  -- mouser-search-mcp

Use with Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "mouser-search": {
      "command": "mouser-search-mcp",
      "env": {
        "MOUSER_API_KEY": "your-key"
      }
    }
  }
}

If mouser-search-mcp is not on your PATH, point command at the absolute path to the script (e.g. inside your venv's bin/).

Notes

  • Mouser returns at most 50 records per search response. Use records + starting_record (v1 keyword search) or records + page_number (v2 keyword+manufacturer search) to page.
  • search_options accepts None, Rohs, InStock, or RohsAndInStock — only one at a time.
  • part_search_options accepts None or Exact.
  • The cart and order endpoints documented by Mouser require an Ordering API key and are not exposed by this server — it covers search only.

Releasing

Versioning and releases are fully automated by python-semantic-release. Every push to main runs .github/workflows/release.yml, which:

  1. Inspects commits since the last tag.
  2. Decides the next version (or does nothing if no release-worthy commits).
  3. Updates version in pyproject.toml, generates the changelog, commits, and pushes a vX.Y.Z tag.
  4. Builds wheel + sdist and uploads them to PyPI.
  5. Creates a GitHub Release with auto-generated notes.

Commit grammar

Commits must follow Conventional Commits. The leading keyword decides the bump:

Prefix Bump Example
feat: minor feat: add list_manufacturers tool
fix: patch fix: handle empty Errors array
perf: patch perf: reuse httpx client
feat!: / BREAKING CHANGE: in body major feat!: rename tools
docs:, chore:, refactor:, test:, ci:, style: none (no release cut)

Anything else is ignored. If you push a flurry of small commits, semantic-release collapses them into a single release on the next workflow run.

One-time setup

These steps need to be done once in the GitHub UI before the workflow can publish:

  1. PyPI account + token — create a PyPI account, then on the API tokens page generate an account-scoped token (the project doesn't exist on PyPI yet, so it can't be project-scoped on the first release; re-scope it to mouser-search-mcp after the first successful publish).
  2. Repo secret — in GitHub: Settings → Secrets and variables → Actions → New repository secret, name PYPI_API_TOKEN, paste the token value.
  3. Workflow permissions — Settings → Actions → General → Workflow permissions must be set to Read and write permissions so semantic-release can push the version bump commit and tag.

After that, just merge to main with a feat: or fix: commit and the rest happens automatically. To skip a release, use a non-bumping prefix (docs:, chore:, etc.) or include [skip ci] in the commit message.

Metadata

Release files for mouser-search-mcp 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mouser-search-mcp 0.0.1
File Size Uploaded Provenance
mouser_search_mcp-0.0.1.tar.gz 6.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mouser-search-mcp 0.0.1
File Interpreter ABI Platform
mouser_search_mcp-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 11.7 kB

Release files / mouser_search_mcp-0.0.1.tar.gz

Download URL mouser_search_mcp-0.0.1.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7fbe3100f46e1945a2a950ec9c2d678060f0d4ff87d1187b8d3e32a8d297411a
BLAKE2b-256 checksum
How to use checksums
dfa9a17a7fac6e40b3135ae21666063dd4671c1c30ff715f1dbcc28d0f7eb5ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / mouser_search_mcp-0.0.1-py3-none-any.whl

Download URL mouser_search_mcp-0.0.1-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3a7cea780254e4dc30f8eb2af70a649f9bc86e158efd8a838bf7d0354dfee8e6
BLAKE2b-256 checksum
How to use checksums
c4e7a8a11cb0545b28f6748baf39d71ef4284c67bf9e6c630e8a7e5e200892aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Security for mouser-search-mcp 0.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page