{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown","redocly_category":"MCP Server","api_domain":"MCP"},"seo":{"title":"MCP Server local install","description":"Install the Sales Layer MCP Server locally for Claude Desktop with the .mcpb extension or npx, and access Catalog and DAM tools.","siteUrl":"https://docs.api.saleslayer.com/","image":"/assets/sales-layer-horizontal-dark-green.224c048d0bb386d3c2683ba504140512b6233d3c6cbf706ca81e2e3f2f02dbd0.9c1bb791.svg","keywords":["Sales Layer","Sales Layer API","REST API","OpenAPI","PIM API","Product Information Management API","DAM API","Catalog API","product catalog API","product data synchronization","ecommerce integration API","ERP integration","marketplace integration","image management API","digital asset management API","API integration","Model Context Protocol","MCP server","Sales Layer MCP","AI assistant connector","PIM AI assistant"],"lang":"en-US","meta":[{"name":"og:type","content":"website"},{"name":"og:site_name","content":"Sales Layer REST API Documentation"},{"name":"og:title","content":"Sales Layer REST API Documentation"},{"name":"og:description","content":"Technical REST API docs for Sales Layer PIM, Catalog, DAM, ecommerce, ERP, and marketplace integrations."},{"name":"og:image","content":"/assets/sales-layer-horizontal-dark-green.224c048d0bb386d3c2683ba504140512b6233d3c6cbf706ca81e2e3f2f02dbd0.9c1bb791.svg"},{"name":"twitter:card","content":"summary_large_image"},{"name":"twitter:site","content":"@saleslayer"},{"name":"twitter:title","content":"Sales Layer REST API Documentation"},{"name":"twitter:description","content":"Technical REST API docs for Sales Layer PIM, Catalog, DAM, ecommerce, ERP, and marketplace integrations."},{"name":"twitter:image","content":"/assets/sales-layer-horizontal-dark-green.224c048d0bb386d3c2683ba504140512b6233d3c6cbf706ca81e2e3f2f02dbd0.9c1bb791.svg"}],"llmstxt":{"hide":false,"title":"Sales Layer REST API Documentation","description":"Technical guides and OpenAPI references for Sales Layer DAM and Catalog REST APIs.","sections":[{"title":"Guides","description":"Static API guides for authentication, headers, query parameters, responses, rate limiting, and best practices.","includeFiles":["guides/**/*.md","changelog.md"]},{"title":"API Reference","description":"OpenAPI-based references and API overview pages for Sales Layer REST APIs.","includeFiles":["apis/**/*.md","apis/**/*.yaml"]},{"title":"Postman collections","description":"Importable Postman collection and environment instructions for testing Sales Layer REST APIs.","includeFiles":["postman/**/*.md"]},{"title":"MCP server","description":"Documentation for the Sales Layer MCP Server, its tools, access profiles, and how AI assistants consume the Catalog REST API.","includeFiles":["mcp-server/**/*.md"]}]},"jsonLd":{"@context":"https://schema.org","@type":"WebSite","name":"Sales Layer REST API Documentation","url":"https://docs.api.saleslayer.com/","publisher":{"@type":"Organization","name":"Sales Layer","url":"https://www.saleslayer.com/"}}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"mcp-server-local-install","__idx":0},"children":["MCP Server local install"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Some clients run the MCP Server as a local process instead of connecting to the hosted remote server. This is the standard setup for Claude Desktop."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In local mode the Catalog Token is supplied as an environment variable rather than through the OAuth authorization screen. The same token authenticates the Catalog and DAM tools; no separate DAM credential is required."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"requirements","__idx":1},"children":["Requirements"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Node.js 20.0.0 or later. Check with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["node --version"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Sales Layer account with catalog access."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Catalog Token. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/mcp-server/authentication"},"children":["Authentication"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An internet connection, since ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["npx"]}," downloads the package on first run."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"install-for-claude-desktop","__idx":2},"children":["Install for Claude Desktop"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The recommended route is the packaged extension."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Download the MCP package (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".mcpb"]},") from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.saleslayer.com/ai-pim/mcp"},"children":["saleslayer.com/ai-pim/mcp"]},". Choose the read-only package unless you need write access."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In Claude Desktop, open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]}," → ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Extensions"]}," → ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Advanced settings"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Extension Developer"]},", select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Install Extension..."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select the downloaded ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".mcpb"]}," file."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enter your Catalog Token when prompted."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Restart Claude Desktop if asked."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Two packages are published: a read-only build for querying and analysis, and a read/write build for controlled automation. Start with read-only."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"manual-configuration","__idx":3},"children":["Manual configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you prefer to configure the server by hand, or your client is not Claude Desktop, add this to the client's MCP configuration:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"mcpServers\": {\n    \"sales-layer\": {\n      \"command\": \"npx\",\n      \"args\": [\"--yes\", \"@saleslayer/mcp-server@latest\"],\n      \"env\": {\n        \"CATALOG_TOKEN\": \"your_token_here\"\n      }\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Claude Desktop configuration file lives at:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Platform"},"children":["Platform"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Path"},"children":["Path"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Windows"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["%APPDATA%\\Claude\\claude_desktop_config.json"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["macOS"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["~/Library/Application Support/Claude/claude_desktop_config.json"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Restart the client after editing it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The package is published on npm as ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.npmjs.com/package/@saleslayer/mcp-server"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@saleslayer/mcp-server"]}]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"environment-variables","__idx":4},"children":["Environment variables"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Variable"},"children":["Variable"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CATALOG_TOKEN"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The Catalog Token for the catalog you are connecting to. Required in local mode."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ENV_MCP_LOG_LEVEL"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Logging verbosity. Set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debug"]}," when diagnosing a problem."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CACHE_METADATA_TTL"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Metadata cache lifetime in milliseconds — schemas, field titles, catalog languages. Defaults to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1800000"]},", which is 30 minutes."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ENV_MCP_CATALOG_REST_BASE_URL"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Base URL of the Catalog REST API, with no trailing slash. Defaults to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api2.saleslayer.com/catalog"]},". Set it to target a different environment."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Other variables exist for deployments that Sales Layer operates. They are not needed for a local install. Contact the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://support.saleslayer.com/support/solutions/folders/206000104471"},"children":["Sales Layer Support Center"]}," if you are running a managed or self-hosted deployment."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"debug-logging","__idx":5},"children":["Debug logging"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"mcpServers\": {\n    \"sales-layer\": {\n      \"command\": \"npx\",\n      \"args\": [\"--yes\", \"@saleslayer/mcp-server@latest\"],\n      \"env\": {\n        \"CATALOG_TOKEN\": \"your_token_here\",\n        \"ENV_MCP_LOG_LEVEL\": \"debug\"\n      }\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cache-behavior","__idx":6},"children":["Cache behavior"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The metadata cache is configurable through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CACHE_METADATA_TTL"]},". The data cache, which holds table responses, is not configurable by environment variable: it is always on with a five-minute lifetime, and can be switched off at runtime with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cache_control"]}," tool under Full access."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The cache invalidates itself automatically when records are created, updated, or deleted through the MCP Server, including related records. Changes made outside the session are not detected until the entry expires."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"targeting-a-different-environment","__idx":7},"children":["Targeting a different environment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ENV_MCP_CATALOG_REST_BASE_URL"]}," points the server at a different Catalog REST API. Use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/catalog"]}," path. The legacy ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/rest/Catalog"]}," prefix still answers, but breaks pagination, because the API always builds ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@nextLink"]}," values under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/catalog"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"security","__idx":8},"children":["Security"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Catalog Token sits in a local configuration file in plain text. That is a meaningful difference from the remote server, where the token is exchanged for OAuth credentials and never stored by the client."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not commit the configuration file to a repository."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not share it in screenshots, tickets, or chat messages."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use a token scoped to the catalog you actually need."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Remove the configuration when you stop using the integration."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a shared or managed machine, prefer the remote server with OAuth."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verify-the-install","__idx":9},"children":["Verify the install"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Restart the client and ask the assistant to list its tools. Then:"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Validate my Sales Layer token and tell me which catalog it points to."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the server does not start, check that Node.js 20 or later is installed, that the client was restarted after the configuration change, and that the machine can reach the npm registry. Enable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ENV_MCP_LOG_LEVEL=debug"]}," and check the client's logs."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-pages","__idx":10},"children":["Related pages"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/mcp-server/quickstart"},"children":["Quickstart"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/mcp-server/authentication"},"children":["Authentication"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/mcp-server/permissions"},"children":["Access profiles and permissions"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/mcp-server/troubleshooting"},"children":["Troubleshooting"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/mcp-server/tools"},"children":["Tool reference"]}]}]}]},"headings":[{"value":"MCP Server local install","id":"mcp-server-local-install","depth":1},{"value":"Requirements","id":"requirements","depth":2},{"value":"Install for Claude Desktop","id":"install-for-claude-desktop","depth":2},{"value":"Manual configuration","id":"manual-configuration","depth":2},{"value":"Environment variables","id":"environment-variables","depth":2},{"value":"Debug logging","id":"debug-logging","depth":3},{"value":"Cache behavior","id":"cache-behavior","depth":3},{"value":"Targeting a different environment","id":"targeting-a-different-environment","depth":3},{"value":"Security","id":"security","depth":2},{"value":"Verify the install","id":"verify-the-install","depth":2},{"value":"Related pages","id":"related-pages","depth":2}],"frontmatter":{"seo":{"title":"MCP Server local install","description":"Install the Sales Layer MCP Server locally for Claude Desktop with the .mcpb extension or npx, and access Catalog and DAM tools."},"keywords":{"includes":["MCP local install","Claude Desktop MCP","npx MCP server","CATALOG_TOKEN","mcpb extension"]},"metadata":{"redocly_category":"MCP Server","api_domain":"MCP"}},"lastModified":"2026-08-31T15:07:55.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/mcp-server/local-development","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}