Files
docs/services/mcp-servers/index.html
T

4604 lines
93 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Single source of truth for the homelab">
<link rel="canonical" href="http://192.168.1.8:13080/services/mcp-servers/">
<link rel="prev" href="../mcp-gateway/">
<link rel="next" href="../pocket-id/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
<title>MCP servers - nuclide.systems docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="blue">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#mcp-servers-nuclidesystems" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="nuclide.systems docs" class="md-header__button md-logo" aria-label="nuclide.systems docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
nuclide.systems docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
MCP servers
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="blue" aria-hidden="true" type="radio" name="__palette" id="__palette_0">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="blue" aria-hidden="true" type="radio" name="__palette" id="__palette_1">
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../CHANGELOG/" class="md-tabs__link">
Changelog
</a>
</li>
<li class="md-tabs__item">
<a href="../../RESUME/" class="md-tabs__link">
Resume
</a>
</li>
<li class="md-tabs__item">
<a href="../../ct-inventory/" class="md-tabs__link">
CT inventory
</a>
</li>
<li class="md-tabs__item">
<a href="../../infra/proxmox-state/" class="md-tabs__link">
Infra
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../homelab-architecture/" class="md-tabs__link">
Services
</a>
</li>
<li class="md-tabs__item">
<a href="../../security/data-leak-audit-comparison/" class="md-tabs__link">
Security & audits
</a>
</li>
<li class="md-tabs__item">
<a href="../../ideas/stack-ideas/" class="md-tabs__link">
Ideas
</a>
</li>
<li class="md-tabs__item">
<a href="../../history/traefik-migration/" class="md-tabs__link">
History
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="nuclide.systems docs" class="md-nav__button md-logo" aria-label="nuclide.systems docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
nuclide.systems docs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../CHANGELOG/" class="md-nav__link">
<span class="md-ellipsis">
Changelog
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../RESUME/" class="md-nav__link">
<span class="md-ellipsis">
Resume
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../ct-inventory/" class="md-nav__link">
<span class="md-ellipsis">
CT inventory
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Infra
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Infra
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../infra/proxmox-state/" class="md-nav__link">
<span class="md-ellipsis">
Proxmox state
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../infra/portmap/" class="md-nav__link">
<span class="md-ellipsis">
Port map
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../infra/storage/" class="md-nav__link">
<span class="md-ellipsis">
Storage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../infra/volumes/" class="md-nav__link">
<span class="md-ellipsis">
Volumes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../infra/docker-networks/" class="md-nav__link">
<span class="md-ellipsis">
Docker networks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../infra/connection-hosts/" class="md-nav__link">
<span class="md-ellipsis">
Connection hosts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../infra/proxmox-memory-audit/" class="md-nav__link">
<span class="md-ellipsis">
Memory audit
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" checked>
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="">
<span class="md-ellipsis">
Services
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Services
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../homelab-architecture/" class="md-nav__link">
<span class="md-ellipsis">
Homelab architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dev-environment/" class="md-nav__link">
<span class="md-ellipsis">
Dev environment (Coder + Gitea)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../mcp-gateway/" class="md-nav__link">
<span class="md-ellipsis">
MCP gateway
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
MCP servers
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
MCP servers
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#group-dev" class="md-nav__link">
<span class="md-ellipsis">
Group: dev
</span>
</a>
<nav class="md-nav" aria-label="Group: dev">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#context7-library-documentation" class="md-nav__link">
<span class="md-ellipsis">
context7 — Library documentation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#fetch-http-fetch" class="md-nav__link">
<span class="md-ellipsis">
fetch — HTTP fetch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#git-git-operations" class="md-nav__link">
<span class="md-ellipsis">
git — Git operations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gitlab-gitlab-dlr" class="md-nav__link">
<span class="md-ellipsis">
gitlab — GitLab (DLR)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kroki-diagram-rendering" class="md-nav__link">
<span class="md-ellipsis">
kroki — Diagram rendering
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#markitdown-markdown-conversion" class="md-nav__link">
<span class="md-ellipsis">
markitdown — Markdown conversion
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#sequential-thinking-chain-of-thought-reasoning" class="md-nav__link">
<span class="md-ellipsis">
sequential-thinking — Chain-of-thought reasoning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#time-time-timezone" class="md-nav__link">
<span class="md-ellipsis">
time — Time &amp; timezone
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docling-pdf-markdown-saia" class="md-nav__link">
<span class="md-ellipsis">
docling — PDF → Markdown (SAIA)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#coder-coder-workspace-management" class="md-nav__link">
<span class="md-ellipsis">
coder — Coder workspace management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gitea-gitea-gitnuclidesystems" class="md-nav__link">
<span class="md-ellipsis">
gitea — Gitea (git.nuclide.systems)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#proxmox-proxmox-ve-192168120" class="md-nav__link">
<span class="md-ellipsis">
proxmox — Proxmox VE (192.168.1.20)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#shepard-shepard-product-platform" class="md-nav__link">
<span class="md-ellipsis">
shepard — Shepard product platform
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#group-research" class="md-nav__link">
<span class="md-ellipsis">
Group: research
</span>
</a>
<nav class="md-nav" aria-label="Group: research">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#crawl4ai-web-crawling-scraping" class="md-nav__link">
<span class="md-ellipsis">
crawl4ai — Web crawling / scraping
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#paper-search-academic-paper-search" class="md-nav__link">
<span class="md-ellipsis">
paper-search — Academic paper search
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#searxng-web-search-self-hosted" class="md-nav__link">
<span class="md-ellipsis">
searxng — Web search (self-hosted)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#wikipedia-mcp-wikipedia-search" class="md-nav__link">
<span class="md-ellipsis">
wikipedia-mcp — Wikipedia search
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#youtube-transcript-youtube-transcripts" class="md-nav__link">
<span class="md-ellipsis">
youtube-transcript — YouTube transcripts
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#group-personal" class="md-nav__link">
<span class="md-ellipsis">
Group: personal
</span>
</a>
<nav class="md-nav" aria-label="Group: personal">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#bluesky-bluesky-at-protocol" class="md-nav__link">
<span class="md-ellipsis">
bluesky — Bluesky / AT Protocol
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#obsidian-obsidian-vault-nextcloud-backed" class="md-nav__link">
<span class="md-ellipsis">
obsidian — Obsidian vault (Nextcloud-backed)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gotify-push-notifications" class="md-nav__link">
<span class="md-ellipsis">
gotify — Push notifications
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#home-assistant-home-assistant" class="md-nav__link">
<span class="md-ellipsis">
home-assistant — Home Assistant
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#immich-immich-photo-library" class="md-nav__link">
<span class="md-ellipsis">
immich — Immich photo library
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#memos-memos-notes" class="md-nav__link">
<span class="md-ellipsis">
memos — Memos notes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#n8n-n8n-workflow-automation" class="md-nav__link">
<span class="md-ellipsis">
n8n — n8n workflow automation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#nextcloud-nextcloud-files-calendar" class="md-nav__link">
<span class="md-ellipsis">
nextcloud — Nextcloud files &amp; calendar
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#paperless-paperless-ngx" class="md-nav__link">
<span class="md-ellipsis">
paperless — Paperless-NGX
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#unifi-unifi-network" class="md-nav__link">
<span class="md-ellipsis">
unifi — UniFi Network
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#group-image" class="md-nav__link">
<span class="md-ellipsis">
Group: image
</span>
</a>
<nav class="md-nav" aria-label="Group: image">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#comfyui-comfyui-image-generation" class="md-nav__link">
<span class="md-ellipsis">
comfyui — ComfyUI image generation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#group-storage" class="md-nav__link">
<span class="md-ellipsis">
Group: storage
</span>
</a>
<nav class="md-nav" aria-label="Group: storage">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#upload-artifact-s3-artifact-upload" class="md-nav__link">
<span class="md-ellipsis">
upload-artifact — S3 artifact upload
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#client-configuration" class="md-nav__link">
<span class="md-ellipsis">
Client configuration
</span>
</a>
<nav class="md-nav" aria-label="Client configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#auto-recommended" class="md-nav__link">
<span class="md-ellipsis">
Auto (recommended)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#manual-claude-code" class="md-nav__link">
<span class="md-ellipsis">
Manual (Claude Code)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#gateway-management-api" class="md-nav__link">
<span class="md-ellipsis">
Gateway management API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-credentials-in-gateway-env" class="md-nav__link">
<span class="md-ellipsis">
Other credentials in gateway .env
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../pocket-id/" class="md-nav__link">
<span class="md-ellipsis">
Pocket-ID (OIDC)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../backrest/" class="md-nav__link">
<span class="md-ellipsis">
Backrest (backups)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../databases/" class="md-nav__link">
<span class="md-ellipsis">
Databases
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../secrets-manager/" class="md-nav__link">
<span class="md-ellipsis">
Secrets manager
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../comfyui/" class="md-nav__link">
<span class="md-ellipsis">
ComfyUI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../zoraxy/" class="md-nav__link">
<span class="md-ellipsis">
Zoraxy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../adguard-dns/" class="md-nav__link">
<span class="md-ellipsis">
AdGuard DNS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cloud-gpu/" class="md-nav__link">
<span class="md-ellipsis">
Cloud GPU
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../arcane/" class="md-nav__link">
<span class="md-ellipsis">
Arcane
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../doc-ingestion/" class="md-nav__link">
<span class="md-ellipsis">
Doc ingestion pipeline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../llm-benchmark/" class="md-nav__link">
<span class="md-ellipsis">
LLM benchmark
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Security & audits
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Security & audits
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../security/data-leak-audit-comparison/" class="md-nav__link">
<span class="md-ellipsis">
Comparison
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/data-leak-audit-2026-05-20-tr004-cloud-sandbox/" class="md-nav__link">
<span class="md-ellipsis">
2026-05-20 · cloud-sandbox breach
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/data-leak-audit-2026-05-21-tr004-artifacts/" class="md-nav__link">
<span class="md-ellipsis">
2026-05-21 · artifacts (clean)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/audit-claude-code-meta/" class="md-nav__link">
<span class="md-ellipsis">
Self-audit (Claude Code)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/transcripts/audit-chat-2026-05-21/" class="md-nav__link">
<span class="md-ellipsis">
Transcript (audit session)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Ideas
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Ideas
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../ideas/stack-ideas/" class="md-nav__link">
<span class="md-ellipsis">
Stack ideas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
<span class="md-ellipsis">
History
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
History
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../history/traefik-migration/" class="md-nav__link">
<span class="md-ellipsis">
Traefik (abandoned 2026-05-16)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../history/traefik-migration-docker-labels/" class="md-nav__link">
<span class="md-ellipsis">
Traefik labels (abandoned)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../history/mcp-gateway-requirements/" class="md-nav__link">
<span class="md-ellipsis">
MCP gateway requirements (superseded)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../history/scrubbing-list-2026-05-17/" class="md-nav__link">
<span class="md-ellipsis">
Scrubbing list (2026-05-17)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../history/case-study/" class="md-nav__link">
<span class="md-ellipsis">
Case study
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#group-dev" class="md-nav__link">
<span class="md-ellipsis">
Group: dev
</span>
</a>
<nav class="md-nav" aria-label="Group: dev">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#context7-library-documentation" class="md-nav__link">
<span class="md-ellipsis">
context7 — Library documentation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#fetch-http-fetch" class="md-nav__link">
<span class="md-ellipsis">
fetch — HTTP fetch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#git-git-operations" class="md-nav__link">
<span class="md-ellipsis">
git — Git operations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gitlab-gitlab-dlr" class="md-nav__link">
<span class="md-ellipsis">
gitlab — GitLab (DLR)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kroki-diagram-rendering" class="md-nav__link">
<span class="md-ellipsis">
kroki — Diagram rendering
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#markitdown-markdown-conversion" class="md-nav__link">
<span class="md-ellipsis">
markitdown — Markdown conversion
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#sequential-thinking-chain-of-thought-reasoning" class="md-nav__link">
<span class="md-ellipsis">
sequential-thinking — Chain-of-thought reasoning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#time-time-timezone" class="md-nav__link">
<span class="md-ellipsis">
time — Time &amp; timezone
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docling-pdf-markdown-saia" class="md-nav__link">
<span class="md-ellipsis">
docling — PDF → Markdown (SAIA)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#coder-coder-workspace-management" class="md-nav__link">
<span class="md-ellipsis">
coder — Coder workspace management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gitea-gitea-gitnuclidesystems" class="md-nav__link">
<span class="md-ellipsis">
gitea — Gitea (git.nuclide.systems)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#proxmox-proxmox-ve-192168120" class="md-nav__link">
<span class="md-ellipsis">
proxmox — Proxmox VE (192.168.1.20)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#shepard-shepard-product-platform" class="md-nav__link">
<span class="md-ellipsis">
shepard — Shepard product platform
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#group-research" class="md-nav__link">
<span class="md-ellipsis">
Group: research
</span>
</a>
<nav class="md-nav" aria-label="Group: research">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#crawl4ai-web-crawling-scraping" class="md-nav__link">
<span class="md-ellipsis">
crawl4ai — Web crawling / scraping
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#paper-search-academic-paper-search" class="md-nav__link">
<span class="md-ellipsis">
paper-search — Academic paper search
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#searxng-web-search-self-hosted" class="md-nav__link">
<span class="md-ellipsis">
searxng — Web search (self-hosted)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#wikipedia-mcp-wikipedia-search" class="md-nav__link">
<span class="md-ellipsis">
wikipedia-mcp — Wikipedia search
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#youtube-transcript-youtube-transcripts" class="md-nav__link">
<span class="md-ellipsis">
youtube-transcript — YouTube transcripts
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#group-personal" class="md-nav__link">
<span class="md-ellipsis">
Group: personal
</span>
</a>
<nav class="md-nav" aria-label="Group: personal">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#bluesky-bluesky-at-protocol" class="md-nav__link">
<span class="md-ellipsis">
bluesky — Bluesky / AT Protocol
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#obsidian-obsidian-vault-nextcloud-backed" class="md-nav__link">
<span class="md-ellipsis">
obsidian — Obsidian vault (Nextcloud-backed)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gotify-push-notifications" class="md-nav__link">
<span class="md-ellipsis">
gotify — Push notifications
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#home-assistant-home-assistant" class="md-nav__link">
<span class="md-ellipsis">
home-assistant — Home Assistant
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#immich-immich-photo-library" class="md-nav__link">
<span class="md-ellipsis">
immich — Immich photo library
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#memos-memos-notes" class="md-nav__link">
<span class="md-ellipsis">
memos — Memos notes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#n8n-n8n-workflow-automation" class="md-nav__link">
<span class="md-ellipsis">
n8n — n8n workflow automation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#nextcloud-nextcloud-files-calendar" class="md-nav__link">
<span class="md-ellipsis">
nextcloud — Nextcloud files &amp; calendar
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#paperless-paperless-ngx" class="md-nav__link">
<span class="md-ellipsis">
paperless — Paperless-NGX
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#unifi-unifi-network" class="md-nav__link">
<span class="md-ellipsis">
unifi — UniFi Network
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#group-image" class="md-nav__link">
<span class="md-ellipsis">
Group: image
</span>
</a>
<nav class="md-nav" aria-label="Group: image">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#comfyui-comfyui-image-generation" class="md-nav__link">
<span class="md-ellipsis">
comfyui — ComfyUI image generation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#group-storage" class="md-nav__link">
<span class="md-ellipsis">
Group: storage
</span>
</a>
<nav class="md-nav" aria-label="Group: storage">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#upload-artifact-s3-artifact-upload" class="md-nav__link">
<span class="md-ellipsis">
upload-artifact — S3 artifact upload
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#client-configuration" class="md-nav__link">
<span class="md-ellipsis">
Client configuration
</span>
</a>
<nav class="md-nav" aria-label="Client configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#auto-recommended" class="md-nav__link">
<span class="md-ellipsis">
Auto (recommended)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#manual-claude-code" class="md-nav__link">
<span class="md-ellipsis">
Manual (Claude Code)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#gateway-management-api" class="md-nav__link">
<span class="md-ellipsis">
Gateway management API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-credentials-in-gateway-env" class="md-nav__link">
<span class="md-ellipsis">
Other credentials in gateway .env
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="mcp-servers-nuclidesystems">MCP Servers — nuclide.systems<a class="headerlink" href="#mcp-servers-nuclidesystems" title="Permanent link">&para;</a></h1>
<p>Complete reference for all 30 MCP servers. MCP is now served by <strong>Bifrost</strong> at <code>https://ai.nuclide.systems/mcp</code>.
<strong>Last verified: 2026-05-23. Gateway migrated to Bifrost: 2026-05-26.</strong></p>
<blockquote>
<p>The old mcp-gateway (FastAPI/DinD, <code>mcp.nuclide.systems</code>) was <strong>decommissioned 2026-05-26</strong> — compose renamed <code>.DECOMMISSIONED-2026-05-26</code>. Config file was at <code>/opt/stacks/ai/mcp-gateway/config.json</code> on CT 104 · Secrets: <code>/opt/stacks/ai/.env</code></p>
</blockquote>
<hr />
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>#</th>
<th>Server</th>
<th>Group</th>
<th>Kind</th>
<th>Gateway URL</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><code>context7</code></td>
<td>dev</td>
<td>catalog</td>
<td><code>https://ai.nuclide.systems/mcp/context7/mcp</code></td>
<td></td>
</tr>
<tr>
<td>2</td>
<td><code>fetch</code></td>
<td>dev</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/fetch/mcp</code></td>
<td></td>
</tr>
<tr>
<td>3</td>
<td><code>git</code></td>
<td>dev</td>
<td>catalog</td>
<td><code>https://ai.nuclide.systems/mcp/git/mcp</code></td>
<td></td>
</tr>
<tr>
<td>4</td>
<td><code>gitlab</code></td>
<td>dev</td>
<td>catalog</td>
<td><code>https://ai.nuclide.systems/mcp/gitlab/mcp</code></td>
<td></td>
</tr>
<tr>
<td>5</td>
<td><code>kroki</code></td>
<td>dev</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/kroki/mcp</code></td>
<td></td>
</tr>
<tr>
<td>6</td>
<td><code>markitdown</code></td>
<td>dev</td>
<td>catalog</td>
<td><code>https://ai.nuclide.systems/mcp/markitdown/mcp</code></td>
<td></td>
</tr>
<tr>
<td>7</td>
<td><code>sequential-thinking</code></td>
<td>dev</td>
<td>catalog</td>
<td><code>https://ai.nuclide.systems/mcp/sequential-thinking/mcp</code></td>
<td></td>
</tr>
<tr>
<td>8</td>
<td><code>time</code></td>
<td>dev</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/time/mcp</code></td>
<td></td>
</tr>
<tr>
<td>9</td>
<td><code>docling</code></td>
<td>dev</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/docling/mcp</code></td>
<td></td>
</tr>
<tr>
<td>10</td>
<td><code>coder</code></td>
<td>dev</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/coder/mcp</code></td>
<td></td>
</tr>
<tr>
<td>11</td>
<td><code>gitea</code></td>
<td>dev</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/gitea/mcp</code></td>
<td></td>
</tr>
<tr>
<td>12</td>
<td><code>proxmox</code></td>
<td>dev</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/proxmox/mcp</code></td>
<td></td>
</tr>
<tr>
<td>13</td>
<td><code>shepard</code></td>
<td>dev</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/shepard/mcp</code></td>
<td></td>
</tr>
<tr>
<td>14</td>
<td><code>crawl4ai</code></td>
<td>research</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/crawl4ai/mcp</code></td>
<td></td>
</tr>
<tr>
<td>15</td>
<td><code>paper-search</code></td>
<td>research</td>
<td>catalog</td>
<td><code>https://ai.nuclide.systems/mcp/paper-search/mcp</code></td>
<td></td>
</tr>
<tr>
<td>16</td>
<td><code>searxng</code></td>
<td>research</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/searxng/mcp</code></td>
<td></td>
</tr>
<tr>
<td>17</td>
<td><code>wikipedia-mcp</code></td>
<td>research</td>
<td>catalog</td>
<td><code>https://ai.nuclide.systems/mcp/wikipedia-mcp/mcp</code></td>
<td></td>
</tr>
<tr>
<td>18</td>
<td><code>youtube-transcript</code></td>
<td>research</td>
<td>catalog</td>
<td><code>https://ai.nuclide.systems/mcp/youtube-transcript/mcp</code></td>
<td></td>
</tr>
<tr>
<td>19</td>
<td><code>bluesky</code></td>
<td>personal</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/bluesky/mcp</code></td>
<td></td>
</tr>
<tr>
<td>20</td>
<td><code>obsidian</code></td>
<td>personal</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/obsidian/mcp</code></td>
<td></td>
</tr>
<tr>
<td>21</td>
<td><code>gotify</code></td>
<td>personal</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/gotify/mcp</code></td>
<td></td>
</tr>
<tr>
<td>22</td>
<td><code>home-assistant</code></td>
<td>personal</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/home-assistant/mcp</code></td>
<td></td>
</tr>
<tr>
<td>23</td>
<td><code>immich</code></td>
<td>personal</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/immich/mcp</code></td>
<td></td>
</tr>
<tr>
<td>24</td>
<td><code>memos</code></td>
<td>personal</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/memos/mcp</code></td>
<td></td>
</tr>
<tr>
<td>25</td>
<td><code>n8n</code></td>
<td>personal</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/n8n/mcp</code></td>
<td></td>
</tr>
<tr>
<td>26</td>
<td><code>nextcloud</code></td>
<td>personal</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/nextcloud/mcp</code></td>
<td></td>
</tr>
<tr>
<td>27</td>
<td><code>paperless</code></td>
<td>personal</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/paperless/mcp</code></td>
<td></td>
</tr>
<tr>
<td>28</td>
<td><code>unifi</code></td>
<td>personal</td>
<td>spawn</td>
<td><code>https://ai.nuclide.systems/mcp/unifi/mcp</code></td>
<td></td>
</tr>
<tr>
<td>29</td>
<td><code>comfyui</code></td>
<td>image</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/comfyui/mcp</code></td>
<td></td>
</tr>
<tr>
<td>30</td>
<td><code>upload-artifact</code></td>
<td>storage</td>
<td>static</td>
<td><code>https://ai.nuclide.systems/mcp/upload-artifact/mcp</code></td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Auth</strong>: all Bifrost MCP URLs require <code>Authorization: Bearer sk-bf-&lt;key&gt;</code>. MCP endpoint: <code>https://ai.nuclide.systems/mcp</code>.</p>
<hr />
<h2 id="group-dev">Group: <code>dev</code><a class="headerlink" href="#group-dev" title="Permanent link">&para;</a></h2>
<h3 id="context7-library-documentation"><code>context7</code> — Library documentation<a class="headerlink" href="#context7-library-documentation" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>catalog (<code>mcp/context7</code>)</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-context7:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-catalog-bridge</code> → Docker MCP Catalog <code>mcp/context7</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>256 MiB mem limit</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Fetches live documentation for libraries/frameworks. No env vars.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="fetch-http-fetch"><code>fetch</code> — HTTP fetch<a class="headerlink" href="#fetch-http-fetch" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-fetch:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>ghcr.io/astral-sh/uv:python3.12-trixie-slim</code></td>
</tr>
<tr>
<td><strong>Command</strong></td>
<td><code>uvx --with mcp-server-fetch mcp-proxy --stateless --host 0.0.0.0 --port 8000 -- python -m mcp_server_fetch</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>120 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="git-git-operations"><code>git</code> — Git operations<a class="headerlink" href="#git-git-operations" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>catalog (<code>mcp/git</code>)</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-git:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-catalog-bridge</code> → Docker MCP Catalog <code>mcp/git</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>256 MiB mem limit</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>DinD child runs in <code>ai-internal</code> network.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="gitlab-gitlab-dlr"><code>gitlab</code> — GitLab (DLR)<a class="headerlink" href="#gitlab-gitlab-dlr" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>catalog (<code>mcp/gitlab</code>)</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-gitlab:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-catalog-bridge</code> → Docker MCP Catalog <code>mcp/gitlab</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>256 MiB mem limit</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>GITLAB_PERSONAL_ACCESS_TOKEN</code></td>
<td><code>C8OXPT0J_oY-ha6KAzcn0286MQp1OjEyaAk.01.0z0jn01p4</code></td>
</tr>
<tr>
<td><code>GITLAB_API_URL</code></td>
<td><code>https://gitlab.dlr.de/api/v4</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Uses <code>--pass-environment</code> in bridge cmd so Docker CLI resolves <code>-e KEY</code> passthrough. Targets DLR GitLab, not gitlab.com.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="kroki-diagram-rendering"><code>kroki</code> — Diagram rendering<a class="headerlink" href="#kroki-diagram-rendering" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://kroki-mcp:8000</code> (own stack, <code>:18007</code> on host)</td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>every 300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Supports Mermaid, Excalidraw, and all Kroki-supported formats.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="markitdown-markdown-conversion"><code>markitdown</code> — Markdown conversion<a class="headerlink" href="#markitdown-markdown-conversion" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>catalog (<code>mcp/markitdown</code>)</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-markitdown:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-catalog-bridge</code> → Docker MCP Catalog <code>mcp/markitdown</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>256 MiB mem limit</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="sequential-thinking-chain-of-thought-reasoning"><code>sequential-thinking</code> — Chain-of-thought reasoning<a class="headerlink" href="#sequential-thinking-chain-of-thought-reasoning" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>catalog (<code>mcp/sequentialthinking</code>)</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-sequential-thinking:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-catalog-bridge</code> → Docker MCP Catalog <code>mcp/sequentialthinking</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>256 MiB mem limit</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="time-time-timezone"><code>time</code> — Time &amp; timezone<a class="headerlink" href="#time-time-timezone" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-time:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>ghcr.io/astral-sh/uv:python3.12-trixie-slim</code></td>
</tr>
<tr>
<td><strong>Command</strong></td>
<td><code>uvx --with mcp-server-time mcp-proxy --stateless --host 0.0.0.0 --port 8000 -- python -m mcp_server_time --local-timezone Europe/Berlin</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="docling-pdf-markdown-saia"><code>docling</code> — PDF → Markdown (SAIA)<a class="headerlink" href="#docling-pdf-markdown-saia" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://docling-mcp:8000</code> (own stack, <code>:18005</code> on host)</td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>every 300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>SAIA-powered Docling; handles PDF, DOCX, images → Markdown.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="coder-coder-workspace-management"><code>coder</code> — Coder workspace management<a class="headerlink" href="#coder-coder-workspace-management" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://coder-mcp:8000</code> (own stack on <code>ai-internal</code>)</td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>every 300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>Coder token baked into <code>coder-mcp</code> container env (see <code>/opt/stacks/ai/coder-mcp/</code>)</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Replaced daytona 2026-05-20. Can create/start/stop Coder workspaces on CT 111.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="gitea-gitea-gitnuclidesystems"><code>gitea</code> — Gitea (git.nuclide.systems)<a class="headerlink" href="#gitea-gitea-gitnuclidesystems" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://gitea-mcp:8000</code> (own stack <code>/opt/stacks/ai/gitea-mcp.yml</code>)</td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>docker.gitea.com/gitea-mcp-server:latest</code></td>
</tr>
<tr>
<td><strong>Command</strong></td>
<td><code>/app/gitea-mcp -t http --port 8000 --host 0.0.0.0</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP (native)</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>every 300 s</td>
</tr>
<tr>
<td><strong>Tools</strong></td>
<td>53 (repo/issue/PR/file CRUD, releases, users, orgs)</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>GITEA_HOST</code></td>
<td><code>https://git.nuclide.systems</code></td>
</tr>
<tr>
<td><code>GITEA_ACCESS_TOKEN</code></td>
<td><code>${GITEA_TOKEN}</code><code>.env</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Added 2026-05-23. Targets CT 111 Gitea. Read + write access.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="proxmox-proxmox-ve-192168120"><code>proxmox</code> — Proxmox VE (192.168.1.20)<a class="headerlink" href="#proxmox-proxmox-ve-192168120" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-proxmox:8000</code> (own stack <code>/opt/stacks/ai/proxmox-mcp.yml</code>)</td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>ghcr.io/astral-sh/uv:python3.12-trixie-slim</code></td>
</tr>
<tr>
<td><strong>Command</strong></td>
<td><code>uvx proxmox-mcp-plus</code></td>
</tr>
<tr>
<td><strong>Package</strong></td>
<td><code>proxmox-mcp-plus</code> (PyPI)</td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP (<code>MCP_TRANSPORT=STREAMABLE_HTTP</code>)</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>512 MiB mem limit</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>30 s</td>
</tr>
<tr>
<td><strong>Tools</strong></td>
<td>39 (VMs, LXC, nodes, storage, tasks, firewall, HA — read-only)</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>PROXMOX_HOST</code></td>
<td><code>192.168.1.20</code></td>
</tr>
<tr>
<td><code>PROXMOX_PORT</code></td>
<td><code>8006</code></td>
</tr>
<tr>
<td><code>PROXMOX_USER</code></td>
<td><code>root@pam</code></td>
</tr>
<tr>
<td><code>PROXMOX_TOKEN_NAME</code></td>
<td><code>mcp</code></td>
</tr>
<tr>
<td><code>PROXMOX_TOKEN_VALUE</code></td>
<td><code>${PROXMOX_TOKEN_SECRET}</code><code>.env</code></td>
</tr>
<tr>
<td><code>PROXMOX_VERIFY_SSL</code></td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>PROXMOX_DEV_MODE</code></td>
<td><code>true</code> (required to allow self-signed cert with verify_ssl=false)</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Added 2026-05-23. Token <code>root@pam!mcp</code> has <code>PVEAuditor</code> role at <code>/</code> (read-only, privsep). Self-signed TLS on PVE host requires <code>DEV_MODE=true</code>.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="shepard-shepard-product-platform"><code>shepard</code> — Shepard product platform<a class="headerlink" href="#shepard-shepard-product-platform" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static (exact upstream)</td>
</tr>
<tr>
<td><strong>Upstream</strong></td>
<td><code>https://shepard.nuclide.systems/v2/mcp</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>disabled</td>
</tr>
<tr>
<td><strong>Auth header</strong></td>
<td><code>Authorization: Bearer ${SHEPARD_API_KEY}</code></td>
</tr>
<tr>
<td><code>SHEPARD_API_KEY</code></td>
<td><code>eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI3ZWVhZDk0Mi02M2E1LTRjZmMtYWVhOS1iMWQwZjBhMjkxZWEiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvIiwibmJmIjoxNzc5MzcyODQyLCJpYXQiOjE3NzkzNzI4NDIsImp0aSI6ImY5YzAyYjc3LTNkZGYtNGZjZS1hYzJlLTBlYmM5N2FlYjJhZiJ9.Z9LY9vwLm2l0TmORQ2GriCnkLPzZnSC9q2sE62Ab8Gpi_374Gd5MffDkute0xF2ZwbhH3aRSCpEd93HmFDs-1F3IwoFQpBGiLedTL0N3gC_6J-PFv_i54FHFImEiH_h0yJilzrfgR4Prn_hFZMniE080Kf3Ll-uvYnNK-U-AkPjqb8KfP1BA6dt3HjiOjpicdSh2URpzAKxyVwddGeve3Ha9LboPu-dOb8nmiwiW6E75eakNGGR2mwPxITDxVaqxuSipBwBiDIHzfU4iT7T7b8aipvGd1upfGlx7RcbHdGg9gVNR4jH_--5qLb5124MQxZ486dlH6i7w6AMqtdkzGA</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Native MCP endpoint on CT 101 Shepard stack (Keycloak + backend).</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="group-research">Group: <code>research</code><a class="headerlink" href="#group-research" title="Permanent link">&para;</a></h2>
<h3 id="crawl4ai-web-crawling-scraping"><code>crawl4ai</code> — Web crawling / scraping<a class="headerlink" href="#crawl4ai-web-crawling-scraping" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-crawl4ai:11235</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>unclecode/crawl4ai:latest</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>SSE (<code>/sse</code>)</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>2 GiB mem limit; OOM score adj 300</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>120 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="paper-search-academic-paper-search"><code>paper-search</code> — Academic paper search<a class="headerlink" href="#paper-search-academic-paper-search" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>catalog (<code>mcp/paper-search</code>)</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-paper-search:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-catalog-bridge</code> → Docker MCP Catalog <code>mcp/paper-search</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>256 MiB mem limit</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>UNPAYWALL_EMAIL</code></td>
<td><code>fkrebs@nucli.de</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td><code>--pass-environment</code> passthrough. Optional: <code>CORE_API_KEY</code>, <code>DOAJ_API_KEY</code> (not currently set).</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="searxng-web-search-self-hosted"><code>searxng</code> — Web search (self-hosted)<a class="headerlink" href="#searxng-web-search-self-hosted" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-searxng:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>isokoliuk/mcp-searxng:latest</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>SEARXNG_URL</code></td>
<td><code>http://searxng:8080</code> (internal <code>shared_backend</code> network)</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Routes to the self-hosted SearXNG instance. No external API keys needed.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="wikipedia-mcp-wikipedia-search"><code>wikipedia-mcp</code> — Wikipedia search<a class="headerlink" href="#wikipedia-mcp-wikipedia-search" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>catalog (<code>mcp/wikipedia-mcp</code>)</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-wikipedia-mcp:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-catalog-bridge</code> → Docker MCP Catalog <code>mcp/wikipedia-mcp</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>256 MiB mem limit</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="youtube-transcript-youtube-transcripts"><code>youtube-transcript</code> — YouTube transcripts<a class="headerlink" href="#youtube-transcript-youtube-transcripts" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>catalog (<code>mcp/youtube-transcript</code>)</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-youtube-transcript:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-catalog-bridge</code> → Docker MCP Catalog <code>mcp/youtube-transcript</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Resources</strong></td>
<td>256 MiB mem limit</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="group-personal">Group: <code>personal</code><a class="headerlink" href="#group-personal" title="Permanent link">&para;</a></h2>
<h3 id="bluesky-bluesky-at-protocol"><code>bluesky</code> — Bluesky / AT Protocol<a class="headerlink" href="#bluesky-bluesky-at-protocol" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://ariel-mcp:8000</code> (own container on <code>ai-internal</code>)</td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>every 300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong> (baked into <code>ariel-mcp</code> env)</td>
<td></td>
</tr>
<tr>
<td><code>ATPROTO_IDENTIFIER</code></td>
<td><code>nucli.de</code></td>
</tr>
<tr>
<td><code>ATPROTO_PASSWORD</code></td>
<td><code>blxw-datl-l7zo-qwwq</code></td>
</tr>
<tr>
<td><code>BLUESKY_IDENTIFIER</code></td>
<td><code>nucli.de</code></td>
</tr>
<tr>
<td><code>BLUESKY_APP_PASSWORD</code></td>
<td><code>4mrm-go4j-avzg-2yo7</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Uses Brian Ellin's <code>ariel-mcp</code> image. Rate-limit handling pending.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="obsidian-obsidian-vault-nextcloud-backed"><code>obsidian</code> — Obsidian vault (Nextcloud-backed)<a class="headerlink" href="#obsidian-obsidian-vault-nextcloud-backed" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>mcp-obsidian-bridge</code> + mcpvault</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-obsidian:8000</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>30 s</td>
</tr>
<tr>
<td><strong>Vault path (container)</strong></td>
<td><code>/vault</code></td>
</tr>
<tr>
<td><strong>Vault path (CT 104 host)</strong></td>
<td><code>/mnt/pve/unas/services/nextcloud/fkrebs@nucli.de/files/Notizen</code></td>
</tr>
<tr>
<td><strong>Vault path (CT 105 Nextcloud)</strong></td>
<td>same — both CTs bind-mount UNAS via <code>/mnt/pve/unas</code></td>
</tr>
<tr>
<td><strong>Vault path (UNAS NFS)</strong></td>
<td><code>192.168.1.31:/var/nfs/shared/storage/services/nextcloud/fkrebs@nucli.de/files/Notizen</code></td>
</tr>
<tr>
<td><strong>Nextcloud-visible path</strong></td>
<td><code>fkrebs@nucli.de</code> user → <code>Notizen/</code> folder (sync target for Obsidian desktop/mobile)</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>filesystem access only; no Nextcloud API needed</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Vault is the canonical Obsidian store, written by Nextcloud sync from desktop/mobile clients and read/written by the MCP server. Backed up via Backrest media/services plans (UNAS coverage).</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="gotify-push-notifications"><code>gotify</code> — Push notifications<a class="headerlink" href="#gotify-push-notifications" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-gotify:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>kcofoni/gotify-mcp</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>HTTP (<code>GOTIFY_MCP_TRANSPORT=http</code>)</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>0 (real-time)</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>GOTIFY_URL</code></td>
<td><code>http://192.168.1.40:10003</code></td>
</tr>
<tr>
<td><code>GOTIFY_CLIENT_TOKEN</code></td>
<td><code>CwaslnnN-MTNRoC</code></td>
</tr>
<tr>
<td><code>GOTIFY_APP_TOKEN</code></td>
<td><code>AO84CFvU4XmoPBJ</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Can send and receive push notifications. App token = send; client token = receive.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="home-assistant-home-assistant"><code>home-assistant</code> — Home Assistant<a class="headerlink" href="#home-assistant-home-assistant" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static (exact upstream)</td>
</tr>
<tr>
<td><strong>Upstream</strong></td>
<td><code>http://192.168.1.60:9583/private_ehnWeRl2G3De6NnbcN7teQ</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>disabled</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>15 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>Token embedded in path (<code>/private_ehnWeRl2G3De6NnbcN7teQ</code>) — HA MCP add-on authentication</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Direct to HA add-on on VM 100. ~2492 entities. <code>exact_upstream: true</code> so the path is forwarded verbatim.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="immich-immich-photo-library"><code>immich</code> — Immich photo library<a class="headerlink" href="#immich-immich-photo-library" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-immich:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>ghcr.io/astral-sh/uv:python3.12-trixie-slim</code></td>
</tr>
<tr>
<td><strong>Command</strong></td>
<td><code>uvx --with immich-mcp</code> → uvicorn streamable-HTTP app</td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>IMMICH_BASE_URL</code></td>
<td><code>http://192.168.1.40:12000</code></td>
</tr>
<tr>
<td><code>IMMICH_API_KEY</code></td>
<td><code>jhtAOjyCU1cXxBoj6gZGLfCjpv8TmcwaXqiex6f5po</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>DNS rebinding protection disabled (TransportSecuritySettings).</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="memos-memos-notes"><code>memos</code> — Memos notes<a class="headerlink" href="#memos-memos-notes" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-memos:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>ghcr.io/astral-sh/uv:python3.12-trixie-slim</code></td>
</tr>
<tr>
<td><strong>Command</strong></td>
<td><code>uvx --with mcp-server-memos mcp-proxy --stateless ... -- mcp-server-memos --host 192.168.1.40 --port 17000 --token "$MEMOS_TOKEN"</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>0 (real-time)</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>MEMOS_TOKEN</code></td>
<td><code>memos_pat_sOnvLytuaaVdEiqUSWubgfLut6AnoWb0</code></td>
</tr>
<tr>
<td><strong>Health probe</strong></td>
<td><code>search_memo</code> with keyword <code>__healthcheck__</code></td>
</tr>
</tbody>
</table>
<hr />
<h3 id="n8n-n8n-workflow-automation"><code>n8n</code> — n8n workflow automation<a class="headerlink" href="#n8n-n8n-workflow-automation" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static (exact upstream)</td>
</tr>
<tr>
<td><strong>Upstream</strong></td>
<td><code>https://n8n.nuclide.systems/mcp-server/http</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>disabled</td>
</tr>
<tr>
<td><strong>TLS</strong></td>
<td><code>insecure_tls: true</code> (self-signed cert workaround)</td>
</tr>
<tr>
<td><strong>Auth header</strong></td>
<td><code>Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI4YWY1YzgxMy1mODljLTRiODMtYmNmOC01ZDU5ODY0YTAzOGEiLCJpc3MiOiJuOG4iLCJhdWQiOiJtY3Atc2VydmVyLWFwaSIsImp0aSI6IjBmNjA1NDBmLTBmZmQtNGEwNS1iNjZlLTA2ZjU2YzZlNjY2MCIsImlhdCI6MTc3OTQ1NjAzN30.hf_Vg45R_hOJSY11H4GVAuvqWv39SitvtIXBXnorlXQ</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>n8n MCP server; exposes configured workflows as tools. JWT <code>iat: 1779456037</code>.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="nextcloud-nextcloud-files-calendar"><code>nextcloud</code> — Nextcloud files &amp; calendar<a class="headerlink" href="#nextcloud-nextcloud-files-calendar" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-nextcloud:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>ghcr.io/cbcoutinho/nextcloud-mcp-server:latest</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Mode</strong></td>
<td><code>MCP_DEPLOYMENT_MODE=single_user_basic</code></td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>disabled</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>NEXTCLOUD_HOST</code></td>
<td><code>https://nc.nuclide.systems</code></td>
</tr>
<tr>
<td><code>NEXTCLOUD_USERNAME</code></td>
<td><code>fkrebs@nucli.de</code></td>
</tr>
<tr>
<td><code>NEXTCLOUD_PASSWORD</code></td>
<td><code>iRn4ECFf2dS24B9sFP3fkPosjrPVKZdaJBuwRpP9sVBnL6A7qN6lXNk2iK4yYblksc2ewzkb</code></td>
</tr>
<tr>
<td><code>NEXTCLOUD_VERIFY_SSL</code></td>
<td><code>false</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>App-password generated via <code>occ</code> for <code>fkrebs@nucli.de</code> 2026-05-22. Re-enabled after fix.</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="paperless-paperless-ngx"><code>paperless</code> — Paperless-NGX<a class="headerlink" href="#paperless-paperless-ngx" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://paperless-mcp:8000</code> (own stack <code>/opt/stacks/ai/paperless-mcp.yml</code>)</td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td>custom build <code>./mcp-servers/paperless/Dockerfile</code></td>
</tr>
<tr>
<td><strong>Base</strong></td>
<td><code>ghcr.io/astral-sh/uv:bookworm-slim</code> + Node 20 + <code>@nloui/paperless-mcp</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP (via mcp-proxy wrapper — package is stdio-only)</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>every 300 s</td>
</tr>
<tr>
<td><strong>Tools</strong></td>
<td>12 (document search, retrieve, tags, correspondents, document types)</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>PAPERLESS_URL</code></td>
<td><code>http://paperless-ngx-webserver-1:8000</code> (<code>shared_backend</code> network)</td>
</tr>
<tr>
<td><code>PAPERLESS_API_TOKEN</code></td>
<td><code>${PAPERLESS_API_TOKEN}</code><code>.env</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Added 2026-05-23. npm package moved from <code>paperless-mcp</code> to <code>@nloui/paperless-mcp</code>. paperless-ngx webserver has a chown permissions error causing restarts — MCP server starts but tool calls will fail until paperless-ngx is fixed (see separate issue).</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="unifi-unifi-network"><code>unifi</code> — UniFi Network<a class="headerlink" href="#unifi-unifi-network" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>spawn</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://mcp-unifi:8000</code></td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td><code>ghcr.io/enuno/unifi-mcp-server:latest</code></td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>HTTP (<code>MCP_SERVER_TRANSPORT=http</code>)</td>
</tr>
<tr>
<td><strong>Cache TTL</strong></td>
<td>15 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td></td>
</tr>
<tr>
<td><code>UNIFI_API_KEY</code></td>
<td><code>yeBrsK8l6h5LSBc8ocsdLeSkGnc9bsKY</code></td>
</tr>
<tr>
<td><code>UNIFI_API_TYPE</code></td>
<td><code>local</code></td>
</tr>
<tr>
<td><code>UNIFI_LOCAL_HOST</code></td>
<td><code>192.168.1.1</code></td>
</tr>
<tr>
<td><code>UNIFI_LOCAL_PORT</code></td>
<td><code>443</code></td>
</tr>
<tr>
<td><code>UNIFI_LOCAL_VERIFY_SSL</code></td>
<td><code>false</code></td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>197 tools. Network App API key (local API). Site Manager/cloud tools need <code>UNIFI_SITE_MANAGER_ENABLED</code>.</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="group-image">Group: <code>image</code><a class="headerlink" href="#group-image" title="Permanent link">&para;</a></h2>
<h3 id="comfyui-comfyui-image-generation"><code>comfyui</code> — ComfyUI image generation<a class="headerlink" href="#comfyui-comfyui-image-generation" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://comfyui-mcp:8000</code> (own stack, <code>:18003</code> on host)</td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>every 300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>none (auth via gateway Bearer)</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Intel Arc iGPU; FLUX.1-schnell GGUF. LobeChat can also connect directly to <code>http://comfyui-mcp:8000/mcp</code> on <code>ai-internal</code>. See <a href="../comfyui/"><code>comfyui.md</code></a>.</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="group-storage">Group: <code>storage</code><a class="headerlink" href="#group-storage" title="Permanent link">&para;</a></h2>
<h3 id="upload-artifact-s3-artifact-upload"><code>upload-artifact</code> — S3 artifact upload<a class="headerlink" href="#upload-artifact-s3-artifact-upload" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th></th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Kind</strong></td>
<td>static</td>
</tr>
<tr>
<td><strong>Internal upstream</strong></td>
<td><code>http://upload-artifact-mcp:8000</code> (own stack, <code>:18011</code> on host)</td>
</tr>
<tr>
<td><strong>Transport</strong></td>
<td>streamable-HTTP</td>
</tr>
<tr>
<td><strong>Health check</strong></td>
<td>every 300 s</td>
</tr>
<tr>
<td><strong>Credentials</strong></td>
<td>Garage S3 credentials baked into <code>upload-artifact-mcp</code> container env</td>
</tr>
<tr>
<td><strong>Notes</strong></td>
<td>Uploads chat artifacts (images, files) to Garage S3 at <code>s3.nuclide.systems</code>.</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="client-configuration">Client configuration<a class="headerlink" href="#client-configuration" title="Permanent link">&para;</a></h2>
<h3 id="auto-recommended">Auto (recommended)<a class="headerlink" href="#auto-recommended" title="Permanent link">&para;</a></h3>
<blockquote>
<p><strong>Note</strong>: URLs below use the new Bifrost endpoint. Old <code>mcp.nuclide.systems</code> routes are decommissioned.</p>
</blockquote>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>GET https://ai.nuclide.systems/mcp-config?format=claude # Claude Code / Claude Desktop
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>GET https://ai.nuclide.systems/mcp-config?format=cursor # Cursor
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>GET https://ai.nuclide.systems/mcp-config?format=raw # raw token + URLs
</code></pre></div>
<p>Auth: <code>Authorization: Bearer sk-bf-&lt;key&gt;</code>. Merge <code>mcpServers</code> block into <code>~/.claude/settings.json</code>.</p>
<h3 id="manual-claude-code">Manual (Claude Code)<a class="headerlink" href="#manual-claude-code" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="p">{</span>
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="nt">&quot;mcpServers&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="nt">&quot;&lt;name&gt;&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;http&quot;</span><span class="p">,</span>
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="nt">&quot;url&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;https://ai.nuclide.systems/mcp/&lt;name&gt;/mcp&quot;</span><span class="p">,</span>
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="w"> </span><span class="nt">&quot;headers&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="nt">&quot;Authorization&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Bearer sk-bf-&lt;key&gt;&quot;</span>
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="p">}</span>
</code></pre></div>
<hr />
<h2 id="gateway-management-api">Gateway management API<a class="headerlink" href="#gateway-management-api" title="Permanent link">&para;</a></h2>
<p>Bifrost management API (auth: <code>sk-bf-&lt;key&gt;</code>).</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="nv">BASE</span><span class="o">=</span>https://ai.nuclide.systems
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="c1"># List all servers + status</span>
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>curl<span class="w"> </span>-H<span class="w"> </span><span class="s2">&quot;Authorization: Bearer sk-bf-...&quot;</span><span class="w"> </span><span class="nv">$BASE</span>/api/servers
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a>
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="c1"># Health check</span>
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a>curl<span class="w"> </span><span class="nv">$BASE</span>/health
</code></pre></div>
<hr />
<h2 id="other-credentials-in-gateway-env">Other credentials in gateway <code>.env</code><a class="headerlink" href="#other-credentials-in-gateway-env" title="Permanent link">&para;</a></h2>
<p>These are available to spawned containers via <code>${VAR}</code> substitution in <code>config.json</code>:</p>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
<th>Used by</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>GATEWAY_API_KEYS</code></td>
<td><code>JxxCqKw32XoN4LOHunDikS6u1RpS7R5ythzaqADPuIA</code></td>
<td>All API/proxy calls to gateway</td>
</tr>
<tr>
<td><code>LITELLM_MASTER_KEY</code></td>
<td><code>sk-tapirnase</code></td>
<td>LiteLLM proxy (shared pw — rotate pending)</td>
</tr>
<tr>
<td><code>LITELLM_API_KEY</code></td>
<td><code>sk-tapirnase</code></td>
<td>same</td>
</tr>
<tr>
<td><code>GITEA_TOKEN</code></td>
<td><code>c15e3348bf725054131633061002d677685cd4f4</code></td>
<td>Gitea API access</td>
</tr>
<tr>
<td><code>NEXTCLOUD_MCP_OAUTH_CLIENT_ID</code></td>
<td><code>82ca2d53-6df4-4671-875c-fee85b54b76f</code></td>
<td>Pocket-ID client for MCP spawned servers</td>
</tr>
<tr>
<td><code>NEXTCLOUD_MCP_OAUTH_CLIENT_SECRET</code></td>
<td><code>zOfHItEeKVa6Tf40RpnhihFmgnCDkkfz</code></td>
<td>same</td>
</tr>
<tr>
<td><code>SHEPARD_BASE_URL</code></td>
<td><code>https://shepard-api.nuclide.systems/shepard/api</code></td>
<td>Shepard API</td>
</tr>
<tr>
<td><code>GOTIFY_TOKEN_ALERTS</code></td>
<td><code>AtjFdduWArgAe7q</code></td>
<td>Gotify — alert app token (gateway internal)</td>
</tr>
<tr>
<td><code>GOTIFY_TOKEN_AGENTS</code></td>
<td><code>AB3dzfj5TUPCfYf</code></td>
<td>Gotify — agent app token (gateway internal)</td>
</tr>
</tbody>
</table>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.highlight", "search.suggest", "content.code.copy"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
</body>
</html>