Koskamo

Kelvin MCP

Kelvin is a read-only Model Context Protocol server providing a deterministic parts catalogue for power electronics. It allows AI agents to perform parametric searches, retrieve detailed part information, find cross-references, and get recommendations for components like MOSFETs, capacitors, and resistors without requiring sign-in.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Kelvin MCP logo, by OpenConvertersCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by OpenConverters
MCP endpoint (Streamable HTTP)
https://kelvin.openconverters.com/mcp
Vendor documentation

What you can do with it

  • Search for electronic components by parametric values
  • Retrieve detailed specifications and datasheet links for a specific part
  • Find cross-reference substitutes for a given MPN
  • Get recommended parts based on design requirements

Source and maintenance

Community listingRegistry 0.1.0

Protocol and capabilities

Server
Kelvin 1.27.0
MCP protocol
2025-06-18
Tools
7 advertised
Resources
1 advertised
Resource templates
0 advertised
Prompts
3 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "experimental": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Kelvin is a deterministic parts librarian over the TAS component catalogue (no LLM inside). Start with list_families, then describe_family for the exact field names before search_parts — an unknown filter field is an error, not ignored. part_details looks up one MPN; recommend_parts ranks parts for a requirement; cross_reference finds scored substitutes for an MPN; spec_distribution shows what is actually available. Values are SI base units. A part whose record does not state a field is excluded by a filter on it — absence is never reported as 0.

Tools

7 advertised

list_families — List catalogue families
Advertised by the server during the last successful anonymous check.
Advertised read-only

Every component family in the TAS catalogue, with how many parts it holds and whether it has a deterministic selector. Start here.

list_families input schema
{
  "type": "object",
  "title": "list_familiesArguments",
  "properties": {}
}
list_families annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
describe_family — Describe a family's query vocabulary
Advertised by the server during the last successful anonymous check.
Advertised read-only

The exact field names one family can be filtered, sorted and bucketed on, and the designRequirements keys its selector reads. Call this before search_parts on an unfamiliar family rather than guessing field names.

describe_family input schema
{
  "type": "object",
  "title": "describe_familyArguments",
  "required": [
    "family"
  ],
  "properties": {
    "family": {
      "type": "string",
      "title": "Family"
    }
  }
}
describe_family annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_parts — Search the parts catalogue
Advertised by the server during the last successful anonymous check.
Advertised read-only

Parametric search over one family: numeric ranges, categorical values, MPN substring and manufacturer, with optional facet counts. This is the catalogue question — 'what parts do we have that ...' — and needs no converter design.

search_parts input schema
{
  "type": "object",
  "title": "search_partsArguments",
  "required": [
    "family"
  ],
  "properties": {
    "sort": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Sort",
      "default": null
    },
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 25
    },
    "family": {
      "type": "string",
      "title": "Family"
    },
    "offset": {
      "type": "integer",
      "title": "Offset",
      "default": 0
    },
    "filters": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Filters",
      "default": null
    },
    "with_facets": {
      "type": "boolean",
      "title": "With Facets",
      "default": false
    }
  }
}
search_parts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
part_details — Look up one part
Advertised by the server during the last successful anonymous check.
Advertised read-only

One part by MPN: its extracted specs and, optionally, the full TAS catalogue record behind them (datasheet URL, mechanical drawing, provenance).

part_details input schema
{
  "type": "object",
  "title": "part_detailsArguments",
  "required": [
    "family",
    "mpn"
  ],
  "properties": {
    "mpn": {
      "type": "string",
      "title": "Mpn"
    },
    "family": {
      "type": "string",
      "title": "Family"
    },
    "manufacturer": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Manufacturer",
      "default": null
    },
    "include_record": {
      "type": "boolean",
      "title": "Include Record",
      "default": true
    }
  }
}
part_details annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
recommend_parts — Recommend parts for a requirement
Advertised by the server during the last successful anonymous check.
Advertised read-only

Kelvin's deterministic selector: rank real parts against a designRequirements block and return the candidates with the margins that ranked them. Same authority Kirchhoff and Heaviside select through — no LLM judgement, reproducible.

recommend_parts input schema
{
  "type": "object",
  "title": "recommend_partsArguments",
  "required": [
    "family",
    "requirements"
  ],
  "properties": {
    "family": {
      "type": "string",
      "title": "Family"
    },
    "options": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Options",
      "default": null
    },
    "max_results": {
      "type": "integer",
      "title": "Max Results",
      "default": 12
    },
    "requirements": {
      "type": "object",
      "title": "Requirements",
      "additionalProperties": true
    },
    "include_envelope": {
      "type": "boolean",
      "title": "Include Envelope",
      "default": false
    }
  }
}
recommend_parts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
spec_distribution — Distribution of a spec
Advertised by the server during the last successful anonymous check.
Advertised read-only

How one numeric spec is distributed across a filtered slice of a family — bucket counts (log or linear) plus how many parts state the value at all. Answers 'what is available' questions that a top-N list cannot.

spec_distribution input schema
{
  "type": "object",
  "title": "spec_distributionArguments",
  "required": [
    "family",
    "field"
  ],
  "properties": {
    "log": {
      "type": "boolean",
      "title": "Log",
      "default": true
    },
    "field": {
      "type": "string",
      "title": "Field"
    },
    "family": {
      "type": "string",
      "title": "Family"
    },
    "buckets": {
      "type": "integer",
      "title": "Buckets",
      "default": 20
    },
    "filters": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Filters",
      "default": null
    }
  }
}
spec_distribution annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cross_reference — Cross-reference a part
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find substitutes for a part by MPN — the deterministic, program-only cross-reference the Kelvin web app runs: pre-gate the catalogue at the ranker's own reject edges, then score every candidate on value, ratings, footprint and mount type. No LLM judgement. An original whose own specs are incomplete can never yield a clean 'recommended'.

cross_reference input schema
{
  "type": "object",
  "title": "cross_referenceArguments",
  "required": [
    "family",
    "mpn"
  ],
  "properties": {
    "mpn": {
      "type": "string",
      "title": "Mpn"
    },
    "family": {
      "type": "string",
      "title": "Family"
    },
    "same_type": {
      "type": "boolean",
      "title": "Same Type",
      "default": true
    },
    "max_results": {
      "type": "integer",
      "title": "Max Results",
      "default": 12
    },
    "manufacturer": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Manufacturer",
      "default": null
    },
    "target_manufacturers": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Manufacturers",
      "default": null
    }
  }
}
cross_reference annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

3 advertised

find_replacement — Find a replacement for a part

Advertised by the server during the last successful anonymous check.

Second-source / drop-in replacement search for one MPN.

mpn
No description (required)
family
No description
target_manufacturers
No description
shortlist_parts — Shortlist parts for a requirement

Advertised by the server during the last successful anonymous check.

Rank real, stocked parts against a plain-language requirement.

family
No description (required)
requirement
No description (required)
spec_landscape — What is available for a spec

Advertised by the server during the last successful anonymous check.

How a spec is spread across the catalogue before choosing a value.

family
No description (required)
spec
No description (required)

Resources

1 advertised

kelvin-picker — Kelvin candidate picker

Advertised by the server during the last successful anonymous check.

Ranked-candidate picker: sortable spec table, per-parameter verdict pills, the ranker's notes, and a 'use this' action that reports the choice back to the model. Shared by search_parts, recommend_parts and cross_reference — they all return the same shape and pose the same question. MCP App resources render in a deny-by-default CSP iframe, so the widget is built as ONE self-contained file (vite-plugin-singlefile).

kelvin-picker URI
ui://kelvin/picker.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1246 ms
95th percentile latency
1246 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1246 ms · metadata changed · 7 tool(s), 1 resource(s), 0 resource template(s), 3 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http kelvin-mcp https://kelvin.openconverters.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add kelvin-mcp --url https://kelvin.openconverters.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable kelvin-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "kelvin-mcp": {
      "url": "https://kelvin.openconverters.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "kelvin-mcp": {
      "type": "streamableHttp",
      "url": "https://kelvin.openconverters.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start kelvin-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "kelvin-mcp": {
      "type": "http",
      "url": "https://kelvin.openconverters.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http kelvin-mcp https://kelvin.openconverters.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "kelvin-mcp": {
      "url": "https://kelvin.openconverters.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "kelvin-mcp": {
      "serverUrl": "https://kelvin.openconverters.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Kelvin MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.