{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/anthropic-com/2026-04-23-desktop-extensions-one-click-mcp-server-installation-for/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "- File extension update\n\n  Sep 11, 2025\n\n  Claude Desktop Extensions now use the .mcpb (MCP Bundle) file extension instead of .dxt. Existing .dxt extensions will continue to work, but we recommend developers use .mcpb for new extensions going forward. All functionality remains the same - this is purely a naming convention update.\n\n—\n\nWhen we released the Model Context Protocol (MCP) last year, we saw developers build amazing local servers that gave Claude access to everything from file systems to databases. But we kept hearing the same feedback: installation was too complex. Users needed developer tools, had to manually edit configuration files, and often got stuck on dependency issues.\n\nToday, we're introducing Desktop Extensions—a new packaging format that makes installing MCP servers as simple as clicking a button.\n\n### Addressing the MCP installation problem\n\nLocal MCP servers unlock powerful capabilities for Claude Desktop users. They can interact with local applications, access private data, and integrate with development tools—all while keeping data on the user's machine. However, the current installation process creates significant barriers:\n\n- **Developer tools required**: Users need Node.js, Python, or other runtimes installed\n- **Manual configuration**: Each server requires editing JSON configuration files\n- **Dependency management**: Users must resolve package conflicts and version mismatches\n- **No discovery mechanism**: Finding useful MCP servers requires searching GitHub\n- **Update complexity**: Keeping servers current means manual reinstallation\n\nThese friction points meant that MCP servers, despite their power, remained largely inaccessible to non-technical users.\n\n### Introducing Desktop Extensions\n\nDesktop Extensions (`.mcpb` files) solve these problems by bundling an entire MCP server—including all dependencies—into a single installable package. Here's what changes for users:\n\n**Before:**\n\n```\n# Install Node.js first \nnpm install -g @example/mcp-server \n# Edit ~/.claude/claude_desktop_config.json manually \n# Restart Claude Desktop \n# Hope it works\n```\n\n**After:**\n\n1. Download a `.mcpb` file\n2. Double-click to open with Claude Desktop\n3. Click \"Install\"\n\nThat's it. No terminal, no configuration files, no dependency conflicts.\n\n## Architecture overview\n\nA Desktop Extension is a zip archive containing the local MCP server as well as a `manifest.json`, which describes everything Claude Desktop and other apps supporting desktop extensions need to know.\n\n```\nextension.mcpb (ZIP archive)\n├── manifest.json         # Extension metadata and configuration\n├── server/               # MCP server implementation\n│   └── [server files]    \n├── dependencies/         # All required packages/libraries\n└── icon.png             # Optional: Extension icon\n\n# Example: Node.js Extension\nextension.mcpb\n├── manifest.json         # Required: Extension metadata and configuration\n├── server/               # Server files\n│   └── index.js          # Main entry point\n├── node_modules/         # Bundled dependencies\n├── package.json          # Optional: NPM package definition\n└── icon.png              # Optional: Extension icon\n\n# Example: Python Extension\nextension.mcpb (ZIP file)\n├── manifest.json         # Required: Extension metadata and configuration\n├── server/               # Server files\n│   ├── main.py           # Main entry point\n│   └── utils.py          # Additional modules\n├── lib/                  # Bundled Python packages\n├── requirements.txt      # Optional: Python dependencies list\n└── icon.png              # Optional: Extension icon\n```\n\nThe only required file in a Desktop Extension is a manifest.json. Claude Desktop handles all the complexity:\n\n- **Built-in runtime**: We ship Node.js with Claude Desktop, eliminating external dependencies\n- **Automatic updates**: Extensions update automatically when new versions are available\n- **Secure secrets**: Sensitive configuration like API keys are stored in the OS keychain\n\nThe manifest contains human-readable information (like the name, description, or author), a declaration of features (tools, prompts), user configuration, and runtime requirements. Most fields are optional, so the minimal version is quite short, although in practice, we expect all three supported extension types (Node.js, Python, and classic binaries/executables) to include files:\n\n```\n{\n  \"mcpb_version\": \"0.1\",                    // MCPB spec version this manifest conforms to\n  \"name\": \"my-extension\",                   // Machine-readable name (used for CLI, APIs)\n  \"version\": \"1.0.0\",                       // Semantic version of your extension\n  \"description\": \"A simple MCP extension\",  // Brief description of what the extension does\n  \"author\": {                               // Author information (required)\n    \"name\": \"Extension Author\"              // Author's name (required field)\n  },\n  \"server\": {                               // Server configuration (required)\n    \"type\": \"node\",                         // Server type: \"node\", \"python\", or \"binary\"\n    \"entry_point\": \"server/index.js\",       // Path to the main server file\n    \"mcp_config\": {                         // MCP server configuration\n      \"command\": \"node\",                    // Command to run the server\n      \"args\": [                             // Arguments passed to the command\n        \"${__dirname}/server/index.js\"      // ${__dirname} is replaced with the extension's directory\n      ]                              \n    }\n  }\n}\n```\n\nThere are a number of convenience options [available in the manifest spec](https://github.com/anthropics/dxt/blob/main/MANIFEST.md) that aim to make the installation and configuration of local MCP servers easier. The server configuration object can be defined in a way that makes room both for user-defined configuration in the form of template literals as well as platform-specific overrides. Extension developers can define, in detail, what kind of configuration they want to collect from users.\n\nLet’s take a look at a concrete example of how the manifest aids with configuration. In the manifest below, the developer declares that the user needs to supply an `api_key`. Claude will not enable the extension until the user has supplied that value, keep it automatically in the operating system’s secret vault, and transparently replace the `${user_config.api_key}` with the user-supplied value when launching the server. Similarly, `${__dirname}` will be replaced with the full path to the extension’s unpacked directory.\n\n```\n{\n  \"mcpb_version\": \"0.1\",\n  \"name\": \"my-extension\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A simple MCP extension\",\n  \"author\": {\n    \"name\": \"Extension Author\"\n  },\n  \"server\": {\n    \"type\": \"node\",\n    \"entry_point\": \"server/index.js\",\n    \"mcp_config\": {\n      \"command\": \"node\",\n      \"args\": [\"${__dirname}/server/index.js\"],\n      \"env\": {\n        \"API_KEY\": \"${user_config.api_key}\"\n      }\n    }\n  },\n  \"user_config\": {\n    \"api_key\": {\n      \"type\": \"string\",\n      \"title\": \"API Key\",\n      \"description\": \"Your API key for authentication\",\n      \"sensitive\": true,\n      \"required\": true\n    }\n  }\n}\n```\n\nA full `manifest.json` with most of the optional fields might look like this:\n\n```\n{\n  \"mcpb_version\": \"0.1\",\n  \"name\": \"My MCP Extension\",\n  \"display_name\": \"My Awesome MCP Extension\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A brief description of what this extension does\",\n  \"long_description\": \"A detailed description that can include multiple paragraphs explaining the extension's functionality, use cases, and features. It supports basic markdown.\",\n  \"author\": {\n    \"name\": \"Your Name\",\n    \"email\": \"yourname@example.com\",\n    \"url\": \"https://your-website.com\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/your-username/my-mcp-extension\"\n  },\n  \"homepage\": \"https://example.com/my-extension\",\n  \"documentation\": \"https://docs.example.com/my-extension\",\n  \"support\": \"https://github.com/your-username/my-extension/issues\",\n  \"icon\": \"icon.png\",\n  \"screenshots\": [\n    \"assets/screenshots/screenshot1.png\",\n    \"assets/screenshots/screenshot2.png\"\n  ],\n  \"server\": {\n    \"type\": \"node\",\n    \"entry_point\": \"server/index.js\",\n    \"mcp_config\": {\n      \"command\": \"node\",\n      \"args\": [\"${__dirname}/server/index.js\"],\n      \"env\": {\n        \"ALLOWED_DIRECTORIES\": \"${user_config.allowed_directories}\"\n      }\n    }\n  },\n  \"tools\": [\n    {\n      \"name\": \"search_files\",\n      \"description\": \"Search for files in a directory\"\n    }\n  ],\n  \"prompts\": [\n    {\n      \"name\": \"poetry\",\n      \"description\": \"Have the LLM write poetry\",\n      \"arguments\": [\"topic\"],\n      \"text\": \"Write a creative poem about the following topic: ${arguments.topic}\"\n    }\n  ],\n  \"tools_generated\": true,\n  \"keywords\": [\"api\", \"automation\", \"productivity\"],\n  \"license\": \"MIT\",\n  \"compatibility\": {\n    \"claude_desktop\": \">=1.0.0\",\n    \"platforms\": [\"darwin\", \"win32\", \"linux\"],\n    \"runtimes\": {\n      \"node\": \">=16.0.0\"\n    }\n  },\n  \"user_config\": {\n    \"allowed_directories\": {\n      \"type\": \"directory\",\n      \"title\": \"Allowed Directories\",\n      \"description\": \"Directories the server can access\",\n      \"multiple\": true,\n      \"required\": true,\n      \"default\": [\"${HOME}/Desktop\"]\n    },\n    \"api_key\": {\n      \"type\": \"string\",\n      \"title\": \"API Key\",\n      \"description\": \"Your API key for authentication\",\n      \"sensitive\": true,\n      \"required\": false\n    },\n    \"max_file_size\": {\n      \"type\": \"number\",\n      \"title\": \"Maximum File Size (MB)\",\n      \"description\": \"Maximum file size to process\",\n      \"default\": 10,\n      \"min\": 1,\n      \"max\": 100\n    }\n  }\n}\n```\n\nTo see an extension and manifest, please refer [to the examples in the MCPB repository](https://github.com/anthropics/dxt/tree/main/examples).\n\nThe full specification for all required and optional fields in the `manifest.json` can be found as part of our [open-source toolchain](https://github.com/anthropics/dxt/blob/main/MANIFEST.md).\n\n### Building your first extension\n\nLet's walk through packaging an existing MCP server as a Desktop Extension. We'll use a simple file system server as an example.\n\n#### Step 1: Create the manifest\n\nFirst, initialize a manifest for your server:\n\n```\nnpx @anthropic-ai/mcpb init\n```\n\nThis interactive tool asks about your server and generates a complete manifest.json. If you want to speed-run your way to the most basic manifest.json, you can run the command with a --yes parameter.\n\n#### Step 2: Handle user configuration\n\nIf your server needs user input (like API keys or allowed directories), declare it in the manifest:\n\n```\n\"user_config\": {\n  \"allowed_directories\": {\n    \"type\": \"directory\",\n    \"title\": \"Allowed Directories\",\n    \"description\": \"Directories the server can access\",\n    \"multiple\": true,\n    \"required\": true,\n    \"default\": [\"${HOME}/Documents\"]\n  }\n}\n```\n\nClaude Desktop will:\n\n- Display a user-friendly configuration UI\n- Validate inputs before enabling the extension\n- Securely store sensitive values\n- Pass configuration to your server either as arguments or environment variables, depending on developer configuration\n\nIn the example below, we’re passing the user configuration as an environment variable, but it could also be an argument.\n\n```\n\"server\": {\n   \"type\": \"node\",\n   \"entry_point\": \"server/index.js\",\n   \"mcp_config\": {\n   \"command\": \"node\",\n   \"args\": [\"${__dirname}/server/index.js\"],\n   \"env\": {\n      \"ALLOWED_DIRECTORIES\": \"${user_config.allowed_directories}\"\n   }\n   }\n}\n```\n\n#### Step 3: Package the extension\n\nBundle everything into a `.mcpb` file:\n\n```\nnpx @anthropic-ai/mcpb pack\n```\n\nThis command:\n\n1. Validates your manifest\n2. Generates the `.mcpb` archive\n\n#### Step 4: Test locally\n\nDrag your `.mcpb` file into Claude Desktop's Settings window. You'll see:\n\n- Human-readable information about your extension\n- Required permissions and configuration\n- A simple \"Install\" button\n\n### Advanced features\n\n#### Cross-platform support\n\nExtensions can adapt to different operating systems:\n\n```\n\"server\": {\n  \"type\": \"node\",\n  \"entry_point\": \"server/index.js\",\n  \"mcp_config\": {\n    \"command\": \"node\",\n    \"args\": [\"${__dirname}/server/index.js\"],\n    \"platforms\": {\n      \"win32\": {\n        \"command\": \"node.exe\",\n        \"env\": {\n          \"TEMP_DIR\": \"${TEMP}\"\n        }\n      },\n      \"darwin\": {\n        \"env\": {\n          \"TEMP_DIR\": \"${TMPDIR}\"\n        }\n      }\n    }\n  }\n}\n```\n\n#### Dynamic configuration\n\nUse template literals for runtime values:\n\n- `${__dirname}`: Extension's installation directory\n- `${user_config.key}`: User-provided configuration\n- `${HOME}, ${TEMP}`: System environment variables\n\n#### Feature declaration\n\nHelp users understand capabilities upfront:\n\n```\n\"tools\": [\n  {\n    \"name\": \"read_file\",\n    \"description\": \"Read contents of a file\"\n  }\n],\n\"prompts\": [\n  {\n    \"name\": \"code_review\",\n    \"description\": \"Review code for best practices\",\n    \"arguments\": [\"file_path\"]\n  }\n]\n```\n\n### The extension directory\n\nWe're launching with a curated directory of extensions built into Claude Desktop. Users can browse, search, and install with one click—no searching GitHub or vetting code.\n\nWhile we expect both the Desktop Extension specification and the implementation in Claude for macOS and Windows to evolve over time, we look forward to seeing the many ways in which extensions can be used to expand the capabilities of Claude in creative ways.\n\nTo submit your extension:\n\n1. Ensure it follows the guidelines found in the submission form\n2. Test across Windows and macOS\n3. [Submit your extension](https://docs.google.com/forms/d/14_Dmcig4z8NeRMB_e7TOyrKzuZ88-BLYdLvS6LPhiZU/edit)\n4. Our team reviews for quality and security\n\n### Building an open ecosystem\n\nWe are committed to the open ecosystem around MCP servers and believe that its ability to be universally adopted by multiple applications and services has benefitted the community. In line with this commitment, we’re open-sourcing the Desktop Extension specification, toolchain, and the schemas and key functions used by Claude for macOS and Windows to implement its own support of Desktop Extensions. It is our hope that the MCPB format doesn’t just make local MCP servers more portable for Claude, but other AI desktop applications, too.\n\nWe're open-sourcing:\n\n- The complete MCPB specification\n- Packaging and validation tools\n- Reference implementation code\n- TypeScript types and schemas\n\nThis means:\n\n- **For MCP server developers**: Package once, run anywhere that supports MCPB\n- **For app developers**: Add extension support without building from scratch\n- **For users**: Consistent experience across all MCP-enabled applications\n\nThe specification and toolchain is on purpose versioned as 0.1, as we are looking forward to working with the greater community on evolving and changing the format. We look forward to hearing from you.\n\n### Security and enterprise considerations\n\nWe understand that extensions introduce new security considerations, particularly for enterprises. We've built in several safeguards with the preview release of Desktop Extensions:\n\n#### For users\n\n- Sensitive data stays in the OS keychain\n- Automatic updates\n- Ability to audit what extensions are installed\n\n#### For enterprises\n\n- Group Policy (Windows) and MDM (macOS) support\n- Ability to pre-install approved extensions\n- Blocklist specific extensions or publishers\n- Disable the extension directory entirely\n- Deploy private extension directories\n\nFor more information about how to manage extensions within your organization, see our [documentation](https://support.anthropic.com/en/articles/10949351-getting-started-with-model-context-protocol-mcp-on-claude-for-desktop).\n\n### Getting started\n\nReady to build your own extension? Here's how to start:\n\n**For MCP server developers**: Review our [developer documentation](https://github.com/anthropics/dxt) – or dive right in by running the following commands in your local MCP servers’ directory:\n\n```\nnpm install -g @anthropic-ai/mcpb\nmcpb init\nmcpb pack\n```\n\n**For Claude Desktop users**: Update to the latest version and look for the Extensions section in Settings\n\n**For enterprises**: Review our enterprise documentation for deployment options\n\n### Building with Claude Code\n\nInternally at Anthropic, we have found that Claude is great at building extensions with minimal intervention. If you too want to use Claude Code, we recommend that you briefly explain what you want your extension to do and then add the following context to the prompt:\n\n```\nI want to build this as a Desktop Extension, abbreviated as \"MCPB\". Please follow these steps:\n\n1. **Read the specifications thoroughly:**\n   - https://github.com/anthropics/mcpb/blob/main/README.md - MCPB architecture overview, capabilities, and integration patterns\n   - https://github.com/anthropics/mcpb/blob/main/MANIFEST.md - Complete extension manifest structure and field definitions\n   - https://github.com/anthropics/mcpb/tree/main/examples - Reference implementations including a \"Hello World\" example\n\n2. **Create a proper extension structure:**\n   - Generate a valid manifest.json following the MANIFEST.md spec\n   - Implement an MCP server using @modelcontextprotocol/sdk with proper tool definitions\n   - Include proper error handling and timeout management\n\n3. **Follow best development practices:**\n   - Implement proper MCP protocol communication via stdio transport\n   - Structure tools with clear schemas, validation, and consistent JSON responses\n   - Make use of the fact that this extension will be running locally\n   - Add appropriate logging and debugging capabilities\n   - Include proper documentation and setup instructions\n\n4. **Test considerations:**\n   - Validate that all tool calls return properly structured responses\n   - Verify manifest loads correctly and host integration works\n\nGenerate complete, production-ready code that can be immediately tested. Focus on defensive programming, clear error messages, and following the exact\nMCPB specifications to ensure compatibility with the ecosystem.\n```\n\n### Conclusion\n\nDesktop Extensions represent a fundamental shift in how users interact with local AI tools. By removing installation friction, we're making powerful MCP servers accessible to everyone—not just developers.\n\nInternally, we’re using desktop extensions to share highly experimental MCP servers - some fun, some useful.. One team experimented to see how far our models could make it when directly connected to a GameBoy, similar to our [“Claude plays Pokémon” research](https://www.anthropic.com/news/visible-extended-thinking). We used Desktop Extensions to package a single extension that opens up the popular [PyBoy](https://github.com/Baekalfen/PyBoy) GameBoy emulator and lets Claude take control. We believe that countless opportunities exist to connect the model’s capabilities to the tools, data, and applications users already have on their local machines.\n\n![A desktop showing the PyBoy MCP with Super Mario Land start screen](https://www.anthropic.com/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fd48f3ea1218a4b90450b9ab8134fa0e24db5a167-720x542.png&w=1920&q=75)\n\nWe can't wait to see what you build. The same creativity that brought us thousands of MCP servers can now reach millions of users with just one click. Ready to share your MCP server? [Submit your extension for review](https://forms.gle/tyiAZvch1kDADKoP9).\n",
  "authors": [],
  "captured_at": "2026-09-27T19:29:15.293681927+00:00",
  "category": "programming",
  "content_html": "<ul>\n<li>\n<p>File extension update</p>\n<p>Sep 11, 2025</p>\n<p>Claude Desktop Extensions now use the .mcpb (MCP Bundle) file extension instead of .dxt. Existing .dxt extensions will continue to work, but we recommend developers use .mcpb for new extensions going forward. All functionality remains the same - this is purely a naming convention update.</p>\n</li>\n</ul>\n<p>—</p>\n<p>When we released the Model Context Protocol (MCP) last year, we saw developers build amazing local servers that gave Claude access to everything from file systems to databases. But we kept hearing the same feedback: installation was too complex. Users needed developer tools, had to manually edit configuration files, and often got stuck on dependency issues.</p>\n<p>Today, we're introducing Desktop Extensions—a new packaging format that makes installing MCP servers as simple as clicking a button.</p>\n<h3>Addressing the MCP installation problem</h3>\n<p>Local MCP servers unlock powerful capabilities for Claude Desktop users. They can interact with local applications, access private data, and integrate with development tools—all while keeping data on the user's machine. However, the current installation process creates significant barriers:</p>\n<ul>\n<li><strong>Developer tools required</strong>: Users need Node.js, Python, or other runtimes installed</li>\n<li><strong>Manual configuration</strong>: Each server requires editing JSON configuration files</li>\n<li><strong>Dependency management</strong>: Users must resolve package conflicts and version mismatches</li>\n<li><strong>No discovery mechanism</strong>: Finding useful MCP servers requires searching GitHub</li>\n<li><strong>Update complexity</strong>: Keeping servers current means manual reinstallation</li>\n</ul>\n<p>These friction points meant that MCP servers, despite their power, remained largely inaccessible to non-technical users.</p>\n<h3>Introducing Desktop Extensions</h3>\n<p>Desktop Extensions (<code>.mcpb</code> files) solve these problems by bundling an entire MCP server—including all dependencies—into a single installable package. Here's what changes for users:</p>\n<p><strong>Before:</strong></p>\n<pre><code><span class=\"code-snippet\"># Install Node.js first \nnpm install -g @example/mcp-server \n# Edit ~/.claude/claude_desktop_config.json manually \n# Restart Claude Desktop \n# Hope it works\n</span></code></pre>\n<p><strong>After:</strong></p>\n<ol>\n<li>Download a <code>.mcpb</code> file</li>\n<li>Double-click to open with Claude Desktop</li>\n<li>Click &quot;Install&quot;</li>\n</ol>\n<p>That's it. No terminal, no configuration files, no dependency conflicts.</p>\n<h2>Architecture overview</h2>\n<p>A Desktop Extension is a zip archive containing the local MCP server as well as a <code>manifest.json</code>, which describes everything Claude Desktop and other apps supporting desktop extensions need to know.</p>\n<pre><code><span class=\"code-snippet\">extension.mcpb (ZIP archive)\n├── manifest.json         # Extension metadata and configuration\n├── server/               # MCP server implementation\n│   └── [server files]    \n├── dependencies/         # All required packages/libraries\n└── icon.png             # Optional: Extension icon\n\n# Example: Node.js Extension\nextension.mcpb\n├── manifest.json         # Required: Extension metadata and configuration\n├── server/               # Server files\n│   └── index.js          # Main entry point\n├── node_modules/         # Bundled dependencies\n├── package.json          # Optional: NPM package definition\n└── icon.png              # Optional: Extension icon\n\n# Example: Python Extension\nextension.mcpb (ZIP file)\n├── manifest.json         # Required: Extension metadata and configuration\n├── server/               # Server files\n│   ├── main.py           # Main entry point\n│   └── utils.py          # Additional modules\n├── lib/                  # Bundled Python packages\n├── requirements.txt      # Optional: Python dependencies list\n└── icon.png              # Optional: Extension icon\n</span></code></pre>\n<p>The only required file in a Desktop Extension is a manifest.json. Claude Desktop handles all the complexity:</p>\n<ul>\n<li><strong>Built-in runtime</strong>: We ship Node.js with Claude Desktop, eliminating external dependencies</li>\n<li><strong>Automatic updates</strong>: Extensions update automatically when new versions are available</li>\n<li><strong>Secure secrets</strong>: Sensitive configuration like API keys are stored in the OS keychain</li>\n</ul>\n<p>The manifest contains human-readable information (like the name, description, or author), a declaration of features (tools, prompts), user configuration, and runtime requirements. Most fields are optional, so the minimal version is quite short, although in practice, we expect all three supported extension types (Node.js, Python, and classic binaries/executables) to include files:</p>\n<pre><code><span class=\"code-snippet\">{\n  &quot;mcpb_version&quot;: &quot;0.1&quot;,                    // MCPB spec version this manifest conforms to\n  &quot;name&quot;: &quot;my-extension&quot;,                   // Machine-readable name (used for CLI, APIs)\n  &quot;version&quot;: &quot;1.0.0&quot;,                       // Semantic version of your extension\n  &quot;description&quot;: &quot;A simple MCP extension&quot;,  // Brief description of what the extension does\n  &quot;author&quot;: {                               // Author information (required)\n    &quot;name&quot;: &quot;Extension Author&quot;              // Author&#39;s name (required field)\n  },\n  &quot;server&quot;: {                               // Server configuration (required)\n    &quot;type&quot;: &quot;node&quot;,                         // Server type: &quot;node&quot;, &quot;python&quot;, or &quot;binary&quot;\n    &quot;entry_point&quot;: &quot;server/index.js&quot;,       // Path to the main server file\n    &quot;mcp_config&quot;: {                         // MCP server configuration\n      &quot;command&quot;: &quot;node&quot;,                    // Command to run the server\n      &quot;args&quot;: [                             // Arguments passed to the command\n        &quot;${__dirname}/server/index.js&quot;      // ${__dirname} is replaced with the extension&#39;s directory\n      ]                              \n    }\n  }\n}\n</span></code></pre>\n<p>There are a number of convenience options <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/anthropics/dxt/blob/main/MANIFEST.md\">available in the manifest spec</a> that aim to make the installation and configuration of local MCP servers easier. The server configuration object can be defined in a way that makes room both for user-defined configuration in the form of template literals as well as platform-specific overrides. Extension developers can define, in detail, what kind of configuration they want to collect from users.</p>\n<p>Let’s take a look at a concrete example of how the manifest aids with configuration. In the manifest below, the developer declares that the user needs to supply an <code>api_key</code>. Claude will not enable the extension until the user has supplied that value, keep it automatically in the operating system’s secret vault, and transparently replace the <code>${user_config.api_key}</code> with the user-supplied value when launching the server. Similarly, <code>${__dirname}</code> will be replaced with the full path to the extension’s unpacked directory.</p>\n<pre><code><span class=\"code-snippet\" data-language=\"JSON\"><span class=\"syntax-source syntax-json\"><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>mcpb_version<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>0.1<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>my-extension<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>version<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>1.0.0<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>A simple MCP extension<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>author<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Extension Author<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>server<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>node<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>entry_point<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>server/index.js<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>mcp_config<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>command<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>node<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>args<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>${__dirname}/server/index.js<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>env<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n        <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>API_KEY<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>${user_config.api_key}<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n      </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>user_config<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>api_key<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>string<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>title<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>API Key<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Your API key for authentication<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>sensitive<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>required<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span></span></code></pre>\n<p>A full <code>manifest.json</code> with most of the optional fields might look like this:</p>\n<pre><code><span class=\"code-snippet\" data-language=\"JSON\"><span class=\"syntax-source syntax-json\"><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>mcpb_version<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>0.1<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>My MCP Extension<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>display_name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>My Awesome MCP Extension<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>version<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>1.0.0<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>A brief description of what this extension does<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>long_description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>A detailed description that can include multiple paragraphs explaining the extension&#39;s functionality, use cases, and features. It supports basic markdown.<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>author<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Your Name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>email<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>yourname@example.com<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>url<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>https://your-website.com<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>repository<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>git<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>url<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>https://github.com/your-username/my-mcp-extension<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>homepage<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>https://example.com/my-extension<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>documentation<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>https://docs.example.com/my-extension<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>support<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>https://github.com/your-username/my-extension/issues<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>icon<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>icon.png<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>screenshots<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span>\n    <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>assets/screenshots/screenshot1.png<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span>\n    <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>assets/screenshots/screenshot2.png<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n  <span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>server<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>node<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>entry_point<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>server/index.js<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>mcp_config<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>command<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>node<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>args<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>${__dirname}/server/index.js<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>env<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n        <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>ALLOWED_DIRECTORIES<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>${user_config.allowed_directories}<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n      </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>tools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>search_files<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Search for files in a directory<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  <span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>prompts<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>poetry<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Have the LLM write poetry<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>arguments<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>topic<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>text<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Write a creative poem about the following topic: ${arguments.topic}<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  <span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>tools_generated<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>keywords<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>api<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>automation<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>productivity<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>license<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>MIT<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>compatibility<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>claude_desktop<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>&gt;=1.0.0<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>platforms<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>darwin<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>win32<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>linux<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>runtimes<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>node<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>&gt;=16.0.0<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>user_config<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>allowed_directories<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>directory<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>title<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Allowed Directories<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Directories the server can access<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>multiple<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>required<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>default<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>${HOME}/Desktop<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>api_key<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>string<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>title<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>API Key<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Your API key for authentication<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>sensitive<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>required<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">false</span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>max_file_size<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>number<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>title<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Maximum File Size (MB)<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>description<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Maximum file size to process<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>default<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-numeric syntax-json\">10</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>min<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-numeric syntax-json\">1</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>max<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-numeric syntax-json\">100</span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span></span></code></pre>\n<p>To see an extension and manifest, please refer <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/anthropics/dxt/tree/main/examples\">to the examples in the MCPB repository</a>.</p>\n<p>The full specification for all required and optional fields in the <code>manifest.json</code> can be found as part of our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/anthropics/dxt/blob/main/MANIFEST.md\">open-source toolchain</a>.</p>\n<h3>Building your first extension</h3>\n<p>Let's walk through packaging an existing MCP server as a Desktop Extension. We'll use a simple file system server as an example.</p>\n<h4>Step 1: Create the manifest</h4>\n<p>First, initialize a manifest for your server:</p>\n<pre><code><span class=\"code-snippet\">npx @anthropic-ai/mcpb init\n</span></code></pre>\n<p>This interactive tool asks about your server and generates a complete manifest.json. If you want to speed-run your way to the most basic manifest.json, you can run the command with a --yes parameter.</p>\n<h4>Step 2: Handle user configuration</h4>\n<p>If your server needs user input (like API keys or allowed directories), declare it in the manifest:</p>\n<pre><code><span class=\"code-snippet\">&quot;user_config&quot;: {\n  &quot;allowed_directories&quot;: {\n    &quot;type&quot;: &quot;directory&quot;,\n    &quot;title&quot;: &quot;Allowed Directories&quot;,\n    &quot;description&quot;: &quot;Directories the server can access&quot;,\n    &quot;multiple&quot;: true,\n    &quot;required&quot;: true,\n    &quot;default&quot;: [&quot;${HOME}/Documents&quot;]\n  }\n}\n</span></code></pre>\n<p>Claude Desktop will:</p>\n<ul>\n<li>Display a user-friendly configuration UI</li>\n<li>Validate inputs before enabling the extension</li>\n<li>Securely store sensitive values</li>\n<li>Pass configuration to your server either as arguments or environment variables, depending on developer configuration</li>\n</ul>\n<p>In the example below, we’re passing the user configuration as an environment variable, but it could also be an argument.</p>\n<pre><code><span class=\"code-snippet\">&quot;server&quot;: {\n   &quot;type&quot;: &quot;node&quot;,\n   &quot;entry_point&quot;: &quot;server/index.js&quot;,\n   &quot;mcp_config&quot;: {\n   &quot;command&quot;: &quot;node&quot;,\n   &quot;args&quot;: [&quot;${__dirname}/server/index.js&quot;],\n   &quot;env&quot;: {\n      &quot;ALLOWED_DIRECTORIES&quot;: &quot;${user_config.allowed_directories}&quot;\n   }\n   }\n}\n</span></code></pre>\n<h4>Step 3: Package the extension</h4>\n<p>Bundle everything into a <code>.mcpb</code> file:</p>\n<pre><code><span class=\"code-snippet\">npx @anthropic-ai/mcpb pack\n</span></code></pre>\n<p>This command:</p>\n<ol>\n<li>Validates your manifest</li>\n<li>Generates the <code>.mcpb</code> archive</li>\n</ol>\n<h4>Step 4: Test locally</h4>\n<p>Drag your <code>.mcpb</code> file into Claude Desktop's Settings window. You'll see:</p>\n<ul>\n<li>Human-readable information about your extension</li>\n<li>Required permissions and configuration</li>\n<li>A simple &quot;Install&quot; button</li>\n</ul>\n<h3>Advanced features</h3>\n<h4>Cross-platform support</h4>\n<p>Extensions can adapt to different operating systems:</p>\n<pre><code><span class=\"code-snippet\">&quot;server&quot;: {\n  &quot;type&quot;: &quot;node&quot;,\n  &quot;entry_point&quot;: &quot;server/index.js&quot;,\n  &quot;mcp_config&quot;: {\n    &quot;command&quot;: &quot;node&quot;,\n    &quot;args&quot;: [&quot;${__dirname}/server/index.js&quot;],\n    &quot;platforms&quot;: {\n      &quot;win32&quot;: {\n        &quot;command&quot;: &quot;node.exe&quot;,\n        &quot;env&quot;: {\n          &quot;TEMP_DIR&quot;: &quot;${TEMP}&quot;\n        }\n      },\n      &quot;darwin&quot;: {\n        &quot;env&quot;: {\n          &quot;TEMP_DIR&quot;: &quot;${TMPDIR}&quot;\n        }\n      }\n    }\n  }\n}\n</span></code></pre>\n<h4>Dynamic configuration</h4>\n<p>Use template literals for runtime values:</p>\n<ul>\n<li><code>${__dirname}</code>: Extension's installation directory</li>\n<li><code>${user_config.key}</code>: User-provided configuration</li>\n<li><code>${HOME}, ${TEMP}</code>: System environment variables</li>\n</ul>\n<h4>Feature declaration</h4>\n<p>Help users understand capabilities upfront:</p>\n<pre><code><span class=\"code-snippet\">&quot;tools&quot;: [\n  {\n    &quot;name&quot;: &quot;read_file&quot;,\n    &quot;description&quot;: &quot;Read contents of a file&quot;\n  }\n],\n&quot;prompts&quot;: [\n  {\n    &quot;name&quot;: &quot;code_review&quot;,\n    &quot;description&quot;: &quot;Review code for best practices&quot;,\n    &quot;arguments&quot;: [&quot;file_path&quot;]\n  }\n]\n</span></code></pre>\n<h3>The extension directory</h3>\n<p>We're launching with a curated directory of extensions built into Claude Desktop. Users can browse, search, and install with one click—no searching GitHub or vetting code.</p>\n<p>While we expect both the Desktop Extension specification and the implementation in Claude for macOS and Windows to evolve over time, we look forward to seeing the many ways in which extensions can be used to expand the capabilities of Claude in creative ways.</p>\n<p>To submit your extension:</p>\n<ol>\n<li>Ensure it follows the guidelines found in the submission form</li>\n<li>Test across Windows and macOS</li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.google.com/forms/d/14_Dmcig4z8NeRMB_e7TOyrKzuZ88-BLYdLvS6LPhiZU/edit\">Submit your extension</a></li>\n<li>Our team reviews for quality and security</li>\n</ol>\n<h3>Building an open ecosystem</h3>\n<p>We are committed to the open ecosystem around MCP servers and believe that its ability to be universally adopted by multiple applications and services has benefitted the community. In line with this commitment, we’re open-sourcing the Desktop Extension specification, toolchain, and the schemas and key functions used by Claude for macOS and Windows to implement its own support of Desktop Extensions. It is our hope that the MCPB format doesn’t just make local MCP servers more portable for Claude, but other AI desktop applications, too.</p>\n<p>We're open-sourcing:</p>\n<ul>\n<li>The complete MCPB specification</li>\n<li>Packaging and validation tools</li>\n<li>Reference implementation code</li>\n<li>TypeScript types and schemas</li>\n</ul>\n<p>This means:</p>\n<ul>\n<li><strong>For MCP server developers</strong>: Package once, run anywhere that supports MCPB</li>\n<li><strong>For app developers</strong>: Add extension support without building from scratch</li>\n<li><strong>For users</strong>: Consistent experience across all MCP-enabled applications</li>\n</ul>\n<p>The specification and toolchain is on purpose versioned as 0.1, as we are looking forward to working with the greater community on evolving and changing the format. We look forward to hearing from you.</p>\n<h3>Security and enterprise considerations</h3>\n<p>We understand that extensions introduce new security considerations, particularly for enterprises. We've built in several safeguards with the preview release of Desktop Extensions:</p>\n<h4>For users</h4>\n<ul>\n<li>Sensitive data stays in the OS keychain</li>\n<li>Automatic updates</li>\n<li>Ability to audit what extensions are installed</li>\n</ul>\n<h4>For enterprises</h4>\n<ul>\n<li>Group Policy (Windows) and MDM (macOS) support</li>\n<li>Ability to pre-install approved extensions</li>\n<li>Blocklist specific extensions or publishers</li>\n<li>Disable the extension directory entirely</li>\n<li>Deploy private extension directories</li>\n</ul>\n<p>For more information about how to manage extensions within your organization, see our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://support.anthropic.com/en/articles/10949351-getting-started-with-model-context-protocol-mcp-on-claude-for-desktop\">documentation</a>.</p>\n<h3>Getting started</h3>\n<p>Ready to build your own extension? Here's how to start:</p>\n<p><strong>For MCP server developers</strong>: Review our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/anthropics/dxt\">developer documentation</a> – or dive right in by running the following commands in your local MCP servers’ directory:</p>\n<pre><code><span class=\"code-snippet\">npm install -g @anthropic-ai/mcpb\nmcpb init\nmcpb pack\n</span></code></pre>\n<p><strong>For Claude Desktop users</strong>: Update to the latest version and look for the Extensions section in Settings</p>\n<p><strong>For enterprises</strong>: Review our enterprise documentation for deployment options</p>\n<h3>Building with Claude Code</h3>\n<p>Internally at Anthropic, we have found that Claude is great at building extensions with minimal intervention. If you too want to use Claude Code, we recommend that you briefly explain what you want your extension to do and then add the following context to the prompt:</p>\n<pre><code><span class=\"code-snippet\">I want to build this as a Desktop Extension, abbreviated as &quot;MCPB&quot;. Please follow these steps:\n\n1. **Read the specifications thoroughly:**\n   - https://github.com/anthropics/mcpb/blob/main/README.md - MCPB architecture overview, capabilities, and integration patterns\n   - https://github.com/anthropics/mcpb/blob/main/MANIFEST.md - Complete extension manifest structure and field definitions\n   - https://github.com/anthropics/mcpb/tree/main/examples - Reference implementations including a &quot;Hello World&quot; example\n\n2. **Create a proper extension structure:**\n   - Generate a valid manifest.json following the MANIFEST.md spec\n   - Implement an MCP server using @modelcontextprotocol/sdk with proper tool definitions\n   - Include proper error handling and timeout management\n\n3. **Follow best development practices:**\n   - Implement proper MCP protocol communication via stdio transport\n   - Structure tools with clear schemas, validation, and consistent JSON responses\n   - Make use of the fact that this extension will be running locally\n   - Add appropriate logging and debugging capabilities\n   - Include proper documentation and setup instructions\n\n4. **Test considerations:**\n   - Validate that all tool calls return properly structured responses\n   - Verify manifest loads correctly and host integration works\n\nGenerate complete, production-ready code that can be immediately tested. Focus on defensive programming, clear error messages, and following the exact\nMCPB specifications to ensure compatibility with the ecosystem.\n</span></code></pre>\n<h3>Conclusion</h3>\n<p>Desktop Extensions represent a fundamental shift in how users interact with local AI tools. By removing installation friction, we're making powerful MCP servers accessible to everyone—not just developers.</p>\n<p>Internally, we’re using desktop extensions to share highly experimental MCP servers - some fun, some useful.. One team experimented to see how far our models could make it when directly connected to a GameBoy, similar to our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.anthropic.com/news/visible-extended-thinking\">“Claude plays Pokémon” research</a>. We used Desktop Extensions to package a single extension that opens up the popular <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Baekalfen/PyBoy\">PyBoy</a> GameBoy emulator and lets Claude take control. We believe that countless opportunities exist to connect the model’s capabilities to the tools, data, and applications users already have on their local machines.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.anthropic.com/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fd48f3ea1218a4b90450b9ab8134fa0e24db5a167-720x542.png&amp;w=1920&amp;q=75\" alt=\"A desktop showing the PyBoy MCP with Super Mario Land start screen\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>We can't wait to see what you build. The same creativity that brought us thousands of MCP servers can now reach millions of users with just one click. Ready to share your MCP server? <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://forms.gle/tyiAZvch1kDADKoP9\">Submit your extension for review</a>.</p>\n",
  "content_markdown": "- File extension update\n\n  Sep 11, 2025\n\n  Claude Desktop Extensions now use the .mcpb (MCP Bundle) file extension instead of .dxt. Existing .dxt extensions will continue to work, but we recommend developers use .mcpb for new extensions going forward. All functionality remains the same - this is purely a naming convention update.\n\n—\n\nWhen we released the Model Context Protocol (MCP) last year, we saw developers build amazing local servers that gave Claude access to everything from file systems to databases. But we kept hearing the same feedback: installation was too complex. Users needed developer tools, had to manually edit configuration files, and often got stuck on dependency issues.\n\nToday, we're introducing Desktop Extensions—a new packaging format that makes installing MCP servers as simple as clicking a button.\n\n### Addressing the MCP installation problem\n\nLocal MCP servers unlock powerful capabilities for Claude Desktop users. They can interact with local applications, access private data, and integrate with development tools—all while keeping data on the user's machine. However, the current installation process creates significant barriers:\n\n- **Developer tools required**: Users need Node.js, Python, or other runtimes installed\n- **Manual configuration**: Each server requires editing JSON configuration files\n- **Dependency management**: Users must resolve package conflicts and version mismatches\n- **No discovery mechanism**: Finding useful MCP servers requires searching GitHub\n- **Update complexity**: Keeping servers current means manual reinstallation\n\nThese friction points meant that MCP servers, despite their power, remained largely inaccessible to non-technical users.\n\n### Introducing Desktop Extensions\n\nDesktop Extensions (`.mcpb` files) solve these problems by bundling an entire MCP server—including all dependencies—into a single installable package. Here's what changes for users:\n\n**Before:**\n\n```\n# Install Node.js first \nnpm install -g @example/mcp-server \n# Edit ~/.claude/claude_desktop_config.json manually \n# Restart Claude Desktop \n# Hope it works\n```\n\n**After:**\n\n1. Download a `.mcpb` file\n2. Double-click to open with Claude Desktop\n3. Click \"Install\"\n\nThat's it. No terminal, no configuration files, no dependency conflicts.\n\n## Architecture overview\n\nA Desktop Extension is a zip archive containing the local MCP server as well as a `manifest.json`, which describes everything Claude Desktop and other apps supporting desktop extensions need to know.\n\n```\nextension.mcpb (ZIP archive)\n├── manifest.json         # Extension metadata and configuration\n├── server/               # MCP server implementation\n│   └── [server files]    \n├── dependencies/         # All required packages/libraries\n└── icon.png             # Optional: Extension icon\n\n# Example: Node.js Extension\nextension.mcpb\n├── manifest.json         # Required: Extension metadata and configuration\n├── server/               # Server files\n│   └── index.js          # Main entry point\n├── node_modules/         # Bundled dependencies\n├── package.json          # Optional: NPM package definition\n└── icon.png              # Optional: Extension icon\n\n# Example: Python Extension\nextension.mcpb (ZIP file)\n├── manifest.json         # Required: Extension metadata and configuration\n├── server/               # Server files\n│   ├── main.py           # Main entry point\n│   └── utils.py          # Additional modules\n├── lib/                  # Bundled Python packages\n├── requirements.txt      # Optional: Python dependencies list\n└── icon.png              # Optional: Extension icon\n```\n\nThe only required file in a Desktop Extension is a manifest.json. Claude Desktop handles all the complexity:\n\n- **Built-in runtime**: We ship Node.js with Claude Desktop, eliminating external dependencies\n- **Automatic updates**: Extensions update automatically when new versions are available\n- **Secure secrets**: Sensitive configuration like API keys are stored in the OS keychain\n\nThe manifest contains human-readable information (like the name, description, or author), a declaration of features (tools, prompts), user configuration, and runtime requirements. Most fields are optional, so the minimal version is quite short, although in practice, we expect all three supported extension types (Node.js, Python, and classic binaries/executables) to include files:\n\n```\n{\n  \"mcpb_version\": \"0.1\",                    // MCPB spec version this manifest conforms to\n  \"name\": \"my-extension\",                   // Machine-readable name (used for CLI, APIs)\n  \"version\": \"1.0.0\",                       // Semantic version of your extension\n  \"description\": \"A simple MCP extension\",  // Brief description of what the extension does\n  \"author\": {                               // Author information (required)\n    \"name\": \"Extension Author\"              // Author's name (required field)\n  },\n  \"server\": {                               // Server configuration (required)\n    \"type\": \"node\",                         // Server type: \"node\", \"python\", or \"binary\"\n    \"entry_point\": \"server/index.js\",       // Path to the main server file\n    \"mcp_config\": {                         // MCP server configuration\n      \"command\": \"node\",                    // Command to run the server\n      \"args\": [                             // Arguments passed to the command\n        \"${__dirname}/server/index.js\"      // ${__dirname} is replaced with the extension's directory\n      ]                              \n    }\n  }\n}\n```\n\nThere are a number of convenience options [available in the manifest spec](https://github.com/anthropics/dxt/blob/main/MANIFEST.md) that aim to make the installation and configuration of local MCP servers easier. The server configuration object can be defined in a way that makes room both for user-defined configuration in the form of template literals as well as platform-specific overrides. Extension developers can define, in detail, what kind of configuration they want to collect from users.\n\nLet’s take a look at a concrete example of how the manifest aids with configuration. In the manifest below, the developer declares that the user needs to supply an `api_key`. Claude will not enable the extension until the user has supplied that value, keep it automatically in the operating system’s secret vault, and transparently replace the `${user_config.api_key}` with the user-supplied value when launching the server. Similarly, `${__dirname}` will be replaced with the full path to the extension’s unpacked directory.\n\n```\n{\n  \"mcpb_version\": \"0.1\",\n  \"name\": \"my-extension\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A simple MCP extension\",\n  \"author\": {\n    \"name\": \"Extension Author\"\n  },\n  \"server\": {\n    \"type\": \"node\",\n    \"entry_point\": \"server/index.js\",\n    \"mcp_config\": {\n      \"command\": \"node\",\n      \"args\": [\"${__dirname}/server/index.js\"],\n      \"env\": {\n        \"API_KEY\": \"${user_config.api_key}\"\n      }\n    }\n  },\n  \"user_config\": {\n    \"api_key\": {\n      \"type\": \"string\",\n      \"title\": \"API Key\",\n      \"description\": \"Your API key for authentication\",\n      \"sensitive\": true,\n      \"required\": true\n    }\n  }\n}\n```\n\nA full `manifest.json` with most of the optional fields might look like this:\n\n```\n{\n  \"mcpb_version\": \"0.1\",\n  \"name\": \"My MCP Extension\",\n  \"display_name\": \"My Awesome MCP Extension\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A brief description of what this extension does\",\n  \"long_description\": \"A detailed description that can include multiple paragraphs explaining the extension's functionality, use cases, and features. It supports basic markdown.\",\n  \"author\": {\n    \"name\": \"Your Name\",\n    \"email\": \"yourname@example.com\",\n    \"url\": \"https://your-website.com\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/your-username/my-mcp-extension\"\n  },\n  \"homepage\": \"https://example.com/my-extension\",\n  \"documentation\": \"https://docs.example.com/my-extension\",\n  \"support\": \"https://github.com/your-username/my-extension/issues\",\n  \"icon\": \"icon.png\",\n  \"screenshots\": [\n    \"assets/screenshots/screenshot1.png\",\n    \"assets/screenshots/screenshot2.png\"\n  ],\n  \"server\": {\n    \"type\": \"node\",\n    \"entry_point\": \"server/index.js\",\n    \"mcp_config\": {\n      \"command\": \"node\",\n      \"args\": [\"${__dirname}/server/index.js\"],\n      \"env\": {\n        \"ALLOWED_DIRECTORIES\": \"${user_config.allowed_directories}\"\n      }\n    }\n  },\n  \"tools\": [\n    {\n      \"name\": \"search_files\",\n      \"description\": \"Search for files in a directory\"\n    }\n  ],\n  \"prompts\": [\n    {\n      \"name\": \"poetry\",\n      \"description\": \"Have the LLM write poetry\",\n      \"arguments\": [\"topic\"],\n      \"text\": \"Write a creative poem about the following topic: ${arguments.topic}\"\n    }\n  ],\n  \"tools_generated\": true,\n  \"keywords\": [\"api\", \"automation\", \"productivity\"],\n  \"license\": \"MIT\",\n  \"compatibility\": {\n    \"claude_desktop\": \">=1.0.0\",\n    \"platforms\": [\"darwin\", \"win32\", \"linux\"],\n    \"runtimes\": {\n      \"node\": \">=16.0.0\"\n    }\n  },\n  \"user_config\": {\n    \"allowed_directories\": {\n      \"type\": \"directory\",\n      \"title\": \"Allowed Directories\",\n      \"description\": \"Directories the server can access\",\n      \"multiple\": true,\n      \"required\": true,\n      \"default\": [\"${HOME}/Desktop\"]\n    },\n    \"api_key\": {\n      \"type\": \"string\",\n      \"title\": \"API Key\",\n      \"description\": \"Your API key for authentication\",\n      \"sensitive\": true,\n      \"required\": false\n    },\n    \"max_file_size\": {\n      \"type\": \"number\",\n      \"title\": \"Maximum File Size (MB)\",\n      \"description\": \"Maximum file size to process\",\n      \"default\": 10,\n      \"min\": 1,\n      \"max\": 100\n    }\n  }\n}\n```\n\nTo see an extension and manifest, please refer [to the examples in the MCPB repository](https://github.com/anthropics/dxt/tree/main/examples).\n\nThe full specification for all required and optional fields in the `manifest.json` can be found as part of our [open-source toolchain](https://github.com/anthropics/dxt/blob/main/MANIFEST.md).\n\n### Building your first extension\n\nLet's walk through packaging an existing MCP server as a Desktop Extension. We'll use a simple file system server as an example.\n\n#### Step 1: Create the manifest\n\nFirst, initialize a manifest for your server:\n\n```\nnpx @anthropic-ai/mcpb init\n```\n\nThis interactive tool asks about your server and generates a complete manifest.json. If you want to speed-run your way to the most basic manifest.json, you can run the command with a --yes parameter.\n\n#### Step 2: Handle user configuration\n\nIf your server needs user input (like API keys or allowed directories), declare it in the manifest:\n\n```\n\"user_config\": {\n  \"allowed_directories\": {\n    \"type\": \"directory\",\n    \"title\": \"Allowed Directories\",\n    \"description\": \"Directories the server can access\",\n    \"multiple\": true,\n    \"required\": true,\n    \"default\": [\"${HOME}/Documents\"]\n  }\n}\n```\n\nClaude Desktop will:\n\n- Display a user-friendly configuration UI\n- Validate inputs before enabling the extension\n- Securely store sensitive values\n- Pass configuration to your server either as arguments or environment variables, depending on developer configuration\n\nIn the example below, we’re passing the user configuration as an environment variable, but it could also be an argument.\n\n```\n\"server\": {\n   \"type\": \"node\",\n   \"entry_point\": \"server/index.js\",\n   \"mcp_config\": {\n   \"command\": \"node\",\n   \"args\": [\"${__dirname}/server/index.js\"],\n   \"env\": {\n      \"ALLOWED_DIRECTORIES\": \"${user_config.allowed_directories}\"\n   }\n   }\n}\n```\n\n#### Step 3: Package the extension\n\nBundle everything into a `.mcpb` file:\n\n```\nnpx @anthropic-ai/mcpb pack\n```\n\nThis command:\n\n1. Validates your manifest\n2. Generates the `.mcpb` archive\n\n#### Step 4: Test locally\n\nDrag your `.mcpb` file into Claude Desktop's Settings window. You'll see:\n\n- Human-readable information about your extension\n- Required permissions and configuration\n- A simple \"Install\" button\n\n### Advanced features\n\n#### Cross-platform support\n\nExtensions can adapt to different operating systems:\n\n```\n\"server\": {\n  \"type\": \"node\",\n  \"entry_point\": \"server/index.js\",\n  \"mcp_config\": {\n    \"command\": \"node\",\n    \"args\": [\"${__dirname}/server/index.js\"],\n    \"platforms\": {\n      \"win32\": {\n        \"command\": \"node.exe\",\n        \"env\": {\n          \"TEMP_DIR\": \"${TEMP}\"\n        }\n      },\n      \"darwin\": {\n        \"env\": {\n          \"TEMP_DIR\": \"${TMPDIR}\"\n        }\n      }\n    }\n  }\n}\n```\n\n#### Dynamic configuration\n\nUse template literals for runtime values:\n\n- `${__dirname}`: Extension's installation directory\n- `${user_config.key}`: User-provided configuration\n- `${HOME}, ${TEMP}`: System environment variables\n\n#### Feature declaration\n\nHelp users understand capabilities upfront:\n\n```\n\"tools\": [\n  {\n    \"name\": \"read_file\",\n    \"description\": \"Read contents of a file\"\n  }\n],\n\"prompts\": [\n  {\n    \"name\": \"code_review\",\n    \"description\": \"Review code for best practices\",\n    \"arguments\": [\"file_path\"]\n  }\n]\n```\n\n### The extension directory\n\nWe're launching with a curated directory of extensions built into Claude Desktop. Users can browse, search, and install with one click—no searching GitHub or vetting code.\n\nWhile we expect both the Desktop Extension specification and the implementation in Claude for macOS and Windows to evolve over time, we look forward to seeing the many ways in which extensions can be used to expand the capabilities of Claude in creative ways.\n\nTo submit your extension:\n\n1. Ensure it follows the guidelines found in the submission form\n2. Test across Windows and macOS\n3. [Submit your extension](https://docs.google.com/forms/d/14_Dmcig4z8NeRMB_e7TOyrKzuZ88-BLYdLvS6LPhiZU/edit)\n4. Our team reviews for quality and security\n\n### Building an open ecosystem\n\nWe are committed to the open ecosystem around MCP servers and believe that its ability to be universally adopted by multiple applications and services has benefitted the community. In line with this commitment, we’re open-sourcing the Desktop Extension specification, toolchain, and the schemas and key functions used by Claude for macOS and Windows to implement its own support of Desktop Extensions. It is our hope that the MCPB format doesn’t just make local MCP servers more portable for Claude, but other AI desktop applications, too.\n\nWe're open-sourcing:\n\n- The complete MCPB specification\n- Packaging and validation tools\n- Reference implementation code\n- TypeScript types and schemas\n\nThis means:\n\n- **For MCP server developers**: Package once, run anywhere that supports MCPB\n- **For app developers**: Add extension support without building from scratch\n- **For users**: Consistent experience across all MCP-enabled applications\n\nThe specification and toolchain is on purpose versioned as 0.1, as we are looking forward to working with the greater community on evolving and changing the format. We look forward to hearing from you.\n\n### Security and enterprise considerations\n\nWe understand that extensions introduce new security considerations, particularly for enterprises. We've built in several safeguards with the preview release of Desktop Extensions:\n\n#### For users\n\n- Sensitive data stays in the OS keychain\n- Automatic updates\n- Ability to audit what extensions are installed\n\n#### For enterprises\n\n- Group Policy (Windows) and MDM (macOS) support\n- Ability to pre-install approved extensions\n- Blocklist specific extensions or publishers\n- Disable the extension directory entirely\n- Deploy private extension directories\n\nFor more information about how to manage extensions within your organization, see our [documentation](https://support.anthropic.com/en/articles/10949351-getting-started-with-model-context-protocol-mcp-on-claude-for-desktop).\n\n### Getting started\n\nReady to build your own extension? Here's how to start:\n\n**For MCP server developers**: Review our [developer documentation](https://github.com/anthropics/dxt) – or dive right in by running the following commands in your local MCP servers’ directory:\n\n```\nnpm install -g @anthropic-ai/mcpb\nmcpb init\nmcpb pack\n```\n\n**For Claude Desktop users**: Update to the latest version and look for the Extensions section in Settings\n\n**For enterprises**: Review our enterprise documentation for deployment options\n\n### Building with Claude Code\n\nInternally at Anthropic, we have found that Claude is great at building extensions with minimal intervention. If you too want to use Claude Code, we recommend that you briefly explain what you want your extension to do and then add the following context to the prompt:\n\n```\nI want to build this as a Desktop Extension, abbreviated as \"MCPB\". Please follow these steps:\n\n1. **Read the specifications thoroughly:**\n   - https://github.com/anthropics/mcpb/blob/main/README.md - MCPB architecture overview, capabilities, and integration patterns\n   - https://github.com/anthropics/mcpb/blob/main/MANIFEST.md - Complete extension manifest structure and field definitions\n   - https://github.com/anthropics/mcpb/tree/main/examples - Reference implementations including a \"Hello World\" example\n\n2. **Create a proper extension structure:**\n   - Generate a valid manifest.json following the MANIFEST.md spec\n   - Implement an MCP server using @modelcontextprotocol/sdk with proper tool definitions\n   - Include proper error handling and timeout management\n\n3. **Follow best development practices:**\n   - Implement proper MCP protocol communication via stdio transport\n   - Structure tools with clear schemas, validation, and consistent JSON responses\n   - Make use of the fact that this extension will be running locally\n   - Add appropriate logging and debugging capabilities\n   - Include proper documentation and setup instructions\n\n4. **Test considerations:**\n   - Validate that all tool calls return properly structured responses\n   - Verify manifest loads correctly and host integration works\n\nGenerate complete, production-ready code that can be immediately tested. Focus on defensive programming, clear error messages, and following the exact\nMCPB specifications to ensure compatibility with the ecosystem.\n```\n\n### Conclusion\n\nDesktop Extensions represent a fundamental shift in how users interact with local AI tools. By removing installation friction, we're making powerful MCP servers accessible to everyone—not just developers.\n\nInternally, we’re using desktop extensions to share highly experimental MCP servers - some fun, some useful.. One team experimented to see how far our models could make it when directly connected to a GameBoy, similar to our [“Claude plays Pokémon” research](https://www.anthropic.com/news/visible-extended-thinking). We used Desktop Extensions to package a single extension that opens up the popular [PyBoy](https://github.com/Baekalfen/PyBoy) GameBoy emulator and lets Claude take control. We believe that countless opportunities exist to connect the model’s capabilities to the tools, data, and applications users already have on their local machines.\n\n![A desktop showing the PyBoy MCP with Super Mario Land start screen](https://www.anthropic.com/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fd48f3ea1218a4b90450b9ab8134fa0e24db5a167-720x542.png&w=1920&q=75)\n\nWe can't wait to see what you build. The same creativity that brought us thousands of MCP servers can now reach millions of users with just one click. Ready to share your MCP server? [Submit your extension for review](https://forms.gle/tyiAZvch1kDADKoP9).\n",
  "dateCreated": "2026-09-27T19:29:15.293681927+00:00",
  "date_created": "2026-04-23T00:00:00+00:00",
  "date_modified": null,
  "date_published": "2026-04-23T00:00:00+00:00",
  "description": "As agents grow more capable, so does their potential blast radius. The engineering question is how to cap it. Here’s what we’ve learned building containment for claude.ai, Claude Code, and Cowork.",
  "external_url": "https://www.anthropic.com/engineering/desktop-extensions",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/anthropic-com/2026/04/2026-04-23-desktop-extensions-one-click-mcp-server-installation-for.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/anthropic-com/2026/04/2026-04-23-desktop-extensions-one-click-mcp-server-installation-for.md"
  },
  "id": "urn:aggr:item:4362079ac37236a0b820cbb898d6b690103270bd",
  "isBasedOn": {
    "@id": "https://www.anthropic.com/engineering/desktop-extensions"
  },
  "mainEntity": {
    "@id": "https://www.anthropic.com/engineering/desktop-extensions",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/anthropic-com/2026-04-23-desktop-extensions-one-click-mcp-server-installation-for/#webpage"
    },
    "datePublished": "2026-04-23T00:00:00+00:00",
    "headline": "Desktop Extensions: One-click MCP server installation for Claude Desktop",
    "timeRequired": "PT11M",
    "url": "https://www.anthropic.com/engineering/desktop-extensions",
    "wordCount": 2255
  },
  "name": "Archived snapshot: Desktop Extensions: One-click MCP server installation for Claude Desktop",
  "preview": null,
  "reading_minutes": 11,
  "replicated_at": null,
  "source": "anthropic-com",
  "source_name": "Engineering \\ Anthropic",
  "summary": "As agents grow more capable, so does their potential blast radius. The engineering question is how to cap it. Here’s what we’ve learned building containment for claude.ai, Claude Code, and Cowork.",
  "tags": [],
  "temporalCoverage": "2026-09-27T19:29:15.293681927+00:00",
  "title": "Desktop Extensions: One-click MCP server installation for Claude Desktop",
  "url": "https://aggr.aymericbeaumet.com/items/anthropic-com/2026-04-23-desktop-extensions-one-click-mcp-server-installation-for/",
  "word_count": 2255
}