Skip to main content
Glama
RN0000

polyhaven-mcp

by RN0000

PolyHaven MCP Server

An Model Context Protocol (MCP) server that provides agents and AI assistants access to the PolyHaven 3D asset library.

This server allows you to search, query, and retrieve download links for high-quality, CC0 HDRIs, textures, and 3D models directly through your AI assistant.

Features

This server exposes several tools that map directly to the PolyHaven public API:

  • get_asset_types: Lists available asset types (hdris, textures, models).

  • search_assets: Search for assets, optionally filtered by type and categories.

  • get_asset_info: Retrieve detailed metadata and information about a specific asset by its ID.

  • get_asset_files: Get a list of files for a specific asset, including direct download URLs for various formats and resolutions.

  • get_categories: View available categories for a given asset type (and their asset counts).

  • get_author_info: Retrieve information about a specific author.

Related MCP server: Civitai MCP Server

Installation

Prerequisites

  • Node.js (v16 or higher)

  • npm

Setup

  1. Clone this repository:

    git clone https://github.com/RN0000/polyhaven-mcp.git
    cd polyhaven-mcp
  2. Install dependencies:

    npm install
  3. Build the project:

    npm run build

Usage with MCP Clients

To use this server with an MCP-compatible client (such as Claude Desktop or Antigravity), you need to configure your client to launch the server.

Example Configuration

Add the following to your MCP client's configuration file:

{
  "mcpServers": {
    "polyhaven": {
      "command": "node",
      "args": [
        "/absolute/path/to/polyhaven-mcp/build/index.js"
      ]
    }
  }
}

Make sure to replace /absolute/path/to/polyhaven-mcp/build/index.js with the actual path to the compiled index.js file on your system.

Regarding API Usage

While this MCP server helps you connect to PolyHaven's API, this project is not affiliated with, endorsed by, or officially connected to PolyHaven in any way.

PolyHaven is generous enough to offer their API for free when used for non-commercial projects and academic research. If you're building something commercial, you'll need to reach out to them for a custom license or sponsorship. Be sure to check out PolyHaven's Terms of Service to make sure you're abiding by their terms of Service.

License

This project is licensed under the ISC License. See the package.json for more details. PolyHaven's assets are distributed under the CC0 license.

Available Tools

6 tools
get_asset_filesB

File list for a specific asset, providing URLs to download the actual files.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID/slug of the asset.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden. It states URLs are provided but does not disclose behavior like URL expiration, pagination, or whether all files are returned at once. Minimal transparency beyond basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence (13 words) that front-loads the key action and output. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter and no output schema, the description is adequate for a simple list retrieval. However, it lacks details on output format (e.g., array of objects with URL properties), which could assist an agent in using the output. Slightly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'id' parameter. The description adds no additional meaning beyond stating it is for a specific asset. Baseline 3 is appropriate as the description does not compensate beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a file list for a specific asset and outputs download URLs. It uses a specific verb ('get') and resource ('asset files'), and the context of sibling tools (e.g., get_asset_info, search_assets) helps differentiate it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, when not to use it, or any context for selection. The implied usage is only through the tool name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_asset_infoC

Information about an individual asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID/slug of the asset.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only says 'information,' which does not disclose whether the tool is read-only, destructive, rate-limited, or requires authentication. The description carries the full burden but fails to provide behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with a single sentence. No unnecessary words, though it could be slightly expanded without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema and the tool has siblings, the description is incomplete. It does not explain what the returned information contains, leaving the agent to guess the response format. A more complete description would help the agent interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100% with a single parameter 'id' that has a description. The tool description adds no further meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns information about an individual asset, distinguishing it from siblings like get_asset_files (files) or search_assets (multiple assets). However, it could be more specific about what kind of information (e.g., metadata, status).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_asset_files or search_assets. The agent receives no context about optimal usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_asset_typesA

List of asset types available (e.g., hdris, textures, models).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description lacks details on behavior (e.g., read-only, caching, or any constraints). It merely states the output without context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no unnecessary words. It effectively communicates the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and no annotations, the description is sufficient for a simple list query. However, it could mention if the list is static or dynamic.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so the description adds value by listing examples. Baseline is 4 per guidelines since schema coverage is 100% without needing param details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists asset types and provides examples, distinguishing it from siblings like get_asset_files or get_asset_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., search_assets). The description only states what it does, not when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_author_infoC

Information about a specific author.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the author.

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states 'Information about a specific author,' omitting critical behavioral traits such as read-only status, authentication requirements, or potential side effects. The description fails to compensate for missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and without unnecessary words. It is front-loaded but could be slightly more informative without losing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and only one parameter, the description should specify what kind of information is returned (e.g., author details, works). Failing to do so leaves the agent uncertain about the return value, making it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'id', with a clear description in the schema. The tool description adds no additional meaning beyond what the schema already provides, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Information about a specific author' is clear but vague; it does not specify what exact information is provided (e.g., biography, books) and fails to distinguish it from sibling tools like get_asset_info or search_assets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There are no exclusions, prerequisites, or references to sibling tools, leaving the agent without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoriesB

A list of available categories for a specific asset type.

ParametersJSON Schema
NameRequiredDescriptionDefault
inNoA comma-separated list of categories to filter by.
typeYesThe asset type (hdris/textures/models/all).

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the bare description ('a list of available categories') does not disclose behavior such as error handling, return format, or whether the 'in' filter is inclusive/exclusive. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but lacks necessary detail; not a model of conciseness as it sacrifices completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should explain return values (e.g., list of strings or objects) and behavior. It does not, leaving the agent uncertain about what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds no meaning beyond the schema; 'type' is implied but not elaborated, and 'in' is not mentioned at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool returns a list of categories for a given asset type, distinguishing it from siblings like get_asset_types (which returns asset types) and search_assets (which searches assets).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives; no explicit context or exclusions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_assetsC

Returns a list of assets, optionally filtered by type and categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter to assets of a particular type. Can be hdris/textures/models/all.
categoriesNoA comma-separated list of categories to filter by. Only assets that match all categories specified will be included.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only states it returns a list with optional filters, omitting details like pagination, ordering, concurrency, or whether it is a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the main purpose. No unnecessary words, every part is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and output schema, and the tool being a search function, the description lacks details on result format, error handling, or limitations. It feels incomplete for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters described in the schema. The description adds 'optionally filtered', but this is already implied by the schema's optional nature. No additional semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Returns a list of assets', specifying the action and resource, and mentions optional filtering. It distinguishes from sibling tools like get_asset_info and get_categories, which are more specific lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool vs. alternatives like get_asset_files or get_asset_info. No context about usage context or prerequisites is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.0
    • First observedget_asset_files
    • First observedget_asset_info
    • First observedget_asset_types
    • First observedget_author_info
    • First observedget_categories
    • First observedsearch_assets

TDQS

A3.5/5.0
Disambiguation5/5

Each tool serves a unique purpose: searching assets, retrieving asset info, files, types, categories, and author info. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores, either 'get_' or 'search_', which clearly indicates the action.

Tool Count5/5

6 tools is an appropriate size for the domain, covering essential operations without being overly numerous or sparse.

Completeness5/5

The tool set covers key operations for an asset library: search, asset details, file downloads, and metadata (types, categories, authors). No obvious gaps for read-only usage.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RN0000/polyhaven-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server