{
  "markdown": "# Partuno - DigiKey & Mouser MCP Server\n\n<p align=\"center\">\n  <img src=\"docs/assets/partuno-logo.png\" alt=\"Partuno logo\" width=\"144\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/JPMarhefka/partuno/actions/workflows/ci.yml\"><img src=\"https://github.com/JPMarhefka/partuno/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/github/license/JPMarhefka/partuno\" alt=\"License\"></a>\n  <a href=\"https://www.python.org/\"><img src=\"https://img.shields.io/badge/python-3.12%2B-3776AB\" alt=\"Python\"></a>\n  <a href=\"https://glama.ai/mcp/servers/JPMarhefka/partuno\"><img src=\"https://glama.ai/mcp/servers/JPMarhefka/partuno/badges/score.svg\" alt=\"partuno MCP server\"></a>\n</p>\n\n<!-- mcp-name: io.github.JPMarhefka/partuno -->\n\n## Local-first component intelligence for MCP\n\nPartuno is an open-source, provider-neutral, local-first Model Context Protocol\n(MCP) server for electronic component research, BOM analysis, sourcing\ncomparison, and safe distributor workflows. Connect an AI assistant to your\nown DigiKey and Mouser credentials without shared credentials or autonomous\nordering, while keeping evidence, normalized attributes, and explicit\nuncertainty visible.\n\nPartuno was initially developed as a native MCP server. Native MCP is the\nrecommended connection because it works as an app in ordinary ChatGPT\nconversations and exposes richer tool annotations. Existing Custom GPT Action\nendpoints remain available for backward compatibility, including\n`/action-openapi.json`.\n\n> Partuno does not provide a shared public server or shared distributor\n> credentials. The Render configuration is an optional reference deployment\n> for an operator's own single-user instance.\n\n## Start here\n\n### Use the published package (recommended)\n\nPartuno is published on [PyPI](https://pypi.org/project/partuno/) and listed in\nthe [official MCP Registry](https://registry.modelcontextprotocol.io/). The\nrecommended local MCP launcher is:\n\n```bash\nuvx --from partuno partuno-mcp\n```\n\nThis downloads the current published release and runs the default local stdio\ntransport. To pin the current release exactly, use:\n\n```bash\nuvx --from 'partuno==4.0.1' partuno-mcp\n```\n\nMCP clients that accept a local command can use `uvx` with these arguments:\n\n```json\n{\n  \"command\": \"uvx\",\n  \"args\": [\"--from\", \"partuno\", \"partuno-mcp\"]\n}\n```\n\nKeep your operator-owned DigiKey and Mouser credentials in the MCP client's\nenvironment. See the [local deployment guide](docs/deployment/local.md) for\nthe supported variables and the [native MCP setup guide](MCP_SETUP.md) for\noperator-owned remote deployments. For a hosted directory listing, see\n[Partuno on Glama](https://glama.ai/mcp/servers/JPMarhefka/partuno).\n\n### Install with pip\n\nIf `uvx` is not available, install the published package into an existing\nPython environment:\n\n```bash\npython3 -m pip install partuno\npartuno-mcp\n```\n\n<details>\n<summary><strong>Develop from source</strong></summary>\n\nUse a checkout only when contributing, running unreleased changes, or needing\nthe repository's `.env.example` and test suite:\n\n```bash\ngit clone https://github.com/JPMarhefka/partuno.git\ncd partuno\npython3 -m venv .venv\nsource .venv/bin/activate\npython -m pip install -r requirements.txt\ncp .env.example .env\nset -a\nsource .env\nset +a\npython -m partuno\n```\n\nSee the [local deployment guide](docs/deployment/local.md) for loopback HTTP\nand source-checkout details.\n\n</details>\n\n### Self-host a remote MCP server\n\nIf your client requires a reachable HTTPS endpoint, deploy your own instance\nwith your own provider accounts, OAuth application, signing key, rate limits,\nand hosting budget. Start with the [Render reference deployment](docs/deployment/render.md),\nor use the [Docker](docs/deployment/docker.md) and [Azure](docs/deployment/azure.md)\nguides. There is no shared Partuno endpoint intended for public use.\n\n### Use the existing Action compatibility surface\n\nCustom GPT Actions are retained for existing integrations. The Action/OpenAPI\nsurface is not the primary architecture; use native MCP for new connections.\nThe Action setup details are documented in [MCP setup](MCP_SETUP.md).\n\n## What Partuno does\n\n- Searches and inspects electronic components across DigiKey and Mouser.\n- Normalizes manufacturer part numbers, units, compliance values, and common\n  distributor-specific attribute names.\n- Compares exact component offers at a requested quantity, including price\n  breaks, minimum order quantities, order multiples, availability, and partial\n  provider failures.\n- Recommends components against hard requirements while preserving\n  `meets`, `does_not_meet`, and `unknown` evidence states.\n- Analyzes BOMs for stock, lifecycle, compliance, pricing, tariffs, lead time,\n  and substitute candidates.\n- Supports bounded account and project workflows such as read-only order\n  history, list and quote previews, receiving reconciliation, and carefully\n  confirmed mutations where the provider supports them.\n\nSee the [capability reference](docs/capabilities.md) for the current scope and\nthe safety boundary for each workflow.\n\n## DigiKey MCP server\n\nPartuno can run as a local-first DigiKey MCP server for component search,\nproduct research, current pricing and availability, lifecycle checks, MyLists,\nquotes, receiving reconciliation, and other bounded account workflows. The\n[DigiKey MCP server guide](docs/guides/digikey-mcp-server.md) covers setup,\nsupported workflows, and the provider-specific safety boundaries.\n\n## Mouser MCP server\n\nPartuno also provides a Mouser MCP server surface for catalog search, exact\noffer comparison, read-only order history, and preview-confirmed Cart\nworkflows. The [Mouser MCP server guide](docs/guides/mouser-mcp-server.md)\nexplains the separate operator-owned Mouser credentials and what the server\ndoes and does not execute.\n\n## Electronics BOM MCP server\n\nUse Partuno as an electronics BOM MCP server to consolidate duplicate rows,\nresolve exact products, estimate current merchandise cost, check stock and\nlifecycle risk, inspect compliance and lead-time signals, and find substitutes\nor alternate packaging. See the [electronics BOM MCP server guide](docs/guides/electronics-bom-mcp.md)\nfor a complete read-only example and known limitations.\n\n## AI component sourcing\n\nPartuno turns a natural-language engineering request into a traceable sourcing\nworkflow. Recommendations preserve `meets`, `does_not_meet`, and `unknown`\nevidence states, so missing or ambiguous attributes are not silently treated as\nqualified requirements. The [natural-language examples](docs/examples/README.md)\nshow the intended interaction style.\n\n## DigiKey vs Mouser comparison\n\nFor an exact comparison, Partuno matches manufacturer and MPN identity first,\nthen compares requested-quantity pricing, minimum order quantity, order\nmultiples, purchasable quantity, availability, and manufacturer lead time. If a\nprovider fails or returns incomplete evidence, the result remains partial\ninstead of inventing a winner. See the [DigiKey vs Mouser comparison guide](docs/guides/mouser-mcp-server.md#compare-exact-offers-across-digikey-and-mouser).\n\n## What Partuno does not do\n\n- It does not supply DigiKey or Mouser credentials.\n- It does not create a shared multi-tenant credential pool.\n- It does not silently turn unknown product data into a pass.\n- It does not submit distributor orders.\n- It does not bypass provider quotas, terms, authentication, or rate limits.\n\n## See it in action\n\n### Featured example: choose a component for a 3.3 V design\n\nOnce Partuno is connected, a user can simply ask:\n\n```text\nI’m choosing a dual op amp for a 3.3 V circuit. Find a few LM358-family\noptions that can operate at 3.3 V, are RoHS compliant, normally stocked, and\navailable in a quantity of 10. Show the evidence behind each recommendation\nand keep uncertain data clearly marked.\n```\n\nPartuno turns that plain-language request into a provider-aware result with\nqualified, unverified, and rejected candidates; normalized voltage and\ncompliance evidence; cross-distributor availability; quantity pricing; and a\nPareto shortlist. It does not silently treat missing specifications as a\npass.\n\n<p align=\"center\">\n  <img src=\"docs/assets/demos/featured-recommendation.gif\" alt=\"Partuno turning a plain-language component request into an evidence-backed recommendation\" width=\"900\">\n</p>\n\nThis is a roughly 10-second prompt-to-result capture that shows the request\nand a smooth response scroll. Prices, stock, and lead times are live provider\ndata and can change.\n\nSee [more natural-language examples](docs/examples/README.md) for comparison,\nproduct research, BOM review, and safe account-preview workflows.\n\n## Documentation\n\n| Topic | Guide |\n| --- | --- |\n| Capabilities and safety boundaries | [Capability reference](docs/capabilities.md) |\n| Native MCP connection | [MCP setup](MCP_SETUP.md) |\n| Local stdio or loopback HTTP | [Local deployment](docs/deployment/local.md) |\n| Docker deployment | [Docker deployment](docs/deployment/docker.md) |\n| Operator-owned Render deployment | [Render reference](docs/deployment/render.md) |\n| Azure deployment | [Azure deployment](docs/deployment/azure.md) |\n| Security and credential handling | [Security guide](docs/security.md) |\n| Offline and live validation | [Testing guide](docs/testing.md) and [validation notes](VALIDATION.md) |\n| Natural-language usage examples | [Examples](docs/examples/README.md) |\n| DigiKey, Mouser, and BOM entry points | [Search-focused guides](docs/guides/README.md) |\n| Contributing | [CONTRIBUTING.md](CONTRIBUTING.md) |\n| Security reports | [SECURITY.md](SECURITY.md) |\n| Release history | [CHANGELOG.md](CHANGELOG.md) |\n\n## Logo assets\n\nThe [full-resolution Partuno logo](docs/assets/partuno-logo.png) is available\nfor project pages, client listings, and integration documentation. A\n[compact plugin icon](docs/assets/partuno-plugin-icon.png) is also included for\nclient or plugin upload fields with strict PNG size limits.\n\nThe compact icon is intentionally optimized for small upload limits. If a host\naccepts larger assets, use the full-resolution logo instead. The compact icon\ncan also be downloaded directly from the repository's\n[raw asset URL](https://raw.githubusercontent.com/JPMarhefka/partuno/main/docs/assets/partuno-plugin-icon.png).\n\nWhen using the logo in a ChatGPT app, MCP client, or other plugin integration,\nidentify the integration as Partuno and do not imply endorsement by DigiKey,\nMouser, or another provider. Check the host platform's current dimensions,\nformat, and file-size requirements before uploading.\n\n## Deployment and credential model\n\n| Mode | Best for | Credential ownership |\n| --- | --- | --- |\n| Local stdio | Desktop MCP clients and personal development | Operator's local environment |\n| Loopback HTTP | Clients that cannot launch stdio | Operator's local environment |\n| Remote HTTPS | A self-hosted ChatGPT/Codex connection | Operator's own deployment and accounts |\n\nRemote mode adds OAuth and HTTPS because a hosted MCP endpoint must authenticate\nthe client and protect upstream access. It is optional; local mode remains the\ndefault and does not require Partuno OAuth.\n\n## Project status\n\nPartuno 4.0.1 is an active open-source release. The test suite covers offline\nprovider contracts, MCP tool behavior, REST compatibility, credential safety,\nnormalization, and the multi-distributor workflows. Live provider calls are\nopt-in because they require operator credentials and are subject to provider\nquotas.\n\nSee [testing](docs/testing.md) before running live smoke tests.\n\n## License and independence\n\nPartuno is released under the [Apache License 2.0](LICENSE). See [NOTICE](NOTICE)\nfor project attribution and independence statements. Partuno is not affiliated\nwith, endorsed by, or sponsored by DigiKey, Mouser, or any manufacturer or\ndistributor named in the project. Their names and marks identify integrations\nonly.\n",
  "bytes": 11940,
  "sha": "c65ee2f9286e6f4b1f10213cc9381e1ed71be5d149a2e3cf3e937ace7d513e51",
  "repo_slug": "jpmarhefka/partuno",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_jpmarhefka_partuno_e7b7e0df/readme"
}