Skip to main content
Glama
SpectraSynq

mcp-nexar

by SpectraSynq
README.md
<div align="center">

# mcp-nexar

Model Context Protocol server for Nexar/Octopart component search.

[![License](https://img.shields.io/github/license/SpectraSynq/mcp-nexar?style=flat-square)](LICENSE)
[![GitHub](https://img.shields.io/badge/github-SpectraSynq%2Fmcp--nexar-blue?style=flat-square&logo=github)](https://github.com/SpectraSynq/mcp-nexar)
[![Discord](https://img.shields.io/badge/discord-join-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.gg/8y8rXegU8j)

</div>

`mcp-nexar` exposes Nexar GraphQL supply search through MCP tools for part lookup, exact MPN search, and datasheet URL extraction. It is intended for PCB design and EDA agents that need Octopart/Nexar component data without embedding project-specific K1 hardware code.

This repository is the canonical source for the Nexar MCP server. `SpectraSynq/K1.hardware` consumes it by repository reference instead of carrying a second editable copy.

## Quickstart

Install in an isolated Python environment:

```bash
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
export NEXAR_CLIENT_ID="your-client-id"
export NEXAR_CLIENT_SECRET="your-client-secret"
mcp-nexar
```

Nexar credentials are required for live API calls. Create your own application credentials in Nexar; do not commit them to a repository or MCP config file.

## Tools

- `parts_search(q, limit=3)` - free-text supply search for MPNs, manufacturers, and datasheet URLs.
- `part_by_mpn(mpn)` - exact MPN lookup with basic specs.
- `best_datasheet_url(mpn)` - extracts the first `bestDatasheet.url` from an MPN search.

## Claude Desktop example

```json
{
  "mcpServers": {
    "nexar": {
      "command": "/absolute/path/to/mcp-nexar/.venv/bin/mcp-nexar",
      "env": {
        "NEXAR_CLIENT_ID": "your-client-id",
        "NEXAR_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}
```

## Honest local demo

This demo proves the package imports and refuses to call the network without credentials:

```bash
python - <<'PY'
from mcp_nexar.server import clear_token_cache, get_token

clear_token_cache()
try:
    get_token()
except RuntimeError as exc:
    print(exc)
PY
```

Expected output:

```text
Set NEXAR_CLIENT_ID and NEXAR_CLIENT_SECRET before using Nexar tools.
```

Run the offline test harness:

```bash
python -m pip install -e ".[dev]"
python -m pytest -q
```

## Provenance

Extracted from `SpectraSynq/K1.hardware` after the repository transfer to the SpectraSynq organisation.

- Source commit: `002fc9770c6211a752dfb50c43802c245c7e69`
- Source file: `mcp/mcp-nexar/server.py`
- Source SHA-256: `cbb668253d78fa2e01e6ccf87ee2e7bee56555644e583c91239bad757ae7ce94`

## Part of the SpectraSynq toolchain

- [K1.hardware](https://github.com/SpectraSynq/K1.hardware) - flagship KiCad and hardware automation repository.
- [mcp-lcsc](https://github.com/SpectraSynq/mcp-lcsc) - LCSC OpenAPI component lookup.
- [mcp-kicad-cli](https://github.com/SpectraSynq/mcp-kicad-cli) - KiCad CLI automation through MCP.

## License

Apache-2.0 - see [LICENSE](LICENSE).

TDQS

A3.6/5.0

Scored across 3 tools

Disambiguation4/5

Each tool serves a distinct purpose: exact MPN lookup, free-text search, and datasheet URL retrieval. The potential confusion between part_by_mpn and best_datasheet_url is mitigated by clear descriptions of differing outputs.

Naming Consistency2/5

Tool names lack a consistent pattern. 'parts_search' follows a noun-verb structure, while 'part_by_mpn' uses a prepositional phrase and 'best_datasheet_url' is an adjective-noun combination. The inconsistent naming style makes the set feel ad hoc.

Tool Count5/5

With only 3 tools, the server is well-scoped for a focused part-search and datasheet service. Each tool is essential, and the count falls comfortably within the ideal range.

Completeness4/5

The server covers the core functions of part search (exact and free-text) and datasheet retrieval. Minor gaps exist, such as no explicit endpoint for part specifications or availability, but these are likely covered by the part_by_mpn response, making the surface adequate.

Maintenance

ActivityStale
ResponsivenessNo issues