From d9f3381eec17557fbaf3e9b2a22876277c1d6696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Mon, 17 Nov 2025 19:26:33 +0100 Subject: [PATCH 1/4] First version of MCP web site --- content/doap/solr-mcp.rdf | 52 ++ content/pages/mcp/community.md | 42 + content/pages/mcp/downloads.md | 5 + content/pages/mcp/features.md | 4 + content/pages/mcp/index.md | 4 + pelicanconf.py | 4 + themes/solr/static/css/mcp.css | 1033 ++++++++++++++++++++++ themes/solr/templates/_header.html | 5 +- themes/solr/templates/index.html | 12 + themes/solr/templates/mcp/_css.html | 8 + themes/solr/templates/mcp/_footer.html | 30 + themes/solr/templates/mcp/_head.html | 25 + themes/solr/templates/mcp/_header.html | 39 + themes/solr/templates/mcp/base.html | 46 + themes/solr/templates/mcp/community.html | 13 + themes/solr/templates/mcp/downloads.html | 20 + themes/solr/templates/mcp/features.html | 113 +++ themes/solr/templates/mcp/fullwidth.html | 24 + themes/solr/templates/mcp/index.html | 79 ++ themes/solr/templates/mcp/page.html | 11 + themes/solr/templates/mcp/subnav.html | 20 + 21 files changed, 1588 insertions(+), 1 deletion(-) create mode 100644 content/doap/solr-mcp.rdf create mode 100644 content/pages/mcp/community.md create mode 100644 content/pages/mcp/downloads.md create mode 100644 content/pages/mcp/features.md create mode 100644 content/pages/mcp/index.md create mode 100644 themes/solr/static/css/mcp.css create mode 100644 themes/solr/templates/mcp/_css.html create mode 100644 themes/solr/templates/mcp/_footer.html create mode 100644 themes/solr/templates/mcp/_head.html create mode 100644 themes/solr/templates/mcp/_header.html create mode 100644 themes/solr/templates/mcp/base.html create mode 100644 themes/solr/templates/mcp/community.html create mode 100644 themes/solr/templates/mcp/downloads.html create mode 100644 themes/solr/templates/mcp/features.html create mode 100644 themes/solr/templates/mcp/fullwidth.html create mode 100644 themes/solr/templates/mcp/index.html create mode 100644 themes/solr/templates/mcp/page.html create mode 100644 themes/solr/templates/mcp/subnav.html diff --git a/content/doap/solr-mcp.rdf b/content/doap/solr-mcp.rdf new file mode 100644 index 0000000000..c79815c7ef --- /dev/null +++ b/content/doap/solr-mcp.rdf @@ -0,0 +1,52 @@ + + + + + + 2025-10-26 + + Apache Solr MCP Server + + + Model Context Protocol server for Apache Solr + + + + Go + + + + + + + + + + + + Apache Solr Team + + + + + + diff --git a/content/pages/mcp/community.md b/content/pages/mcp/community.md new file mode 100644 index 0000000000..e2e5b9a22c --- /dev/null +++ b/content/pages/mcp/community.md @@ -0,0 +1,42 @@ +Title: Community +URL: mcp/community.html +save_as: mcp/community.html +template: mcp/community + +## Support ## + +The Solr MCP community provides user support for free through the [users mailing list](#mailing-lists-chat) and [slack channels](#slack). + +## Mailing Lists & Chat ## + +The Solr MCP server shares mailing lists with its parent project, Apache Solr. +Available lists can be [found here]({filename}/pages/community.md#mailing-lists-chat). + +#### Slack #### + +* The project's main Slack channel is `#solr-mcp` in the `the-asf` organization. + Link: + +## Issue tracker ## + +The Solr MCP Server uses [Github issues](https://github.com/apache/solr-mcp/issues) in its repository for issue tracking. + +## How To Contribute ## + +Looking to contribute to the Solr MCP Server? Read the [CONTRIBUTING.md](https://github.com/apache/solr-mcp/blob/main/CONTRIBUTING.md) instructions and join us. + +## Code of Conduct ## + +For a large and diverse community like ours to be friendly, welcoming and respectful, we recognize the need for some guidelines. The project follows [Apache's Code of Conduct statement](https://www.apache.org/foundation/policies/conduct). Please take some time to read and understand it. + +If you feel there has been a violation of this code, please point out your concerns publicly in a friendly and matter of fact manner. Nonverbal communication is prone to misinterpretation and misunderstanding. Everyone has bad days and sometimes says things they regret later. Someone else's communication style may clash with yours, but the difference can be amicably resolved. After pointing out your concerns please be generous upon receiving an apology. + +Should there be repeated instances of code of conduct violations, or if there is an obvious and severe violation, the Solr PMC may become involved. + +### The Apache Way + +As an Apache project we strive to follow [The Apache Way](http://theapacheway.com/). If you are new to the community or to open source in general, you may benefit from understanding our core values as a community, and why we operate the way we do. + +## Version Control ## + +The project's Git repository is found at https://github.com/apache/solr-mcp or the mirror at https://gitbox.apache.org/repos/asf/solr-mcp.git diff --git a/content/pages/mcp/downloads.md b/content/pages/mcp/downloads.md new file mode 100644 index 0000000000..8e59896a6f --- /dev/null +++ b/content/pages/mcp/downloads.md @@ -0,0 +1,5 @@ +Title: Downloads +URL: mcp/downloads.html +save_as: mcp/downloads.html +template: mcp/downloads + diff --git a/content/pages/mcp/features.md b/content/pages/mcp/features.md new file mode 100644 index 0000000000..6e96e5ecff --- /dev/null +++ b/content/pages/mcp/features.md @@ -0,0 +1,4 @@ +Title: Features +URL: mcp/features.html +save_as: mcp/features.html +template: mcp/features diff --git a/content/pages/mcp/index.md b/content/pages/mcp/index.md new file mode 100644 index 0000000000..b9d9a795c2 --- /dev/null +++ b/content/pages/mcp/index.md @@ -0,0 +1,4 @@ +Title: Welcome +URL: mcp/index.html +save_as: mcp/index.html +template: mcp/index diff --git a/pelicanconf.py b/pelicanconf.py index ee0c7925fc..51d2625b33 100755 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -18,6 +18,10 @@ SOLR_OPERATOR_LATEST_RELEASE_DATE = datetime(2025, 3, 25) SOLR_OPERATOR_PREVIOUS_MAJOR_RELEASE = 'v0.8.1' +SOLR_MCP_LATEST_RELEASE = 'v0.0.0' +#SOLR_MCP_LATEST_RELEASE_DATE = datetime(2025, 3, 25) +#SOLR_MCP_PREVIOUS_MAJOR_RELEASE = 'v0.8.1' + # This string will be appended to all unversioned css and js resources to prevent caching surprises on edits. # The theme's htaccess file also sets a cache-control header with longer lifetime, if the v=XXXX query string is added. STATIC_RESOURCE_SUFFIX = "?v=%s" % dirhash('themes/solr/static', 'sha1')[-8:] diff --git a/themes/solr/static/css/mcp.css b/themes/solr/static/css/mcp.css new file mode 100644 index 0000000000..16ab22b3e8 --- /dev/null +++ b/themes/solr/static/css/mcp.css @@ -0,0 +1,1033 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ +html, body { + font-family: 'Helvetica Neue', sans-serif; /* substitute for proxima nova */ + color: #333; +} + +body { + overflow-x:hidden; + pointer-events: none; +} + +body > * { + pointer-events: auto; +} + +.alignleft { + float: left; +} + +.alignright { + float: right; +} + +.container { + padding: 40px 0; +} + +code, pre { + font-family: Menlo, Consolas,"Liberation Mono",Courier,monospace; + color:#4F504D; +} + +code { + font-weight: 500; +} + +/* + * Elements + */ +:focus { + outline: 0; +} + +.offset { + position: relative; + top: -150px; + padding-top: 150px; + margin-bottom: -130px; + z-index: -1000; +} + +.offset-medium { + position: relative; + top: -115px; + padding-top: 115px; + padding-bottom: 0px; + margin-bottom: -115px; + z-index: -1000; +} + +.offset-small { + position: relative; + top: -56px; + padding-top: 112px; + margin-bottom: -56px; + z-index: -1000; +} + +.btn1{ + border: 1px solid #d1d3d4; + background-color:inherit; + text-transform: uppercase; + color:#000; + padding: 0.7em 1em; + font-weight: 500; + margin: 0; +} +.btn1:hover, .btn1:focus { + color:#ff833d; + background:inherit; +} + +div.centered { + text-align: center; + padding-top: 32px; +} + +a.btn, button { + border: 1px solid #d1d3d4; + background-color:inherit; + text-transform: uppercase; + color:#000; + padding: 0.7em 1em; + font-weight: 500; + margin: 0; +} + +a.btn:hover, a.btn:focus, +button:hover, button:focus { + color:#ff833d; + background:inherit; +} + +a.btn.white, +button.white { + color:#fff; +} + +a.btn.white, +button.white:hover { + color:#262130; + background:#fff; +} + +/* + * Header + */ + +.header-section { + position: fixed; + z-index: 999; + min-width: 100%; + background:#865981; +} + +.header-fill { + padding-top: 90px; +} + +.top-bar, .top-bar .name { + background:#865981; + height: 90px; +} + +.top-bar .name .logo { + height: 100%; + position:relative; + left: 15px; + padding: 20px 0 25px 0; +} + +.top-bar-section ul li, .top-bar-section li:not(.has-form) a:not(.button) { + background: #865981; +} + +.top-bar-section li:not(.has-form) a:not(.btn):hover { + background:inherit; + color: #25202f; +} + +.top-bar-section .navigation a.selected { + color: #25202f; +} + +.top-bar-section li:not(.has-form) a.btn:hover, .top-bar-section li:not(.has-form) a.btn:focus { + background:#fff; + color: #25202f; +} + +.top-bar-section ul li>a, +.top-bar-section ul li>a.btn, +.top-bar.shrink.expanded .top-bar-section ul li>a, +.top-bar.shrink.expanded .top-bar-section ul li>a.btn { + padding: 0 10px !important; + transition: all 0.1s ease; + text-transform:uppercase; + font-size:0.92rem; +} + +.top-bar-section ul li>a.btn { + margin: 0; + background-color: transparent; + text-align:left; +} + +.top-bar.expanded .toggle-topbar a { + color:#fff; +} + +.top-bar.expanded .top-bar-section li:not(.has-form) a:not(.btn):hover { + background:#fff; +} + +/* full-width nav styles */ +@media only screen and (min-width: 47.5em) { + .top-bar-section .navigation { + margin: 20px 20px 20px 0; + } + .top-bar .name .logo { + left: 15px; + } + .top-bar .btn { + padding-top: .65rem; + padding-bottom: .55rem; + top: 2px; + text-align:center; + border: 1px solid #fff; + } + .top-bar .btn:hover { + background:#fff; + } +} + +/* shrink header styles */ +.top-bar.shrink, .top-bar.shrink .name, .top-bar.expanded .name { + height: 55px; +} + +.top-bar.shrink.expanded { + height:auto; +} + +.top-bar.shrink .name .logo, .top-bar.expanded .name .logo { + padding: 10px 0 15px 0; +} + +.top-bar.shrink .top-bar-section ul li>a, .top-bar.shrink .top-bar-section ul li>a.btn { + font-size: 0.8em; +} + +.top-bar.shrink .top-bar-section li:not(.has-form) a:not(.button) { + line-height: 35px; +} + +.top-bar.shrink .navigation { + margin: 10px 15px 10px 0; +} + +.top-bar.shrink.expanded .navigation { + margin: 0; +} + +.top-bar.shrink.expanded .top-bar-section li:not(.has-form) a:not(.button) { + line-height: 1.6; +} + +.top-bar.shrink .button { + padding: 10px 20px; +} + +/* + * Global + */ +h1, h2, h3, h4, h5 { + font-family: 'Raleway', 'Helvetica Neue', sans-serif; + font-weight:300; +} + +h1 { + margin-bottom: 20px; + color: #865981; +} + +h2 { + margin-bottom: 0.8em; + color: #865981; +} + +h3 { + color: #666; +} + +h4 { + color: #666; +} + +h5 { + color: #999; +} + +p { + line-height: 1.8em; + color:#262130; +} + +.button { + background-color: #ff833d; + text-transform: uppercase; +} + +.button:hover, +.button:focus, +.button:active { + background-color: #ff5c00; +} + +.annotation { + color: #262130; + text-transform: uppercase; + margin-bottom: 0.8em; + font-weight:400; +} + +/* + * PAGES + */ + +.homepage h1.red { + color: #865981;; +} + +.page h1, .page h2, .page h3 { + font-family: 'Raleway', 'Helvetica Neue', sans-serif; + color: #262130; +} + +.page h1, .subnav h1 , h1.news { + font-weight:300; +} + +.subnav h1 , h1.news { + margin-bottom: 30px; +} + +.subnav h1 , h1.news { + line-height:0.8; +} + +.page h1 small, .subnav h1 small, h1.news small { + font-size:0.4em; + color:#333; +} + +.page h2, .page h3 { + font-weight:500; +} + +.page h2 { + font-size:1.5em; +} + +.page h3 { + font-size:1.4em; +} + +.page p, .page ul li, .page ol li { + color:#333; +} + +.page a { + color: #865981; +} + +.page .date { + color: #865981; + text-transform:uppercase; + font-weight:500; +} + +#resources { + text-align:center; +} + +pre { + white-space:pre-wrap; + overflow:hidden; +} + +/* + * Alternate styles (blue sections) + */ +.alternate .annotation { + color: #865981; +} + +.alternate h1 { + font-weight: 100; + color: #212121; +} + +.alternate h2 { + font-weight: 300; +} + +hr { + margin-bottom: 2em; + color:#e4e2dd; +} + +/* + * Small styles + */ + +.small h1 { + font-size: 2em; +} + +.small h2 { + font-size: 1.6em; +} + +.small h3 { + font-size: 1.4em; +} + +.small h4 { + font-size: 1.2em; +} + +.small h5 { + font-size: 1em; +} + +.small p { + font-size: 0.9em; +} + +/* + * Section styles + */ +section { + padding: 40px 0; + color: #333; + text-align:center; +} + +.artifacthub-widget > section { + padding: 0; +} + +section.gray { + background-color: #f9f8f8; +} + +section.orange { + background-color: #865981; + color: #fff; + padding:60px 0 80px 0; + text-align:center; + position:relative; +} + +section.orange .annotation { + color:#fff; +} + +section.orange h1 { + color: inherit; +} + +section.orange h2 { + color: inherit; +} + +section.orange p { + color:#fff; + font-weight: 300; + font-size: 1.1em; +} + +section.orange .down-arrow { + position: absolute; + left: 50%; +} + +section.orange .down-arrow .red { + color: #ff833c; +} + +section.orange .down-arrow a { + color:#fff; +} + +section.orange.full-width { + margin-left: -100%; + margin-right: -100%; + margin-bottom: 2em; +} + + +/* + * Hero + */ +.hero { + background-color: #262130; + color: #fff; + position:relative; + padding: 100px 0; +} + +.hero h1, +.hero p { + color: #fff; +} + +.hero p { + margin-bottom: 40px; + font-weight: 300; + font-size: 1.1em; +} + +.hero .button { + background-color: #305cb3; +} + +.hero .button:hover, +.hero .button:focus, +.hero .button:active { + background-color: #0045cd; +} + +.hero .down-arrow { + position: absolute; + bottom: -80px; + left: 50%; +} + +.hero .down-arrow .red { + color: #865981; +} + +.hero .down-arrow a { + color:#fff; +} + +.security { + background-color: #FFBF78; + padding-top: 10px; + padding-bottom: 0px; + display: none; +} + +.security a { + color: #262130; +} + +.topnews { + background-color: #59BD81; + padding-top: 15px; + padding-bottom: 0px; + display: none; +} + +.topnews .row p a { + color: #262130; + font-size: larger; +} + +.topnews-operator { + background-color: #59BD81; + padding-top: 15px; + padding-bottom: 0px; + display: none; +} + +.topnews-operator .row p a { + color: #262130; + font-size: larger; +} + +/* + * Footer + */ +footer { + background-color: #262130; + color: #f9f8f8; + padding: 40px 0 20px 0; +} + +footer h4 { + padding-bottom:15px; + text-transform:uppercase; + font-size: 1em; +} + +footer h4, footer ul li a, .page footer ul li a { + color: #f9f8f8; + font-family: 'Raleway', 'Helvetica Neue', sans-serif; +} + +footer ul li a, .page footer ul li a { + font-weight:300; + font-size:0.9em; +} + +footer ul { + list-style: none; + margin-left: 0; +} + +footer .copyright { + padding: 50px 0 40px 0; +} + +footer .copyright p { + color: #bbb; + font-size:0.7em; + text-align:center; +} + +/* + * Gray/white section styles + */ + +.white h1 { + line-height:0.8; +} + +.gray .annotation { + color: #262130; + font-size: 1em; +} + +.gray h1 { + color: #865981; + line-height:0.8; +} + +.gray .box h3 { + color:#000; + font-size:1.4em; + margin-bottom:20px; +} + +.gray .box p { + font-size: 0.9em; + line-height: 1.3em; + color:#333; +} + +.gray .box button { + font-size: 0.75em; + margin-bottom: 0; +} + +.gray .box button:hover { + background-color:inherit; + color:#ff833d; +} + +.gray .box:hover { + background:#fff; + border: 1px solid #333; + cursor:pointer; +} + +.gray .box:hover button { + color:#ff833d; +} + +.gray .box .img { + height:120px; +} + +.gray .box .img img { + height:95px; +} + +.full-width .gray .box { + padding:0; + border:none; +} + +.full-width .gray .box:hover { + border:none; + cursor:default; + background:inherit; +} + +/* box variants */ +.col-4 .box { + margin: 15px; + padding: 5px 5px 15px 5px; + border: solid 1px transparent +} + +.col-4 .box .title { + height: 70px; +} + +.col-3 .box { + margin: 15px; + padding: 20px 20px 30px 20px; + border: solid 1px transparent +} + +.col-3 .box .title { + height: 70px; +} + +[class*="block-grid-"] { + display: flex; + padding: 0; + margin:0; + flex-wrap: wrap; + justify-content: center; +} + +/* + * Solr books + */ +.books { + margin:40px 0; + +} + +.books > div{ + padding-left: 5px; +} + +.powered{ + line-height: 99px; + height: 99px; +} +.powered div{ + line-height: 99px; + height: 99px; + padding-right: 10px; +} + +.powered img{ + vertical-align: middle; + display: inline; +} + +/* + * Slider + * TODO: Not in use + */ +.slider-prev { + left:-25px; + color:#ffa16b; +} + +.slider-next { + right:-25px; + color:#ffa16b; +} + +.slider-prev, .slider-next { + position: absolute; + display: block; + height: 20px; + width: 20px; + cursor: pointer; + top: 50%; + margin-top: -10px; +} + +/* + * FEATURES PAGE + */ +section.list { + padding:80px 0; +} + +section.list { + text-align:left; +} + +section.list ul li { + font-family: 'Raleway', 'Helvetica Neue', sans-serif; + font-weight:300; + color: #333; + font-size: 1.2em; + padding-right:20px; +} + +section.list ul li p { + font-family: 'Helvetica Neue', sans-serif; + font-weight:300; + color: #A13016; + margin-top: 10px; + font-size: 0.8em; +} + +section.list ul li ul { + padding-top: 10px; +} + +section.list ul li ul li { + font-family: 'Helvetica Neue', sans-serif; + font-weight:300; + color: #A13016; + margin-top: 2px; + font-size: 0.96em; +} + + +.anchor-fixed { + top: 57px; + z-index: 1000; + position: fixed; +} + +/* + * Subnav style pages + */ +.sub-nav { + display:inline-block; + margin-bottom:0; +} + +.sub-nav-container { + height: 100px; + width: 1000px; + margin: 0 auto; +} + +.sub-nav-border { + padding: 20px 0; + background: white; + border-top: 1px solid #e4e2dd; + border-bottom: 1px solid #e4e2dd; + margin: 0 auto 30px auto; +} + +.sub-nav dd { + margin-bottom: 0; +} + +.sub-nav dd a { + padding-right: 30px; + padding-left: 15px; + border-right:1px solid #e4e2dd; + position: relative; + z-index: 2000; +} + +.codehilite { + margin: 10px 0; + background-color: #EEEEEE; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 15px; +} + +pre { + line-height:1.5; +} + +ul.breadcrumbs { + background-color:transparent; + border: none; +} + +/* + * Sidebar + */ + +.side-nav { + padding:25px; + border:1px solid #e4e2dd; + margin-bottom:40px; +} + +ul.side-nav > li { + border-top:1px solid #e4e2dd; + padding:10px 0 10px 10px; + margin:0; +} + +.page .side-nav li a { + color:#25202f; + font-weight:300; + font-size: 1.3em; +} + +.page .side-nav li a.active { + color:#865981; +} + +.page .side-nav li a:hover { + color:#865981; +} + +#search form, #search fieldset { + border:none; + padding:0; + margin:0; +} + +.search-box { + display: inline-block; + padding-right: 1em; + position: relative; + width: 150px; + height: 42px; +} + +#search input[type="search"] { + font-family: 'Raleway', 'Helvetica Neue', sans-serif; + font-weight:300; + height: 28px; + width: 135px; + font-size: 12px; + border: none; + box-shadow: none; + position: absolute; + top: 8px; + left: 0px; + padding-right: 26px; +} + +#search input[type="search"]:focus { + background-color: #f9f9f9; +} + +.search-button { + position:absolute; + height:23px; + width:23px; + background-color: transparent !important; + line-height: 23px !important; + padding: 0 !important; + top: 10px; + right: 17px; + margin:0; +} + +.search-button img { + padding:0; + line-height:23px; + margin:0; +} + +.nested-nav { + +} + +ul.breadcrumbs { + margin:0; + padding:0; +} + +ul.breadcrumbs a { + text-transform:none; + font-size:1.2em; +} + +.tutorials .orange { + margin-top: 40px; + margin-bottom:40px; +} + +.float-right { + float: right; +} + +img.float-right { + margin: 5px 0px 10px 10px; +} + + +.poweredby .list ul{ + list-style-type: none; +} + +.wrappable-btn { + border: 1px solid #d1d3d4; + background-color: inherit; + text-transform: uppercase; + color: #000; + padding: 0.25em 0.75em 0.05em 0.47em; + font-weight: 500; + margin: 0; + display: inline-block; + vertical-align: middle; +} +.wrappable-btn:hover, .wrappable-btn:focus { + color: #ff833d; + background: inherit; +} + +.ref-guide-badge { + background-color: #865981; + color: #fff; + display: inline-block; + text-align: center; + font-size: 0.6em; + line-height: 1.1; + font-weight: 500; + vertical-align: middle; + padding: 1px 2px; + margin: 0em 0.50em 0.30em -0.40em; +} +.wrappable-btn:hover .ref-guide-badge, .wrappable-btn:focus .ref-guide-badge { + background-color: #ff833d; +} + +ul li div.box div.img img.resizeable-solr-logo { + max-width:243px; + max-height:123px; + height:auto; + width: 100%; + border:2px solid #CCC +} + +ul li div.box h3.fixed-wrap-point-logo-title { + padding-left:9px; + padding-right:8px; +} + +section h3.asset-download { + text-align: left; + padding-top: 10px; +} + +ul li div.box div.img.logo-container { + padding: 20px; + height: auto; + width: auto; +} +ul li div.box div.img.logo-container.black-background { + background-color:#000; +} +ul li div.box div.img.logo-container.white-background { + background-color:#fff; +} +ul li div.box div.img.logo-container.orange-background { + background-color:#865981; +} +.full-width .gray .box.logo-box { + position: relative; + border: 1px solid #CCC; +} diff --git a/themes/solr/templates/_header.html b/themes/solr/templates/_header.html index b9ae4ae45e..5a7051350c 100644 --- a/themes/solr/templates/_header.html +++ b/themes/solr/templates/_header.html @@ -29,7 +29,10 @@ Project
  • - Solr Operator + K8S Operator +
  • +
  • + MCP
  • + + + +{% include "mcp/_css.html" %} + + + + +{% include "_javascript.html" %} diff --git a/themes/solr/templates/mcp/_header.html b/themes/solr/templates/mcp/_header.html new file mode 100644 index 0000000000..3c38d211ce --- /dev/null +++ b/themes/solr/templates/mcp/_header.html @@ -0,0 +1,39 @@ +
    +
    + +
    +
    + +
    diff --git a/themes/solr/templates/mcp/base.html b/themes/solr/templates/mcp/base.html new file mode 100644 index 0000000000..da0b928a73 --- /dev/null +++ b/themes/solr/templates/mcp/base.html @@ -0,0 +1,46 @@ + + + + {% include "mcp/_head.html" %} + {% block title %}{{ page.title }}{% endblock %} - Apache Solr MCP Server + {% block css %}{% endblock %} + + {% block metakeys %} + + {% endblock %} + {% block ogmeta %} + + + + + + + {% endblock %} + + {% block favicon %} + + + {% endblock %} + {% block rss %}{% endblock %} + {% block javascript %}{% endblock %} + {% include "_matomo.html" %} + + + + {% include "mcp/_header.html" %} + + {% block solr_security_warning %} + {% endblock %} + {% block hero_header %} + {% endblock %} + {% block content %} + {% endblock %} +
    + {% include "mcp/_footer.html" %} +
    + + {% include "_last_scripts.html" %} + + diff --git a/themes/solr/templates/mcp/community.html b/themes/solr/templates/mcp/community.html new file mode 100644 index 0000000000..ab8733470d --- /dev/null +++ b/themes/solr/templates/mcp/community.html @@ -0,0 +1,13 @@ +{% extends "mcp/subnav.html" %} + +{% block subnav_title %}Community{% endblock %} +{% block subnav_subtitle %}Join the active community of Solr MCP Server contributors.{% endblock %} +{% block subnav_nav_items %} +
    Support
    +
    Lists/Chat
    +
    Issues
    +
    Contributing
    +
    Code of Conduct
    +
    Version Control
    +
    Powered By
    +{% endblock %} diff --git a/themes/solr/templates/mcp/downloads.html b/themes/solr/templates/mcp/downloads.html new file mode 100644 index 0000000000..772aa5ee81 --- /dev/null +++ b/themes/solr/templates/mcp/downloads.html @@ -0,0 +1,20 @@ +{% extends "mcp/page.html" %} + +{% block content_inner %} +
    + + +

    {{ page.title }} + +

    + {{ page.content }} +

    This project is incubating and has not made any releases yet.

    +
    +{% endblock content_inner %} diff --git a/themes/solr/templates/mcp/features.html b/themes/solr/templates/mcp/features.html new file mode 100644 index 0000000000..d6f0a6f3dc --- /dev/null +++ b/themes/solr/templates/mcp/features.html @@ -0,0 +1,113 @@ +{% extends "mcp/fullwidth.html" %} + +{% block fullwidth_title %}

    Extension

    {% endblock %} + +{% block hero_header_inner %} +
    +
    + Apache Solr MCP Server {{ SOLR_MCP_LATEST_RELEASE }} +
    +

    + Solr MCP Server Features +

    +

    + The Solr MCP Server is a Model Context Protocol (MCP) server that provides a declarative API for managing Solr Clouds. +

    +
    +
    +{% endblock %} + +{% block content_inner %} +
    + +
    + +
    +
    +
    +
    + Really super MCP server +
    +

    + AI all the way +

    +
    +
    +
    +
    + +
    + +
    + + +
    + +
    + +{{ super() }} +{% endblock content_inner %} diff --git a/themes/solr/templates/mcp/fullwidth.html b/themes/solr/templates/mcp/fullwidth.html new file mode 100644 index 0000000000..e326919d46 --- /dev/null +++ b/themes/solr/templates/mcp/fullwidth.html @@ -0,0 +1,24 @@ +{% extends "mcp/base.html" %} + +{% block hero_header %} +
    +
    + {% block hero_header_inner %} +
    +
    + Apache Solr MCP Server {{ SOLR_MCP_LATEST_RELEASE }} +
    +

    + The Apache Solr MCP Server gives your LLM super powers in managing Solr clusters. +

    + +
    +
    + {% endblock hero_header_inner %} +
    +
    +{% endblock hero_header %} + +{% block content %} +{% block content_inner %}{{ page.content }}{% endblock %} +{% endblock %} diff --git a/themes/solr/templates/mcp/index.html b/themes/solr/templates/mcp/index.html new file mode 100644 index 0000000000..310fc3135c --- /dev/null +++ b/themes/solr/templates/mcp/index.html @@ -0,0 +1,79 @@ +{% extends "mcp/fullwidth.html" %} + +{% block bodyclass %}homepage{% endblock %} + +{% block solr_security_warning %} +{% set latest_sec_articles = (articles | selectattr("category.name", "eq", "solr/security") | list)[:1] %} +{% if (latest_sec_articles | length) > 0 %} +{% set latest_sec_date = latest_sec_articles[0].date | strftime("%Y-%m-%d") %} +
    + +
    +{% endif %} +{% endblock %} + +{% block content_inner %} +
    + +
    +
    +
    +
    +   +
    +

    + Learn more about the Solr MCP Server. +

    +

    + Solr MCP Server gives your LLM Solr superpowers. +

    +
    +
    + +
    + +
    +
    +
    +

    + The Apache Software Foundation +

    +

    + The Apache Software Foundation provides support for the Apache community of open-source software projects. The Apache projects are defined by collaborative consensus based processes, an open, pragmatic software license and a desire to create high quality software that leads the way in its field. Apache Lucene, Apache Solr, Apache PyLucene, Apache Open Relevance Project and their respective logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. +

    +
    +

    + +

    +
    +
    +
    +{% endblock content_inner %} diff --git a/themes/solr/templates/mcp/page.html b/themes/solr/templates/mcp/page.html new file mode 100644 index 0000000000..845fadbb9b --- /dev/null +++ b/themes/solr/templates/mcp/page.html @@ -0,0 +1,11 @@ +{% extends "mcp/base.html" %} + +{% block content %} +
    + {% block subnav %} + {% endblock %} +
    + {% block content_inner %}{{ page.content }}{% endblock %} +
    +
    +{% endblock %} diff --git a/themes/solr/templates/mcp/subnav.html b/themes/solr/templates/mcp/subnav.html new file mode 100644 index 0000000000..76e81656f7 --- /dev/null +++ b/themes/solr/templates/mcp/subnav.html @@ -0,0 +1,20 @@ +{% extends "mcp/page.html" %} + +{% block subnav %} +
    +
    +

    {% block subnav_title %}{% endblock %}
    + {% block subnav_subtitle %}{% endblock %}

    +
    +
    + +{% endblock %} From 43cd6a97e6cc3bfa9c93b9ffc09ab28c7c790175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Mon, 17 Nov 2025 19:29:55 +0100 Subject: [PATCH 2/4] Change to a green theme --- themes/solr/static/css/mcp.css | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/themes/solr/static/css/mcp.css b/themes/solr/static/css/mcp.css index 16ab22b3e8..cf97fd65ca 100644 --- a/themes/solr/static/css/mcp.css +++ b/themes/solr/static/css/mcp.css @@ -137,7 +137,7 @@ button.white:hover { position: fixed; z-index: 999; min-width: 100%; - background:#865981; + background:#2d7a3e; } .header-fill { @@ -145,7 +145,7 @@ button.white:hover { } .top-bar, .top-bar .name { - background:#865981; + background:#2d7a3e; height: 90px; } @@ -157,7 +157,7 @@ button.white:hover { } .top-bar-section ul li, .top-bar-section li:not(.has-form) a:not(.button) { - background: #865981; + background: #2d7a3e; } .top-bar-section li:not(.has-form) a:not(.btn):hover { @@ -265,12 +265,12 @@ h1, h2, h3, h4, h5 { h1 { margin-bottom: 20px; - color: #865981; + color: #2d7a3e; } h2 { margin-bottom: 0.8em; - color: #865981; + color: #2d7a3e; } h3 { @@ -313,7 +313,7 @@ p { */ .homepage h1.red { - color: #865981;; + color: #2d7a3e;; } .page h1, .page h2, .page h3 { @@ -355,11 +355,11 @@ p { } .page a { - color: #865981; + color: #2d7a3e; } .page .date { - color: #865981; + color: #2d7a3e; text-transform:uppercase; font-weight:500; } @@ -374,10 +374,10 @@ pre { } /* - * Alternate styles (blue sections) + * Alternate styles (green sections) */ .alternate .annotation { - color: #865981; + color: #2d7a3e; } .alternate h1 { @@ -440,7 +440,7 @@ section.gray { } section.orange { - background-color: #865981; + background-color: #2d7a3e; color: #fff; padding:60px 0 80px 0; text-align:center; @@ -523,7 +523,7 @@ section.orange.full-width { } .hero .down-arrow .red { - color: #865981; + color: #2d7a3e; } .hero .down-arrow a { @@ -619,7 +619,7 @@ footer .copyright p { } .gray h1 { - color: #865981; + color: #2d7a3e; line-height:0.8; } @@ -874,11 +874,11 @@ ul.side-nav > li { } .page .side-nav li a.active { - color:#865981; + color:#2d7a3e; } .page .side-nav li a:hover { - color:#865981; + color:#2d7a3e; } #search form, #search fieldset { @@ -980,7 +980,7 @@ img.float-right { } .ref-guide-badge { - background-color: #865981; + background-color: #2d7a3e; color: #fff; display: inline-block; text-align: center; @@ -1025,7 +1025,7 @@ ul li div.box div.img.logo-container.white-background { background-color:#fff; } ul li div.box div.img.logo-container.orange-background { - background-color:#865981; + background-color:#2d7a3e; } .full-width .gray .box.logo-box { position: relative; From bfdf55c909229fc54bc26fca06469ceb504e50d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Mon, 17 Nov 2025 19:46:51 +0100 Subject: [PATCH 3/4] Add some AI generated initial content for index and features --- themes/solr/templates/mcp/features.html | 197 +++++++++++++++++------- themes/solr/templates/mcp/index.html | 102 ++++++++++-- 2 files changed, 231 insertions(+), 68 deletions(-) diff --git a/themes/solr/templates/mcp/features.html b/themes/solr/templates/mcp/features.html index d6f0a6f3dc..71aad89fdb 100644 --- a/themes/solr/templates/mcp/features.html +++ b/themes/solr/templates/mcp/features.html @@ -1,109 +1,188 @@ {% extends "mcp/fullwidth.html" %} -{% block fullwidth_title %}

    Extension

    {% endblock %} +{% block fullwidth_title %}

    Features

    {% endblock %} {% block hero_header_inner %}
    Apache Solr MCP Server {{ SOLR_MCP_LATEST_RELEASE }}
    -

    - Solr MCP Server Features -

    +

    Powerful MCP Tools for Solr

    - The Solr MCP Server is a Model Context Protocol (MCP) server that provides a declarative API for managing Solr Clouds. + A comprehensive set of AI-ready tools to search, index, and manage your Solr collections. Designed to work seamlessly with Claude and other LLM assistants through the Model Context Protocol.

    -
    +
    {% endblock %} {% block content_inner %} -
    +
    -
      +
      +
      + Search Capabilities +
      +

      Advanced Search Tools

      +

      Execute complex searches with filters, faceting, and pagination—all driven by natural language instructions.

      +
      +
    +
    +
    -
    +
    -
    +
    - Really super MCP server + Indexing & Data Management
    -

    - AI all the way -

    -
    +

    Flexible Document Indexing

    +

    Index documents in multiple formats with automatic field normalization and error handling.

    +
    +
      +
    • +
      +
      +
      +

      Multi-Format Support

      +

      Index documents in JSON, CSV, or XML formats with automatic parsing and validation

      +
      +
      +
    • +
    • +
      +
      +
      +

      Field Normalization

      +

      Automatically sanitize and normalize field names to match Solr's schema requirements

      +
      +
      +
    • +
    • +
      +
      +
      +

      Nested Structure Support

      +

      Handle complex nested documents and multi-valued fields with intelligent flattening

      +
      +
      +
    • +
    +
    -
    +
    +
    +
    +
    + Collection & Schema Management +
    +

    Collection Intelligence

    +

    Introspect and understand your collections and schemas dynamically within your AI workflows.

    +
    +
    -
    - -
    +
    -
      +
      +
      + Platform & Integration +
      +

      Built for Enterprise Deployment

      +

      Deploy with confidence using proven Spring Boot technologies and comprehensive error handling.

      +
      +
    +
    +
    diff --git a/themes/solr/templates/mcp/index.html b/themes/solr/templates/mcp/index.html index 310fc3135c..e219a174c7 100644 --- a/themes/solr/templates/mcp/index.html +++ b/themes/solr/templates/mcp/index.html @@ -19,28 +19,112 @@

    ⚠ There are recent security announcements. R {% block content_inner %}
    +
    + +
    +
    -   + Why Use Solr MCP Server?
    -

    - Learn more about the Solr MCP Server. -

    +

    Empower Your AI with Enterprise Search

    - Solr MCP Server gives your LLM Solr superpowers. + Integrate Apache Solr directly into your AI workflows. Execute complex searches, manage indexes, and analyze your data—all through natural language with an AI assistant.

    -
      +
        +
      • +
        +
        +
        +

        Powerful Search

        +
        +

        Complex queries, filtering, faceting, and pagination through a natural language interface

        +
        +
      • +
      • +
        +
        +
        +

        Flexible Indexing

        +
        +

        Index documents in JSON, CSV, or XML formats with automatic field name normalization

        +
        +
      • +
      • +
        +
        +
        +

        Standards-Based

        +
        +

        Implements the Model Context Protocol specification for seamless AI integration

        +
        +
      • +
      • +
        +
        +
        +

        Multi-Collection

        +
        +

        Manage and query multiple Solr collections and schemas through a unified interface

        +
        +
      • +
      • +
        +
        +
        +

        Easy Deployment

        +
        +

        Deploy as a Docker container, Spring Boot application, or via HTTP/STDIO transports

        +
        +
      • +
      • +
        +
        +
        +

        Enterprise Ready

        +
        +

        Built on proven technologies with comprehensive error handling and logging

        +
        +
      • +
      +
    +
    + +
    +
    +
    +
    + Next Steps +
    +

    Explore the Solr MCP Server

    +
    +
    +
    +
    • Features

      -

      What is included?

      +

      Discover all the capabilities and tools available

      Learn More
    • @@ -49,9 +133,9 @@

      Features

      -

      Solr MCP Server Community

      +

      Community

      -

      Get support and give back. Contribute to the Solr MCP Server project.

      +

      Get support, contribute, and join the conversation

      Learn More
      From f358478fc1066815fa9add988dc1751cc47dddb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B8ydahl?= Date: Tue, 18 Nov 2025 01:53:59 +0100 Subject: [PATCH 4/4] Revert rename of Solr Operator menu --- themes/solr/templates/_header.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/solr/templates/_header.html b/themes/solr/templates/_header.html index 5a7051350c..3c52bd8208 100644 --- a/themes/solr/templates/_header.html +++ b/themes/solr/templates/_header.html @@ -29,7 +29,7 @@ Project
    • - K8S Operator + Solr Operator
    • MCP