VOOZH about

URL: https://deepwiki.com/ppl-ai/modelcontextprotocol/5.3-server-configuration-files

⇱ Server Configuration Files | ppl-ai/modelcontextprotocol | DeepWiki


Loading...
Last indexed: 28 February 2026 (95c7a8)
Menu

Server Configuration Files

This page documents the three declarative configuration files that define how the @perplexity-ai/mcp-server package registers itself with external systems: the MCP Registry (server.json), the Claude plugin marketplace (.claude-plugin/marketplace.json), and the Smithery container platform (smithery.yaml). These files are consumed by external tooling and registries — they do not affect the server's runtime behavior directly.


Overview: Three Configuration Files

File-to-Registry Mapping


Sources: server.json1-17 .claude-plugin/marketplace.json1-48 smithery.yaml1-16

FileConsumed ByPurpose
server.jsonMCP Registry / mcp-publisherRegisters the package on the MCP server registry
.claude-plugin/marketplace.jsonClaude CLI / Claude Plugin MarketplaceEnables one-click install through Claude's plugin marketplace
smithery.yamlSmithery platformDeclares container runtime and config schema for cloud deployment

server.json — MCP Registry Manifest

server.json is the manifest read by the mcp-publisher tool during the MCP Registry Publishing Workflow. It conforms to the schema at https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json.

Field breakdown:

server.json1-17

FieldValueDescription
$schemahttps://static.modelcontextprotocol.io/schemas/...JSON Schema URI for validation
nameai.perplexity/mcp-serverNamespaced server identifier on the MCP registry
titlePerplexity API PlatformHuman-readable display name
description"Real-time web search..."Short description shown in registry listings
version0.8.3Must match package.json version
packages[0].registryTypenpmPackage registry where the server is distributed
packages[0].identifier@perplexity-ai/mcp-servernpm package identifier
packages[0].version0.8.3Package version on npm
packages[0].transport.typestdioDeclares that this server communicates over stdio

The transport.type: "stdio" field tells MCP clients that they must launch this server as a subprocess and communicate via stdin/stdout. This corresponds directly to the StdioServerTransport used in src/index.ts.

server.json structure


Sources: server.json1-17


.claude-plugin/marketplace.json — Claude Plugin Manifest

.claude-plugin/marketplace.json is read by the claude CLI during the Plugin Validation Workflow and published to the Claude plugin marketplace. It has two levels of nesting: a top-level package manifest and a plugins array containing one or more plugin entries.

.claude-plugin/marketplace.json1-48

Top-Level Fields

FieldValueDescription
nameperplexity-mcp-serverPackage identifier
owner.namePerplexity AIOrganization name
owner.emailapi@perplexity.aiContact email
metadata.description"Official Perplexity AI plugin..."Package-level description
metadata.version0.8.3Package version

plugins[0] Entry Fields

FieldValueDescription
nameperplexityPlugin identifier (used as key in mcpServers)
source./Relative path to plugin root
description"Real-time web search..."Plugin description
version0.8.3Plugin version
homepagehttps://docs.perplexity.ai/guides/mcp-serverDocumentation URL
repositoryhttps://github.com/perplexityai/modelcontextprotocolSource repository
licenseMITSPDX license identifier
keywords["mcp", "search", "web-search", ...]Searchability tags
categoryproductivityMarketplace category
strictfalseAllows the server to use tools not declared in the manifest

The mcpServers Block

The mcpServers block is the most operationally significant part of the manifest. It tells the Claude client exactly how to launch the server:

.claude-plugin/marketplace.json35-45


Sources: .claude-plugin/marketplace.json35-45

Key points about the mcpServers block:

  • type: "stdio" — matches the StdioServerTransport transport used by src/index.ts.
  • command: "npx" with args: ["-y", "@perplexity-ai/mcp-server"] — launches the package without requiring a manual install step.
  • PERPLEXITY_API_KEY is injected from the host environment using shell variable substitution (${PERPLEXITY_API_KEY}).
  • PERPLEXITY_TIMEOUT_MS defaults to 600000 ms (10 minutes) using the ${VAR:-default} syntax — this is notably higher than the global default of 300,000 ms (5 minutes) to accommodate sonar-deep-research latency. See Environment Variables Reference for details.

smithery.yaml — Container Deployment Spec

smithery.yaml is read by the Smithery platform to deploy the server as a managed container. It references the project's Dockerfile for the build stage and declares the configSchema that Smithery presents to users when configuring the deployment.

smithery.yaml1-16

FieldValueDescription
runtimecontainerInstructs Smithery to build and run a Docker image
build.dockerfileDockerfilePath to the Dockerfile relative to repo root
build.dockerBuildPath.Docker build context (repo root)
startCommand.typehttpServer is started in HTTP mode (not stdio) inside the container
configSchema.typeobjectJSON Schema type for config validation
configSchema.required["PERPLEXITY_API_KEY"]Variables that must be provided before deployment

configSchema Properties

PropertyTypeDescription
PERPLEXITY_API_KEYstringAPI key from https://www.perplexity.ai/settings/api
PERPLEXITY_TIMEOUT_MSstringRequest timeout in milliseconds (default 300000)

The startCommand.type: "http" value tells Smithery to use the HTTP server entry point (src/http.ts) rather than the stdio entry point. This aligns with the container-based Docker Deployment mode described elsewhere.

smithery.yaml deployment flow


Sources: smithery.yaml1-16 src/http.ts1-79


Version Synchronization

All three files carry an explicit version field. These must stay in sync with the version field in package.json. The NPM Publishing Workflow and MCP Registry Publishing Workflow are both triggered on changes to package.json, providing a coupling point to catch version drift.

FileVersion Field Location
server.jsonversion (top-level) and packages[0].version
.claude-plugin/marketplace.jsonmetadata.version and plugins[0].version
smithery.yamlNot versioned — inherits from the built image
package.jsonversion (source of truth)

Sources: server.json6-16 .claude-plugin/marketplace.json9-18 smithery.yaml1-16