Koskamo

Interactive Periodic Table MCP

An MCP server providing read-only access to comprehensive data for all 118 chemical elements. It supports retrieving detailed properties, electron configurations, and summaries for specific elements, searching by name or symbol, listing elements by category or properties, and comparing numeric properties of multiple elements side-by-side.

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.

Interactive Periodic Table MCP logo, by theperiodictable.orgCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by theperiodictable.org
MCP endpoint (Streamable HTTP)
https://theperiodictable.org/mcp
Vendor documentation

What you can do with it

  • Retrieve detailed properties and electron configuration for a specific element
  • Search for elements by full name, symbol, or atomic number
  • List and filter elements by category, block, period, or group
  • Compare numeric properties of 2 to 10 elements side-by-side

Source and maintenance

Community listingRegistry 1.0.6

Protocol and capabilities

Server
periodic-table 1.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

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

The Interactive Periodic Table (https://theperiodictable.org) covers all 118 elements in 9 languages. Identify elements by symbol, atomic number or name in any supported language; use search_elements when unsure. Temperatures are in kelvin, density in g/L. Link users to the returned `url` for 3D Bohr models, crystal structures and pronunciation.

Tools

4 advertised

get_element — Get element
Advertised by the server during the last successful anonymous check.
Advertised read-only

Everything the Interactive Periodic Table knows about one element: classification, physical and chemical properties with units, electron configuration, discovery, a short summary and a longer introduction (uses, production, history, safety), plus the link to its page.

get_element input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "element"
  ],
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es",
        "fr",
        "de",
        "zh",
        "pt",
        "ja",
        "hi",
        "ru"
      ],
      "type": "string",
      "description": "Language for names and text: en, es, fr, de, zh, pt, ja, hi, ru (default en)"
    },
    "element": {
      "type": "string",
      "minLength": 1,
      "description": "Symbol (Fe), atomic number (26) or name in any supported language (iron, Eisen, 铁)"
    }
  }
}
get_element annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
search_elements — Search elements
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find elements by symbol, atomic number, or full or partial name in any supported language. Use it when a name is misspelled, partial or in another language.

search_elements input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 118,
      "minimum": 1,
      "description": "Maximum results (default 10)"
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "What to look for, e.g. \"Fe\", \"26\", \"carb\", \"Sauerstoff\", \"金\""
    },
    "locale": {
      "enum": [
        "en",
        "es",
        "fr",
        "de",
        "zh",
        "pt",
        "ja",
        "hi",
        "ru"
      ],
      "type": "string",
      "description": "Language for names and text: en, es, fr, de, zh, pt, ja, hi, ru (default en)"
    }
  }
}
search_elements annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_elements — List elements
Advertised by the server during the last successful anonymous check.
Advertised read-only

List elements, optionally filtered by category, block, period, group, state at 25 °C or a numeric property range, and sorted by a property. Without filters it lists all 118 elements in atomic-number order. Elements with no value for the range or sort property are left out.

list_elements input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "max": {
      "type": "number",
      "description": "Maximum value of `property` (inclusive), in its unit"
    },
    "min": {
      "type": "number",
      "description": "Minimum value of `property` (inclusive), in its unit"
    },
    "sort": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string",
      "description": "Sort by `property` (default: atomic number)"
    },
    "block": {
      "enum": [
        "s",
        "p",
        "d",
        "f"
      ],
      "type": "string",
      "description": "Block"
    },
    "group": {
      "type": "integer",
      "maximum": 18,
      "minimum": 1,
      "description": "Group (column), 1-18; lanthanides and actinides have none"
    },
    "limit": {
      "type": "integer",
      "maximum": 118,
      "minimum": 1,
      "description": "Maximum results (default 118)"
    },
    "phase": {
      "enum": [
        "solid",
        "liquid",
        "gas"
      ],
      "type": "string",
      "description": "State at 25 °C, derived from the melting and boiling points"
    },
    "locale": {
      "enum": [
        "en",
        "es",
        "fr",
        "de",
        "zh",
        "pt",
        "ja",
        "hi",
        "ru"
      ],
      "type": "string",
      "description": "Language for names and text: en, es, fr, de, zh, pt, ja, hi, ru (default en)"
    },
    "period": {
      "type": "integer",
      "maximum": 7,
      "minimum": 1,
      "description": "Period (row), 1-7"
    },
    "category": {
      "enum": [
        "alkali-metal",
        "alkaline-earth-metal",
        "transition-metal",
        "post-transition-metal",
        "metalloid",
        "nonmetal",
        "noble-gas",
        "lanthanide",
        "actinide",
        "unknown"
      ],
      "type": "string",
      "description": "Category"
    },
    "property": {
      "enum": [
        "atomicNumber",
        "atomicMass",
        "density",
        "meltingPoint",
        "boilingPoint",
        "electronegativity",
        "ionizationEnergy",
        "electronAffinity",
        "atomicRadius",
        "covalentRadius",
        "specificHeat",
        "thermalConductivity",
        "discoveryYear"
      ],
      "type": "string",
      "description": "Numeric property for min/max and sorting"
    }
  }
}
list_elements annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
compare_elements — Compare elements
Advertised by the server during the last successful anonymous check.
Advertised read-only

Side-by-side numeric properties of 2-10 elements, with units.

compare_elements input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "elements"
  ],
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es",
        "fr",
        "de",
        "zh",
        "pt",
        "ja",
        "hi",
        "ru"
      ],
      "type": "string",
      "description": "Language for names and text: en, es, fr, de, zh, pt, ja, hi, ru (default en)"
    },
    "elements": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "description": "Symbol (Fe), atomic number (26) or name in any supported language (iron, Eisen, 铁)"
      },
      "maxItems": 10,
      "minItems": 2,
      "description": "The elements to compare"
    },
    "properties": {
      "type": "array",
      "items": {
        "enum": [
          "atomicNumber",
          "atomicMass",
          "density",
          "meltingPoint",
          "boilingPoint",
          "electronegativity",
          "ionizationEnergy",
          "electronAffinity",
          "atomicRadius",
          "covalentRadius",
          "specificHeat",
          "thermalConductivity",
          "discoveryYear"
        ],
        "type": "string"
      },
      "minItems": 1,
      "description": "Properties to include (default: all numeric properties)"
    }
  }
}
compare_elements annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
342 ms
95th percentile latency
342 ms

Maintenance history

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

  • · probe · passed · 342 ms · metadata changed · 4 tool(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 interactive-periodic-table-mcp https://theperiodictable.org/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 interactive-periodic-table-mcp --url https://theperiodictable.org/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable interactive-periodic-table-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "interactive-periodic-table-mcp": {
      "url": "https://theperiodictable.org/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "interactive-periodic-table-mcp": {
      "type": "streamableHttp",
      "url": "https://theperiodictable.org/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start interactive-periodic-table-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "interactive-periodic-table-mcp": {
      "type": "http",
      "url": "https://theperiodictable.org/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 interactive-periodic-table-mcp https://theperiodictable.org/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": {
    "interactive-periodic-table-mcp": {
      "url": "https://theperiodictable.org/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": {
    "interactive-periodic-table-mcp": {
      "serverUrl": "https://theperiodictable.org/mcp"
    }
  }
}

Let your agent find its tools

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