[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-docker-mcp-server-yaml-creator":3,"mdc-81nt4y-key":33,"related-repo-docker-mcp-server-yaml-creator":1535,"related-org-docker-mcp-server-yaml-creator":1544},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"mcp-server-yaml-creator","configure custom MCP servers in Docker","Add and configure custom MCP servers in Docker MCP Gateway. Use when users want to: (1) Integrate their own MCP server into the gateway, (2) Add new servers to catalogs or profiles, (3) Set up server authentication, networking, and configuration, (4) Understand MCP server integration requirements.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"docker","Docker","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdocker.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Configuration","configuration","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":20,"slug":21,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},17,"https:\u002F\u002Fgithub.com\u002Fdocker\u002Fclaude-plugins","2026-07-12T08:15:15.779117",null,6,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fdocker\u002Fclaude-plugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fbeta-mcp-skills\u002Fskills\u002Fmcp-server-yaml-creator","---\nname: mcp-server-yaml-creator\ndescription: \"Add and configure custom MCP servers in Docker MCP Gateway. Use when users want to: (1) Integrate their own MCP server into the gateway, (2) Add new servers to catalogs or profiles, (3) Set up server authentication, networking, and configuration, (4) Understand MCP server integration requirements.\"\n---\n\n# MCP Server YAML Creator\n\n## Overview\n\nCreate valid server.yaml files for custom MCP servers that can be added to Docker MCP Gateway catalogs and profiles using the `--server file:\u002F\u002Fserver.yaml` flag.\n\nMCP servers can be of three types:\n- **server**: Containerized MCP servers (most common)\n- **remote**: Remote HTTP\u002FSSE MCP servers\n\n## Quick Start - Creation from Templates\n\nStart from a template for your server type:\n- `assets\u002Ftemplate-server.yaml` - Containerized MCP servers\n- `assets\u002Ftemplate-remote.yaml` - Remote HTTP\u002FSSE servers\n\nCopy the relevant template and customize it for your needs.\n\n### Advanced Configuration\n\nFor complex scenarios (nested objects, conditional requirements, OAuth), consult `references\u002Fspec.md` for the complete specification.\n\n## Core Requirements\n\nAll server.yaml files must include:\n\n```yaml\nname: server-name          # Lowercase, hyphen-separated\ntype: server               # or: remote\ntitle: Display Name\ndescription: Server capabilities and purpose (1-2 sentences)\n```\n\n## Type: \"server\" (Containerized)\n\nMost common type for custom MCP servers. Requires a Docker image. If the user doesn't have a Docker image, ALWAYS guide them on the process on creating a Dockerfile, building it, and pushing it. If they already have a Dockerfile, ALWAYS guide them on building and pushing the docker image so that it can be referenced in the `image` field.\n\n**Essential fields:**\n```yaml\nname: my-server\ntype: server\ntitle: My Server\ndescription: Brief description of what the server does (1-2 sentences)\nimage: myorg\u002Fmy-server:latest\n```\n\n**Common additions:**\n- `secrets`: API keys, tokens (never hardcode)\n- `config`: User-configurable settings\n- `env`: Environment variables (can reference config with `{{server-name.property}}`)\n- `allowHosts`: Network access restrictions\n- `volumes`: File system mounts (can be a named volume `\"named-volume:\u002Fapp\u002Fdata` or mapped to a config `\"{{my-server.config_path}}:\u002Fapp\u002Fconfig\"`)\n- `longLived`: Keep running vs on-demand for tool calls (only enable this if there's good reason to keep the server running)\n- `tools`: An optional (but very helpful) list of tools the server exposes for discovery purposes\n\nSee `assets\u002Ftemplate-server.yaml` for a complete example.\n\n## Type: \"remote\" (HTTP\u002FSSE)\n\nFor remotely hosted MCP servers.\n\n**Essential fields:**\n```yaml\nname: remote-server\ntype: remote\ntitle: Remote Server\ndescription: Brief description of what the server does (1-2 sentences)\nremote:\n  url: https:\u002F\u002Fmcp.example.com\u002Fsse\n  transport_type: sse\n```\n\nSee `assets\u002Ftemplate-remote.yaml` for a complete example.\n\n## Configuration Schema\n\nUser-configurable settings allow users to provide values when using your server.\n\n**Basic example:**\n```yaml\nconfig:\n  - name: server-name\n    description: Connection settings\n    type: object\n    properties:\n      endpoint:\n        type: string\n        description: API endpoint URL\n      timeout:\n        type: number\n        description: Timeout in seconds\n    required:\n      - endpoint\n```\n\n**Reference config values in environment variables:**\n```yaml\nenv:\n  - name: API_ENDPOINT\n    value: \"{{server-name.endpoint}}\"\n```\n\nEnvironment variables should only ever be used for:\n1. Config values that are setup in the `config` at the top level.\n2. Hard-coded environment variables that the server requires.\n3. Secrets should never be added here, as they are injected automatically as environment variables.\n\nFor arrays, nested objects, conditional requirements (anyOf\u002FoneOf), see `references\u002Fspec.md`.\n\n## Secrets and Authentication\n\nAlways use the `secrets` field for sensitive values:\n\n```yaml\nsecrets:\n  - name: server-name.api_key\n    env: API_KEY\n    example: YOUR_API_KEY\n```\n\nSecrets are automatically injected as environment variables. NEVER put a secret in the `env` field of the server yaml.\n\nFor OAuth configuration, see `references\u002Fspec.md`.\n\n## Network Security\n\n**Option 1: Restrict to specific hosts**\n```yaml\nallowHosts:\n  - api.example.com:443\n  - github.com:443\n```\n\n**Option 2: Disable all network**\n```yaml\ndisableNetwork: true\n```\n\n## Usage\n\nAfter creating server.yaml, add it to a profile or catalog:\n\n```bash\n# Add to a profile\ndocker mcp profile server add \u003Cprofile-id> --server file:\u002F\u002F.\u002Fserver.yaml\n\n# Create catalog with the server\ndocker mcp catalog-next create \u003Ccatalog-id> --title \"My Catalog\" --server file:\u002F\u002F.\u002Fserver.yaml\n```\n\nBe sure to ask the user what they would like to do. The recommended approach would be to create a new catalog and add it to a new catalog.\n\nIf you need to understand more about what `docker mcp` commands are available, check out the docs at https:\u002F\u002Fraw.githubusercontent.com\u002Fdocker\u002Fmcp-gateway\u002Frefs\u002Fheads\u002Fmain\u002Fdocs\u002Fprofiles.md\n\n## Best Practices\n\n1. Use lowercase-hyphenated naming: `my-custom-server`\n2. Keep server descriptions short and concise (1-2 sentences maximum)\n3. Always use `secrets` field for API keys\u002Ftokens, never hardcode in `env`\n4. Use `allowHosts` to restrict network access\n5. Provide clear descriptions for all config properties\n6. Consider if any environment variables should be hard-coded rather than user-defined.\n7. Use SHA256 digests for production images, tags for development\n8. Mark config fields as required when necessary\n9. Omit fields that are empty (e.g. `env`, `secrets`)\n10. Test the server.yaml by adding it to a profile and running the gateway\n11. ONLY use or show `docker mcp` commands that you've been told about. Don't make up commands.\n\n## Resources\n\n- **assets\u002F**: Template examples for each server type (server, remote)\n- **references\u002Fspec.md**: Complete technical specification with advanced patterns\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,46,53,68,73,99,105,110,135,140,147,160,166,171,271,277,290,298,386,394,497,509,515,520,527,644,654,660,665,673,880,888,953,958,984,996,1002,1014,1086,1098,1109,1115,1123,1165,1173,1198,1204,1209,1366,1371,1392,1398,1501,1507,1529],{"type":39,"tag":40,"props":41,"children":42},"element","h1",{"id":4},[43],{"type":44,"value":45},"text","MCP Server YAML Creator",{"type":39,"tag":47,"props":48,"children":50},"h2",{"id":49},"overview",[51],{"type":44,"value":52},"Overview",{"type":39,"tag":54,"props":55,"children":56},"p",{},[57,59,66],{"type":44,"value":58},"Create valid server.yaml files for custom MCP servers that can be added to Docker MCP Gateway catalogs and profiles using the ",{"type":39,"tag":60,"props":61,"children":63},"code",{"className":62},[],[64],{"type":44,"value":65},"--server file:\u002F\u002Fserver.yaml",{"type":44,"value":67}," flag.",{"type":39,"tag":54,"props":69,"children":70},{},[71],{"type":44,"value":72},"MCP servers can be of three types:",{"type":39,"tag":74,"props":75,"children":76},"ul",{},[77,89],{"type":39,"tag":78,"props":79,"children":80},"li",{},[81,87],{"type":39,"tag":82,"props":83,"children":84},"strong",{},[85],{"type":44,"value":86},"server",{"type":44,"value":88},": Containerized MCP servers (most common)",{"type":39,"tag":78,"props":90,"children":91},{},[92,97],{"type":39,"tag":82,"props":93,"children":94},{},[95],{"type":44,"value":96},"remote",{"type":44,"value":98},": Remote HTTP\u002FSSE MCP servers",{"type":39,"tag":47,"props":100,"children":102},{"id":101},"quick-start-creation-from-templates",[103],{"type":44,"value":104},"Quick Start - Creation from Templates",{"type":39,"tag":54,"props":106,"children":107},{},[108],{"type":44,"value":109},"Start from a template for your server type:",{"type":39,"tag":74,"props":111,"children":112},{},[113,124],{"type":39,"tag":78,"props":114,"children":115},{},[116,122],{"type":39,"tag":60,"props":117,"children":119},{"className":118},[],[120],{"type":44,"value":121},"assets\u002Ftemplate-server.yaml",{"type":44,"value":123}," - Containerized MCP servers",{"type":39,"tag":78,"props":125,"children":126},{},[127,133],{"type":39,"tag":60,"props":128,"children":130},{"className":129},[],[131],{"type":44,"value":132},"assets\u002Ftemplate-remote.yaml",{"type":44,"value":134}," - Remote HTTP\u002FSSE servers",{"type":39,"tag":54,"props":136,"children":137},{},[138],{"type":44,"value":139},"Copy the relevant template and customize it for your needs.",{"type":39,"tag":141,"props":142,"children":144},"h3",{"id":143},"advanced-configuration",[145],{"type":44,"value":146},"Advanced Configuration",{"type":39,"tag":54,"props":148,"children":149},{},[150,152,158],{"type":44,"value":151},"For complex scenarios (nested objects, conditional requirements, OAuth), consult ",{"type":39,"tag":60,"props":153,"children":155},{"className":154},[],[156],{"type":44,"value":157},"references\u002Fspec.md",{"type":44,"value":159}," for the complete specification.",{"type":39,"tag":47,"props":161,"children":163},{"id":162},"core-requirements",[164],{"type":44,"value":165},"Core Requirements",{"type":39,"tag":54,"props":167,"children":168},{},[169],{"type":44,"value":170},"All server.yaml files must include:",{"type":39,"tag":172,"props":173,"children":178},"pre",{"className":174,"code":175,"language":176,"meta":177,"style":177},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: server-name          # Lowercase, hyphen-separated\ntype: server               # or: remote\ntitle: Display Name\ndescription: Server capabilities and purpose (1-2 sentences)\n","yaml","",[179],{"type":39,"tag":60,"props":180,"children":181},{"__ignoreMap":177},[182,212,235,253],{"type":39,"tag":183,"props":184,"children":187},"span",{"class":185,"line":186},"line",1,[188,194,200,206],{"type":39,"tag":183,"props":189,"children":191},{"style":190},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[192],{"type":44,"value":193},"name",{"type":39,"tag":183,"props":195,"children":197},{"style":196},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[198],{"type":44,"value":199},":",{"type":39,"tag":183,"props":201,"children":203},{"style":202},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[204],{"type":44,"value":205}," server-name",{"type":39,"tag":183,"props":207,"children":209},{"style":208},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[210],{"type":44,"value":211},"          # Lowercase, hyphen-separated\n",{"type":39,"tag":183,"props":213,"children":215},{"class":185,"line":214},2,[216,221,225,230],{"type":39,"tag":183,"props":217,"children":218},{"style":190},[219],{"type":44,"value":220},"type",{"type":39,"tag":183,"props":222,"children":223},{"style":196},[224],{"type":44,"value":199},{"type":39,"tag":183,"props":226,"children":227},{"style":202},[228],{"type":44,"value":229}," server",{"type":39,"tag":183,"props":231,"children":232},{"style":208},[233],{"type":44,"value":234},"               # or: remote\n",{"type":39,"tag":183,"props":236,"children":238},{"class":185,"line":237},3,[239,244,248],{"type":39,"tag":183,"props":240,"children":241},{"style":190},[242],{"type":44,"value":243},"title",{"type":39,"tag":183,"props":245,"children":246},{"style":196},[247],{"type":44,"value":199},{"type":39,"tag":183,"props":249,"children":250},{"style":202},[251],{"type":44,"value":252}," Display Name\n",{"type":39,"tag":183,"props":254,"children":256},{"class":185,"line":255},4,[257,262,266],{"type":39,"tag":183,"props":258,"children":259},{"style":190},[260],{"type":44,"value":261},"description",{"type":39,"tag":183,"props":263,"children":264},{"style":196},[265],{"type":44,"value":199},{"type":39,"tag":183,"props":267,"children":268},{"style":202},[269],{"type":44,"value":270}," Server capabilities and purpose (1-2 sentences)\n",{"type":39,"tag":47,"props":272,"children":274},{"id":273},"type-server-containerized",[275],{"type":44,"value":276},"Type: \"server\" (Containerized)",{"type":39,"tag":54,"props":278,"children":279},{},[280,282,288],{"type":44,"value":281},"Most common type for custom MCP servers. Requires a Docker image. If the user doesn't have a Docker image, ALWAYS guide them on the process on creating a Dockerfile, building it, and pushing it. If they already have a Dockerfile, ALWAYS guide them on building and pushing the docker image so that it can be referenced in the ",{"type":39,"tag":60,"props":283,"children":285},{"className":284},[],[286],{"type":44,"value":287},"image",{"type":44,"value":289}," field.",{"type":39,"tag":54,"props":291,"children":292},{},[293],{"type":39,"tag":82,"props":294,"children":295},{},[296],{"type":44,"value":297},"Essential fields:",{"type":39,"tag":172,"props":299,"children":301},{"className":174,"code":300,"language":176,"meta":177,"style":177},"name: my-server\ntype: server\ntitle: My Server\ndescription: Brief description of what the server does (1-2 sentences)\nimage: myorg\u002Fmy-server:latest\n",[302],{"type":39,"tag":60,"props":303,"children":304},{"__ignoreMap":177},[305,321,337,353,369],{"type":39,"tag":183,"props":306,"children":307},{"class":185,"line":186},[308,312,316],{"type":39,"tag":183,"props":309,"children":310},{"style":190},[311],{"type":44,"value":193},{"type":39,"tag":183,"props":313,"children":314},{"style":196},[315],{"type":44,"value":199},{"type":39,"tag":183,"props":317,"children":318},{"style":202},[319],{"type":44,"value":320}," my-server\n",{"type":39,"tag":183,"props":322,"children":323},{"class":185,"line":214},[324,328,332],{"type":39,"tag":183,"props":325,"children":326},{"style":190},[327],{"type":44,"value":220},{"type":39,"tag":183,"props":329,"children":330},{"style":196},[331],{"type":44,"value":199},{"type":39,"tag":183,"props":333,"children":334},{"style":202},[335],{"type":44,"value":336}," server\n",{"type":39,"tag":183,"props":338,"children":339},{"class":185,"line":237},[340,344,348],{"type":39,"tag":183,"props":341,"children":342},{"style":190},[343],{"type":44,"value":243},{"type":39,"tag":183,"props":345,"children":346},{"style":196},[347],{"type":44,"value":199},{"type":39,"tag":183,"props":349,"children":350},{"style":202},[351],{"type":44,"value":352}," My Server\n",{"type":39,"tag":183,"props":354,"children":355},{"class":185,"line":255},[356,360,364],{"type":39,"tag":183,"props":357,"children":358},{"style":190},[359],{"type":44,"value":261},{"type":39,"tag":183,"props":361,"children":362},{"style":196},[363],{"type":44,"value":199},{"type":39,"tag":183,"props":365,"children":366},{"style":202},[367],{"type":44,"value":368}," Brief description of what the server does (1-2 sentences)\n",{"type":39,"tag":183,"props":370,"children":372},{"class":185,"line":371},5,[373,377,381],{"type":39,"tag":183,"props":374,"children":375},{"style":190},[376],{"type":44,"value":287},{"type":39,"tag":183,"props":378,"children":379},{"style":196},[380],{"type":44,"value":199},{"type":39,"tag":183,"props":382,"children":383},{"style":202},[384],{"type":44,"value":385}," myorg\u002Fmy-server:latest\n",{"type":39,"tag":54,"props":387,"children":388},{},[389],{"type":39,"tag":82,"props":390,"children":391},{},[392],{"type":44,"value":393},"Common additions:",{"type":39,"tag":74,"props":395,"children":396},{},[397,408,419,438,449,475,486],{"type":39,"tag":78,"props":398,"children":399},{},[400,406],{"type":39,"tag":60,"props":401,"children":403},{"className":402},[],[404],{"type":44,"value":405},"secrets",{"type":44,"value":407},": API keys, tokens (never hardcode)",{"type":39,"tag":78,"props":409,"children":410},{},[411,417],{"type":39,"tag":60,"props":412,"children":414},{"className":413},[],[415],{"type":44,"value":416},"config",{"type":44,"value":418},": User-configurable settings",{"type":39,"tag":78,"props":420,"children":421},{},[422,428,430,436],{"type":39,"tag":60,"props":423,"children":425},{"className":424},[],[426],{"type":44,"value":427},"env",{"type":44,"value":429},": Environment variables (can reference config with ",{"type":39,"tag":60,"props":431,"children":433},{"className":432},[],[434],{"type":44,"value":435},"{{server-name.property}}",{"type":44,"value":437},")",{"type":39,"tag":78,"props":439,"children":440},{},[441,447],{"type":39,"tag":60,"props":442,"children":444},{"className":443},[],[445],{"type":44,"value":446},"allowHosts",{"type":44,"value":448},": Network access restrictions",{"type":39,"tag":78,"props":450,"children":451},{},[452,458,460,466,468,474],{"type":39,"tag":60,"props":453,"children":455},{"className":454},[],[456],{"type":44,"value":457},"volumes",{"type":44,"value":459},": File system mounts (can be a named volume ",{"type":39,"tag":60,"props":461,"children":463},{"className":462},[],[464],{"type":44,"value":465},"\"named-volume:\u002Fapp\u002Fdata",{"type":44,"value":467}," or mapped to a config ",{"type":39,"tag":60,"props":469,"children":471},{"className":470},[],[472],{"type":44,"value":473},"\"{{my-server.config_path}}:\u002Fapp\u002Fconfig\"",{"type":44,"value":437},{"type":39,"tag":78,"props":476,"children":477},{},[478,484],{"type":39,"tag":60,"props":479,"children":481},{"className":480},[],[482],{"type":44,"value":483},"longLived",{"type":44,"value":485},": Keep running vs on-demand for tool calls (only enable this if there's good reason to keep the server running)",{"type":39,"tag":78,"props":487,"children":488},{},[489,495],{"type":39,"tag":60,"props":490,"children":492},{"className":491},[],[493],{"type":44,"value":494},"tools",{"type":44,"value":496},": An optional (but very helpful) list of tools the server exposes for discovery purposes",{"type":39,"tag":54,"props":498,"children":499},{},[500,502,507],{"type":44,"value":501},"See ",{"type":39,"tag":60,"props":503,"children":505},{"className":504},[],[506],{"type":44,"value":121},{"type":44,"value":508}," for a complete example.",{"type":39,"tag":47,"props":510,"children":512},{"id":511},"type-remote-httpsse",[513],{"type":44,"value":514},"Type: \"remote\" (HTTP\u002FSSE)",{"type":39,"tag":54,"props":516,"children":517},{},[518],{"type":44,"value":519},"For remotely hosted MCP servers.",{"type":39,"tag":54,"props":521,"children":522},{},[523],{"type":39,"tag":82,"props":524,"children":525},{},[526],{"type":44,"value":297},{"type":39,"tag":172,"props":528,"children":530},{"className":174,"code":529,"language":176,"meta":177,"style":177},"name: remote-server\ntype: remote\ntitle: Remote Server\ndescription: Brief description of what the server does (1-2 sentences)\nremote:\n  url: https:\u002F\u002Fmcp.example.com\u002Fsse\n  transport_type: sse\n",[531],{"type":39,"tag":60,"props":532,"children":533},{"__ignoreMap":177},[534,550,566,582,597,609,626],{"type":39,"tag":183,"props":535,"children":536},{"class":185,"line":186},[537,541,545],{"type":39,"tag":183,"props":538,"children":539},{"style":190},[540],{"type":44,"value":193},{"type":39,"tag":183,"props":542,"children":543},{"style":196},[544],{"type":44,"value":199},{"type":39,"tag":183,"props":546,"children":547},{"style":202},[548],{"type":44,"value":549}," remote-server\n",{"type":39,"tag":183,"props":551,"children":552},{"class":185,"line":214},[553,557,561],{"type":39,"tag":183,"props":554,"children":555},{"style":190},[556],{"type":44,"value":220},{"type":39,"tag":183,"props":558,"children":559},{"style":196},[560],{"type":44,"value":199},{"type":39,"tag":183,"props":562,"children":563},{"style":202},[564],{"type":44,"value":565}," remote\n",{"type":39,"tag":183,"props":567,"children":568},{"class":185,"line":237},[569,573,577],{"type":39,"tag":183,"props":570,"children":571},{"style":190},[572],{"type":44,"value":243},{"type":39,"tag":183,"props":574,"children":575},{"style":196},[576],{"type":44,"value":199},{"type":39,"tag":183,"props":578,"children":579},{"style":202},[580],{"type":44,"value":581}," Remote Server\n",{"type":39,"tag":183,"props":583,"children":584},{"class":185,"line":255},[585,589,593],{"type":39,"tag":183,"props":586,"children":587},{"style":190},[588],{"type":44,"value":261},{"type":39,"tag":183,"props":590,"children":591},{"style":196},[592],{"type":44,"value":199},{"type":39,"tag":183,"props":594,"children":595},{"style":202},[596],{"type":44,"value":368},{"type":39,"tag":183,"props":598,"children":599},{"class":185,"line":371},[600,604],{"type":39,"tag":183,"props":601,"children":602},{"style":190},[603],{"type":44,"value":96},{"type":39,"tag":183,"props":605,"children":606},{"style":196},[607],{"type":44,"value":608},":\n",{"type":39,"tag":183,"props":610,"children":611},{"class":185,"line":27},[612,617,621],{"type":39,"tag":183,"props":613,"children":614},{"style":190},[615],{"type":44,"value":616},"  url",{"type":39,"tag":183,"props":618,"children":619},{"style":196},[620],{"type":44,"value":199},{"type":39,"tag":183,"props":622,"children":623},{"style":202},[624],{"type":44,"value":625}," https:\u002F\u002Fmcp.example.com\u002Fsse\n",{"type":39,"tag":183,"props":627,"children":629},{"class":185,"line":628},7,[630,635,639],{"type":39,"tag":183,"props":631,"children":632},{"style":190},[633],{"type":44,"value":634},"  transport_type",{"type":39,"tag":183,"props":636,"children":637},{"style":196},[638],{"type":44,"value":199},{"type":39,"tag":183,"props":640,"children":641},{"style":202},[642],{"type":44,"value":643}," sse\n",{"type":39,"tag":54,"props":645,"children":646},{},[647,648,653],{"type":44,"value":501},{"type":39,"tag":60,"props":649,"children":651},{"className":650},[],[652],{"type":44,"value":132},{"type":44,"value":508},{"type":39,"tag":47,"props":655,"children":657},{"id":656},"configuration-schema",[658],{"type":44,"value":659},"Configuration Schema",{"type":39,"tag":54,"props":661,"children":662},{},[663],{"type":44,"value":664},"User-configurable settings allow users to provide values when using your server.",{"type":39,"tag":54,"props":666,"children":667},{},[668],{"type":39,"tag":82,"props":669,"children":670},{},[671],{"type":44,"value":672},"Basic example:",{"type":39,"tag":172,"props":674,"children":676},{"className":174,"code":675,"language":176,"meta":177,"style":177},"config:\n  - name: server-name\n    description: Connection settings\n    type: object\n    properties:\n      endpoint:\n        type: string\n        description: API endpoint URL\n      timeout:\n        type: number\n        description: Timeout in seconds\n    required:\n      - endpoint\n",[677],{"type":39,"tag":60,"props":678,"children":679},{"__ignoreMap":177},[680,691,713,730,747,759,771,788,806,819,836,853,866],{"type":39,"tag":183,"props":681,"children":682},{"class":185,"line":186},[683,687],{"type":39,"tag":183,"props":684,"children":685},{"style":190},[686],{"type":44,"value":416},{"type":39,"tag":183,"props":688,"children":689},{"style":196},[690],{"type":44,"value":608},{"type":39,"tag":183,"props":692,"children":693},{"class":185,"line":214},[694,699,704,708],{"type":39,"tag":183,"props":695,"children":696},{"style":196},[697],{"type":44,"value":698},"  -",{"type":39,"tag":183,"props":700,"children":701},{"style":190},[702],{"type":44,"value":703}," name",{"type":39,"tag":183,"props":705,"children":706},{"style":196},[707],{"type":44,"value":199},{"type":39,"tag":183,"props":709,"children":710},{"style":202},[711],{"type":44,"value":712}," server-name\n",{"type":39,"tag":183,"props":714,"children":715},{"class":185,"line":237},[716,721,725],{"type":39,"tag":183,"props":717,"children":718},{"style":190},[719],{"type":44,"value":720},"    description",{"type":39,"tag":183,"props":722,"children":723},{"style":196},[724],{"type":44,"value":199},{"type":39,"tag":183,"props":726,"children":727},{"style":202},[728],{"type":44,"value":729}," Connection settings\n",{"type":39,"tag":183,"props":731,"children":732},{"class":185,"line":255},[733,738,742],{"type":39,"tag":183,"props":734,"children":735},{"style":190},[736],{"type":44,"value":737},"    type",{"type":39,"tag":183,"props":739,"children":740},{"style":196},[741],{"type":44,"value":199},{"type":39,"tag":183,"props":743,"children":744},{"style":202},[745],{"type":44,"value":746}," object\n",{"type":39,"tag":183,"props":748,"children":749},{"class":185,"line":371},[750,755],{"type":39,"tag":183,"props":751,"children":752},{"style":190},[753],{"type":44,"value":754},"    properties",{"type":39,"tag":183,"props":756,"children":757},{"style":196},[758],{"type":44,"value":608},{"type":39,"tag":183,"props":760,"children":761},{"class":185,"line":27},[762,767],{"type":39,"tag":183,"props":763,"children":764},{"style":190},[765],{"type":44,"value":766},"      endpoint",{"type":39,"tag":183,"props":768,"children":769},{"style":196},[770],{"type":44,"value":608},{"type":39,"tag":183,"props":772,"children":773},{"class":185,"line":628},[774,779,783],{"type":39,"tag":183,"props":775,"children":776},{"style":190},[777],{"type":44,"value":778},"        type",{"type":39,"tag":183,"props":780,"children":781},{"style":196},[782],{"type":44,"value":199},{"type":39,"tag":183,"props":784,"children":785},{"style":202},[786],{"type":44,"value":787}," string\n",{"type":39,"tag":183,"props":789,"children":791},{"class":185,"line":790},8,[792,797,801],{"type":39,"tag":183,"props":793,"children":794},{"style":190},[795],{"type":44,"value":796},"        description",{"type":39,"tag":183,"props":798,"children":799},{"style":196},[800],{"type":44,"value":199},{"type":39,"tag":183,"props":802,"children":803},{"style":202},[804],{"type":44,"value":805}," API endpoint URL\n",{"type":39,"tag":183,"props":807,"children":809},{"class":185,"line":808},9,[810,815],{"type":39,"tag":183,"props":811,"children":812},{"style":190},[813],{"type":44,"value":814},"      timeout",{"type":39,"tag":183,"props":816,"children":817},{"style":196},[818],{"type":44,"value":608},{"type":39,"tag":183,"props":820,"children":822},{"class":185,"line":821},10,[823,827,831],{"type":39,"tag":183,"props":824,"children":825},{"style":190},[826],{"type":44,"value":778},{"type":39,"tag":183,"props":828,"children":829},{"style":196},[830],{"type":44,"value":199},{"type":39,"tag":183,"props":832,"children":833},{"style":202},[834],{"type":44,"value":835}," number\n",{"type":39,"tag":183,"props":837,"children":839},{"class":185,"line":838},11,[840,844,848],{"type":39,"tag":183,"props":841,"children":842},{"style":190},[843],{"type":44,"value":796},{"type":39,"tag":183,"props":845,"children":846},{"style":196},[847],{"type":44,"value":199},{"type":39,"tag":183,"props":849,"children":850},{"style":202},[851],{"type":44,"value":852}," Timeout in seconds\n",{"type":39,"tag":183,"props":854,"children":856},{"class":185,"line":855},12,[857,862],{"type":39,"tag":183,"props":858,"children":859},{"style":190},[860],{"type":44,"value":861},"    required",{"type":39,"tag":183,"props":863,"children":864},{"style":196},[865],{"type":44,"value":608},{"type":39,"tag":183,"props":867,"children":869},{"class":185,"line":868},13,[870,875],{"type":39,"tag":183,"props":871,"children":872},{"style":196},[873],{"type":44,"value":874},"      -",{"type":39,"tag":183,"props":876,"children":877},{"style":202},[878],{"type":44,"value":879}," endpoint\n",{"type":39,"tag":54,"props":881,"children":882},{},[883],{"type":39,"tag":82,"props":884,"children":885},{},[886],{"type":44,"value":887},"Reference config values in environment variables:",{"type":39,"tag":172,"props":889,"children":891},{"className":174,"code":890,"language":176,"meta":177,"style":177},"env:\n  - name: API_ENDPOINT\n    value: \"{{server-name.endpoint}}\"\n",[892],{"type":39,"tag":60,"props":893,"children":894},{"__ignoreMap":177},[895,906,926],{"type":39,"tag":183,"props":896,"children":897},{"class":185,"line":186},[898,902],{"type":39,"tag":183,"props":899,"children":900},{"style":190},[901],{"type":44,"value":427},{"type":39,"tag":183,"props":903,"children":904},{"style":196},[905],{"type":44,"value":608},{"type":39,"tag":183,"props":907,"children":908},{"class":185,"line":214},[909,913,917,921],{"type":39,"tag":183,"props":910,"children":911},{"style":196},[912],{"type":44,"value":698},{"type":39,"tag":183,"props":914,"children":915},{"style":190},[916],{"type":44,"value":703},{"type":39,"tag":183,"props":918,"children":919},{"style":196},[920],{"type":44,"value":199},{"type":39,"tag":183,"props":922,"children":923},{"style":202},[924],{"type":44,"value":925}," API_ENDPOINT\n",{"type":39,"tag":183,"props":927,"children":928},{"class":185,"line":237},[929,934,938,943,948],{"type":39,"tag":183,"props":930,"children":931},{"style":190},[932],{"type":44,"value":933},"    value",{"type":39,"tag":183,"props":935,"children":936},{"style":196},[937],{"type":44,"value":199},{"type":39,"tag":183,"props":939,"children":940},{"style":196},[941],{"type":44,"value":942}," \"",{"type":39,"tag":183,"props":944,"children":945},{"style":202},[946],{"type":44,"value":947},"{{server-name.endpoint}}",{"type":39,"tag":183,"props":949,"children":950},{"style":196},[951],{"type":44,"value":952},"\"\n",{"type":39,"tag":54,"props":954,"children":955},{},[956],{"type":44,"value":957},"Environment variables should only ever be used for:",{"type":39,"tag":959,"props":960,"children":961},"ol",{},[962,974,979],{"type":39,"tag":78,"props":963,"children":964},{},[965,967,972],{"type":44,"value":966},"Config values that are setup in the ",{"type":39,"tag":60,"props":968,"children":970},{"className":969},[],[971],{"type":44,"value":416},{"type":44,"value":973}," at the top level.",{"type":39,"tag":78,"props":975,"children":976},{},[977],{"type":44,"value":978},"Hard-coded environment variables that the server requires.",{"type":39,"tag":78,"props":980,"children":981},{},[982],{"type":44,"value":983},"Secrets should never be added here, as they are injected automatically as environment variables.",{"type":39,"tag":54,"props":985,"children":986},{},[987,989,994],{"type":44,"value":988},"For arrays, nested objects, conditional requirements (anyOf\u002FoneOf), see ",{"type":39,"tag":60,"props":990,"children":992},{"className":991},[],[993],{"type":44,"value":157},{"type":44,"value":995},".",{"type":39,"tag":47,"props":997,"children":999},{"id":998},"secrets-and-authentication",[1000],{"type":44,"value":1001},"Secrets and Authentication",{"type":39,"tag":54,"props":1003,"children":1004},{},[1005,1007,1012],{"type":44,"value":1006},"Always use the ",{"type":39,"tag":60,"props":1008,"children":1010},{"className":1009},[],[1011],{"type":44,"value":405},{"type":44,"value":1013}," field for sensitive values:",{"type":39,"tag":172,"props":1015,"children":1017},{"className":174,"code":1016,"language":176,"meta":177,"style":177},"secrets:\n  - name: server-name.api_key\n    env: API_KEY\n    example: YOUR_API_KEY\n",[1018],{"type":39,"tag":60,"props":1019,"children":1020},{"__ignoreMap":177},[1021,1032,1052,1069],{"type":39,"tag":183,"props":1022,"children":1023},{"class":185,"line":186},[1024,1028],{"type":39,"tag":183,"props":1025,"children":1026},{"style":190},[1027],{"type":44,"value":405},{"type":39,"tag":183,"props":1029,"children":1030},{"style":196},[1031],{"type":44,"value":608},{"type":39,"tag":183,"props":1033,"children":1034},{"class":185,"line":214},[1035,1039,1043,1047],{"type":39,"tag":183,"props":1036,"children":1037},{"style":196},[1038],{"type":44,"value":698},{"type":39,"tag":183,"props":1040,"children":1041},{"style":190},[1042],{"type":44,"value":703},{"type":39,"tag":183,"props":1044,"children":1045},{"style":196},[1046],{"type":44,"value":199},{"type":39,"tag":183,"props":1048,"children":1049},{"style":202},[1050],{"type":44,"value":1051}," server-name.api_key\n",{"type":39,"tag":183,"props":1053,"children":1054},{"class":185,"line":237},[1055,1060,1064],{"type":39,"tag":183,"props":1056,"children":1057},{"style":190},[1058],{"type":44,"value":1059},"    env",{"type":39,"tag":183,"props":1061,"children":1062},{"style":196},[1063],{"type":44,"value":199},{"type":39,"tag":183,"props":1065,"children":1066},{"style":202},[1067],{"type":44,"value":1068}," API_KEY\n",{"type":39,"tag":183,"props":1070,"children":1071},{"class":185,"line":255},[1072,1077,1081],{"type":39,"tag":183,"props":1073,"children":1074},{"style":190},[1075],{"type":44,"value":1076},"    example",{"type":39,"tag":183,"props":1078,"children":1079},{"style":196},[1080],{"type":44,"value":199},{"type":39,"tag":183,"props":1082,"children":1083},{"style":202},[1084],{"type":44,"value":1085}," YOUR_API_KEY\n",{"type":39,"tag":54,"props":1087,"children":1088},{},[1089,1091,1096],{"type":44,"value":1090},"Secrets are automatically injected as environment variables. NEVER put a secret in the ",{"type":39,"tag":60,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":44,"value":427},{"type":44,"value":1097}," field of the server yaml.",{"type":39,"tag":54,"props":1099,"children":1100},{},[1101,1103,1108],{"type":44,"value":1102},"For OAuth configuration, see ",{"type":39,"tag":60,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":44,"value":157},{"type":44,"value":995},{"type":39,"tag":47,"props":1110,"children":1112},{"id":1111},"network-security",[1113],{"type":44,"value":1114},"Network Security",{"type":39,"tag":54,"props":1116,"children":1117},{},[1118],{"type":39,"tag":82,"props":1119,"children":1120},{},[1121],{"type":44,"value":1122},"Option 1: Restrict to specific hosts",{"type":39,"tag":172,"props":1124,"children":1126},{"className":174,"code":1125,"language":176,"meta":177,"style":177},"allowHosts:\n  - api.example.com:443\n  - github.com:443\n",[1127],{"type":39,"tag":60,"props":1128,"children":1129},{"__ignoreMap":177},[1130,1141,1153],{"type":39,"tag":183,"props":1131,"children":1132},{"class":185,"line":186},[1133,1137],{"type":39,"tag":183,"props":1134,"children":1135},{"style":190},[1136],{"type":44,"value":446},{"type":39,"tag":183,"props":1138,"children":1139},{"style":196},[1140],{"type":44,"value":608},{"type":39,"tag":183,"props":1142,"children":1143},{"class":185,"line":214},[1144,1148],{"type":39,"tag":183,"props":1145,"children":1146},{"style":196},[1147],{"type":44,"value":698},{"type":39,"tag":183,"props":1149,"children":1150},{"style":202},[1151],{"type":44,"value":1152}," api.example.com:443\n",{"type":39,"tag":183,"props":1154,"children":1155},{"class":185,"line":237},[1156,1160],{"type":39,"tag":183,"props":1157,"children":1158},{"style":196},[1159],{"type":44,"value":698},{"type":39,"tag":183,"props":1161,"children":1162},{"style":202},[1163],{"type":44,"value":1164}," github.com:443\n",{"type":39,"tag":54,"props":1166,"children":1167},{},[1168],{"type":39,"tag":82,"props":1169,"children":1170},{},[1171],{"type":44,"value":1172},"Option 2: Disable all network",{"type":39,"tag":172,"props":1174,"children":1176},{"className":174,"code":1175,"language":176,"meta":177,"style":177},"disableNetwork: true\n",[1177],{"type":39,"tag":60,"props":1178,"children":1179},{"__ignoreMap":177},[1180],{"type":39,"tag":183,"props":1181,"children":1182},{"class":185,"line":186},[1183,1188,1192],{"type":39,"tag":183,"props":1184,"children":1185},{"style":190},[1186],{"type":44,"value":1187},"disableNetwork",{"type":39,"tag":183,"props":1189,"children":1190},{"style":196},[1191],{"type":44,"value":199},{"type":39,"tag":183,"props":1193,"children":1195},{"style":1194},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1196],{"type":44,"value":1197}," true\n",{"type":39,"tag":47,"props":1199,"children":1201},{"id":1200},"usage",[1202],{"type":44,"value":1203},"Usage",{"type":39,"tag":54,"props":1205,"children":1206},{},[1207],{"type":44,"value":1208},"After creating server.yaml, add it to a profile or catalog:",{"type":39,"tag":172,"props":1210,"children":1214},{"className":1211,"code":1212,"language":1213,"meta":177,"style":177},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Add to a profile\ndocker mcp profile server add \u003Cprofile-id> --server file:\u002F\u002F.\u002Fserver.yaml\n\n# Create catalog with the server\ndocker mcp catalog-next create \u003Ccatalog-id> --title \"My Catalog\" --server file:\u002F\u002F.\u002Fserver.yaml\n","bash",[1215],{"type":39,"tag":60,"props":1216,"children":1217},{"__ignoreMap":177},[1218,1226,1284,1293,1301],{"type":39,"tag":183,"props":1219,"children":1220},{"class":185,"line":186},[1221],{"type":39,"tag":183,"props":1222,"children":1223},{"style":208},[1224],{"type":44,"value":1225},"# Add to a profile\n",{"type":39,"tag":183,"props":1227,"children":1228},{"class":185,"line":214},[1229,1234,1239,1244,1248,1253,1258,1263,1269,1274,1279],{"type":39,"tag":183,"props":1230,"children":1232},{"style":1231},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1233],{"type":44,"value":8},{"type":39,"tag":183,"props":1235,"children":1236},{"style":202},[1237],{"type":44,"value":1238}," mcp",{"type":39,"tag":183,"props":1240,"children":1241},{"style":202},[1242],{"type":44,"value":1243}," profile",{"type":39,"tag":183,"props":1245,"children":1246},{"style":202},[1247],{"type":44,"value":229},{"type":39,"tag":183,"props":1249,"children":1250},{"style":202},[1251],{"type":44,"value":1252}," add",{"type":39,"tag":183,"props":1254,"children":1255},{"style":196},[1256],{"type":44,"value":1257}," \u003C",{"type":39,"tag":183,"props":1259,"children":1260},{"style":202},[1261],{"type":44,"value":1262},"profile-i",{"type":39,"tag":183,"props":1264,"children":1266},{"style":1265},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1267],{"type":44,"value":1268},"d",{"type":39,"tag":183,"props":1270,"children":1271},{"style":196},[1272],{"type":44,"value":1273},">",{"type":39,"tag":183,"props":1275,"children":1276},{"style":202},[1277],{"type":44,"value":1278}," --server",{"type":39,"tag":183,"props":1280,"children":1281},{"style":202},[1282],{"type":44,"value":1283}," file:\u002F\u002F.\u002Fserver.yaml\n",{"type":39,"tag":183,"props":1285,"children":1286},{"class":185,"line":237},[1287],{"type":39,"tag":183,"props":1288,"children":1290},{"emptyLinePlaceholder":1289},true,[1291],{"type":44,"value":1292},"\n",{"type":39,"tag":183,"props":1294,"children":1295},{"class":185,"line":255},[1296],{"type":39,"tag":183,"props":1297,"children":1298},{"style":208},[1299],{"type":44,"value":1300},"# Create catalog with the server\n",{"type":39,"tag":183,"props":1302,"children":1303},{"class":185,"line":371},[1304,1308,1312,1317,1322,1326,1331,1335,1339,1344,1348,1353,1358,1362],{"type":39,"tag":183,"props":1305,"children":1306},{"style":1231},[1307],{"type":44,"value":8},{"type":39,"tag":183,"props":1309,"children":1310},{"style":202},[1311],{"type":44,"value":1238},{"type":39,"tag":183,"props":1313,"children":1314},{"style":202},[1315],{"type":44,"value":1316}," catalog-next",{"type":39,"tag":183,"props":1318,"children":1319},{"style":202},[1320],{"type":44,"value":1321}," create",{"type":39,"tag":183,"props":1323,"children":1324},{"style":196},[1325],{"type":44,"value":1257},{"type":39,"tag":183,"props":1327,"children":1328},{"style":202},[1329],{"type":44,"value":1330},"catalog-i",{"type":39,"tag":183,"props":1332,"children":1333},{"style":1265},[1334],{"type":44,"value":1268},{"type":39,"tag":183,"props":1336,"children":1337},{"style":196},[1338],{"type":44,"value":1273},{"type":39,"tag":183,"props":1340,"children":1341},{"style":202},[1342],{"type":44,"value":1343}," --title",{"type":39,"tag":183,"props":1345,"children":1346},{"style":196},[1347],{"type":44,"value":942},{"type":39,"tag":183,"props":1349,"children":1350},{"style":202},[1351],{"type":44,"value":1352},"My Catalog",{"type":39,"tag":183,"props":1354,"children":1355},{"style":196},[1356],{"type":44,"value":1357},"\"",{"type":39,"tag":183,"props":1359,"children":1360},{"style":202},[1361],{"type":44,"value":1278},{"type":39,"tag":183,"props":1363,"children":1364},{"style":202},[1365],{"type":44,"value":1283},{"type":39,"tag":54,"props":1367,"children":1368},{},[1369],{"type":44,"value":1370},"Be sure to ask the user what they would like to do. The recommended approach would be to create a new catalog and add it to a new catalog.",{"type":39,"tag":54,"props":1372,"children":1373},{},[1374,1376,1382,1384],{"type":44,"value":1375},"If you need to understand more about what ",{"type":39,"tag":60,"props":1377,"children":1379},{"className":1378},[],[1380],{"type":44,"value":1381},"docker mcp",{"type":44,"value":1383}," commands are available, check out the docs at ",{"type":39,"tag":1385,"props":1386,"children":1390},"a",{"href":1387,"rel":1388},"https:\u002F\u002Fraw.githubusercontent.com\u002Fdocker\u002Fmcp-gateway\u002Frefs\u002Fheads\u002Fmain\u002Fdocs\u002Fprofiles.md",[1389],"nofollow",[1391],{"type":44,"value":1387},{"type":39,"tag":47,"props":1393,"children":1395},{"id":1394},"best-practices",[1396],{"type":44,"value":1397},"Best Practices",{"type":39,"tag":959,"props":1399,"children":1400},{},[1401,1412,1417,1434,1446,1451,1456,1461,1466,1484,1489],{"type":39,"tag":78,"props":1402,"children":1403},{},[1404,1406],{"type":44,"value":1405},"Use lowercase-hyphenated naming: ",{"type":39,"tag":60,"props":1407,"children":1409},{"className":1408},[],[1410],{"type":44,"value":1411},"my-custom-server",{"type":39,"tag":78,"props":1413,"children":1414},{},[1415],{"type":44,"value":1416},"Keep server descriptions short and concise (1-2 sentences maximum)",{"type":39,"tag":78,"props":1418,"children":1419},{},[1420,1422,1427,1429],{"type":44,"value":1421},"Always use ",{"type":39,"tag":60,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":44,"value":405},{"type":44,"value":1428}," field for API keys\u002Ftokens, never hardcode in ",{"type":39,"tag":60,"props":1430,"children":1432},{"className":1431},[],[1433],{"type":44,"value":427},{"type":39,"tag":78,"props":1435,"children":1436},{},[1437,1439,1444],{"type":44,"value":1438},"Use ",{"type":39,"tag":60,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":44,"value":446},{"type":44,"value":1445}," to restrict network access",{"type":39,"tag":78,"props":1447,"children":1448},{},[1449],{"type":44,"value":1450},"Provide clear descriptions for all config properties",{"type":39,"tag":78,"props":1452,"children":1453},{},[1454],{"type":44,"value":1455},"Consider if any environment variables should be hard-coded rather than user-defined.",{"type":39,"tag":78,"props":1457,"children":1458},{},[1459],{"type":44,"value":1460},"Use SHA256 digests for production images, tags for development",{"type":39,"tag":78,"props":1462,"children":1463},{},[1464],{"type":44,"value":1465},"Mark config fields as required when necessary",{"type":39,"tag":78,"props":1467,"children":1468},{},[1469,1471,1476,1478,1483],{"type":44,"value":1470},"Omit fields that are empty (e.g. ",{"type":39,"tag":60,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":44,"value":427},{"type":44,"value":1477},", ",{"type":39,"tag":60,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":44,"value":405},{"type":44,"value":437},{"type":39,"tag":78,"props":1485,"children":1486},{},[1487],{"type":44,"value":1488},"Test the server.yaml by adding it to a profile and running the gateway",{"type":39,"tag":78,"props":1490,"children":1491},{},[1492,1494,1499],{"type":44,"value":1493},"ONLY use or show ",{"type":39,"tag":60,"props":1495,"children":1497},{"className":1496},[],[1498],{"type":44,"value":1381},{"type":44,"value":1500}," commands that you've been told about. Don't make up commands.",{"type":39,"tag":47,"props":1502,"children":1504},{"id":1503},"resources",[1505],{"type":44,"value":1506},"Resources",{"type":39,"tag":74,"props":1508,"children":1509},{},[1510,1520],{"type":39,"tag":78,"props":1511,"children":1512},{},[1513,1518],{"type":39,"tag":82,"props":1514,"children":1515},{},[1516],{"type":44,"value":1517},"assets\u002F",{"type":44,"value":1519},": Template examples for each server type (server, remote)",{"type":39,"tag":78,"props":1521,"children":1522},{},[1523,1527],{"type":39,"tag":82,"props":1524,"children":1525},{},[1526],{"type":44,"value":157},{"type":44,"value":1528},": Complete technical specification with advanced patterns",{"type":39,"tag":1530,"props":1531,"children":1532},"style",{},[1533],{"type":44,"value":1534},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1536,"total":186},[1537],{"slug":4,"name":4,"fn":5,"description":6,"org":1538,"tags":1539,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1540,1541,1542,1543],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"items":1545,"total":237},[1546,1562,1584],{"slug":1547,"name":1547,"fn":1548,"description":1549,"org":1550,"tags":1551,"stars":1559,"repoUrl":1560,"updatedAt":1561},"docker-model-runner","run local LLM inference with Docker","Skills for using Docker Model Runner to run local LLM inference",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1552,1553,1556],{"name":9,"slug":8,"type":15},{"name":1554,"slug":1555,"type":15},"LLM","llm",{"name":1557,"slug":1558,"type":15},"Machine Learning","machine-learning",605,"https:\u002F\u002Fgithub.com\u002Fdocker\u002Fmodel-runner","2026-07-12T08:15:13.251096",{"slug":1563,"name":1563,"fn":1564,"description":1565,"org":1566,"tags":1567,"stars":1581,"repoUrl":1582,"updatedAt":1583},"kit-author","author Docker sandbox kits","Author Docker Sandboxes kits (agents and mixins) — spec.yaml schema, full lifecycle from sourcing through composition, injection, and runtime, plus distribution and TCK testing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1568,1571,1572,1575,1578],{"name":1569,"slug":1570,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},{"name":1573,"slug":1574,"type":15},"Engineering","engineering",{"name":1576,"slug":1577,"type":15},"Sandboxing","sandboxing",{"name":1579,"slug":1580,"type":15},"Testing","testing",67,"https:\u002F\u002Fgithub.com\u002Fdocker\u002Fsbx-kits-contrib","2026-07-19T05:39:37.670879",{"slug":4,"name":4,"fn":5,"description":6,"org":1585,"tags":1586,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1587,1588,1589,1590],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15}]