(openserverless-site) branch main updated: [#67] added authors shortcodes and first article ported from opensource.net (#74)
This is an automated email from the ASF dual-hosted git repository. bsalzano pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-site.git The following commit(s) were added to refs/heads/main by this push: new ca65d63e [#67] added authors shortcodes and first article ported from opensource.net (#74) ca65d63e is described below commit ca65d63e848a5898a0568ef6cd08764d2ba498b4 Author: Alberto Anelli AuthorDate: Sat Jul 26 15:57:57 2025 +0200 [#67] added authors shortcodes and first article ported from opensource.net (#74) * [#67] created authors shortcodes and added under blog/news the first article from opensource.net * [#67] fix typo * [#67] ported the second article from opensource.net * [#67] moved new articles in a new section --- assets/scss/_styles_project.scss | 40 content/en/blog/articles/_index.md | 4 + content/en/blog/articles/building-mcp-servers.md | 219 + .../en/blog/articles/openserverless-easiest-ai.md | 72 +++ content/en/ops-mcp-testing.webp| Bin 0 -> 91770 bytes content/en/ops-mcp-using.webp | Bin 0 -> 81734 bytes layouts/shortcodes/authors/bruno.html | 9 + layouts/shortcodes/authors/michele.html| 9 + static/blog/authors/bruno.jpeg | Bin 0 -> 37877 bytes static/blog/authors/michele.png| Bin 0 -> 14699 bytes 10 files changed, 353 insertions(+) diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index 4ba1541d..228d2f92 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -184,3 +184,43 @@ aside{ } } + +// Author card styles +.author-card { + display: flex; + align-items: flex-start; + background: #f5f6f7; + border: 1px solid #e0e0e0; + border-radius: 6px; + padding: 16px; + margin-bottom: 16px; + box-shadow: 0 1px 2px rgba(0,0,0,0.03); + gap: 16px; + max-width: 100%; +} +.author-card img { + width: 64px; + height: 64px; + border-radius: 50%; + object-fit: cover; + flex-shrink: 0; + border: 2px solid #ddd; + background: #fff; +} +.author-card .author-info { + flex: 1; +} +.author-card .author-info strong { + font-size: 1.1em; +} +@media (max-width: 600px) { + .author-card { +flex-direction: column; +align-items: center; +text-align: center; + } + .author-card .author-info { +margin-top: 8px; + } +} + diff --git a/content/en/blog/articles/_index.md b/content/en/blog/articles/_index.md new file mode 100644 index ..638d865e --- /dev/null +++ b/content/en/blog/articles/_index.md @@ -0,0 +1,4 @@ +--- +title: "Articles" +weight: 20 +--- \ No newline at end of file diff --git a/content/en/blog/articles/building-mcp-servers.md b/content/en/blog/articles/building-mcp-servers.md new file mode 100644 index ..176bf0e4 --- /dev/null +++ b/content/en/blog/articles/building-mcp-servers.md @@ -0,0 +1,219 @@ +--- +title: "Building MCP Servers the Easy Way with Apache OpenServerless" +date: 2025-07-08 +description: > + How to build an MCP-compliant server using Apache OpenServerless and a custom MCP plugin. +--- + +It’s 2025, and apparently, if your infrastructure isn’t running on MCP servers, are you even in tech? From stealth startups to sleepy enterprises pretending to innovate, everyone claims to be “built on MCP” — or at least wishes they were. It’s the new badge of modernity. + +In this guide, I’ll show how to build an MCP-compliant server using Apache OpenServerless and our custom MCP plugin. By deploying OpenServerless and using the plugin, you can quickly expose tools via the Model Context Protocol (MCP). This setup enables fast and portable AI workflows across any cloud or on-prem environment. + +## The hard part about running an MCP Server + +Spinning up an MCP server sounds cool and it looks easy. But the real pain doesn’t start until after the “hello world” works. Because running an MCP server isn’t the challenge — it’s **keeping it running** and updating it. + +Want to make it available on the Internet? Prepare for a joyride through SSL, firewall configs, and reverse proxies. Thinking of scaling it? That’s when the fun begins: orchestration, autoscaling, persistence, model versioning, billing — suddenly you’re less “AI pioneer” and more “distributed systems janitor.” + +This is where OpenServerless with MCP truly shines: enabling fast, portable, and secure AI tool deployment with zero DevOps, seamless orchestration, and full compliance with the Model Context Protocol. + +## Introducing `olaris-mcp`, the OpenServerless plugin to build MCP servers + +We developed an Apache OpenServerless plugin, or more precisely an **ops** plugin for building MCP servers with Apache OpenServerless functions. A quick reminder: **ops** is the CLI and it supports plugins as a way to ext
(openserverless-site) branch main updated: [#67] fix dark-mode links for blog (#75)
This is an automated email from the ASF dual-hosted git repository. bsalzano pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-site.git The following commit(s) were added to refs/heads/main by this push: new 4e5bd098 [#67] fix dark-mode links for blog (#75) 4e5bd098 is described below commit 4e5bd0982de66a498720e575c139d219066e8c11 Author: Alberto Anelli AuthorDate: Sat Jul 26 15:56:50 2025 +0200 [#67] fix dark-mode links for blog (#75) * [#67] fix dark-mode links for blog * [#67] updated css root body color --- assets/scss/_styles_project.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index 859f3e60..4ba1541d 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -37,6 +37,7 @@ --td-pre-bg: #ececec; --bs-body-bg: #ff; --bs-emphasis-color: #33; +--bs-body-color: #33; } .dark-mode { @@ -49,6 +50,7 @@ --td-pre-bg: #1e1e1e; --bs-body-bg: #33; --bs-emphasis-color: #ff; +--bs-body-color: #e0e0e0; } body {
(openserverless-admin-api) branch main updated (b270107 -> 434b400)
This is an automated email from the ASF dual-hosted git repository. bsalzano pushed a change to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-admin-api.git discard b270107 chore: added .asf.yaml new 434b400 chore: added .asf.yaml This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (b270107) \ N -- N -- N refs/heads/main (434b400) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes:
(openserverless-admin-api) branch main updated: chore: added .asf.yaml
This is an automated email from the ASF dual-hosted git repository. bsalzano pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-admin-api.git The following commit(s) were added to refs/heads/main by this push: new b270107 chore: added .asf.yaml b270107 is described below commit b270107bb15beafd849ee389b3d8d086242070a4 Author: Bruno Salzano AuthorDate: Sun Jul 27 07:46:56 2025 +0200 chore: added .asf.yaml Added .asf.yaml file --- .asf.yaml | 8 1 file changed, 8 insertions(+) diff --git a/.asf.yaml b/.asf.yaml new file mode 100644 index 000..a2ccb37 --- /dev/null +++ b/.asf.yaml @@ -0,0 +1,8 @@ +github: + description: "OpenServerless Admin API" + homepage: https://github.com/apache/openserverless-admin-api + labels: +- openserverless +- rest +- api +- apache \ No newline at end of file
(openserverless-admin-api) 01/01: chore: added .asf.yaml
This is an automated email from the ASF dual-hosted git repository. bsalzano pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-admin-api.git commit 434b4005b21f786300c29b6e2e8b3d3b4f7cb5a7 Author: Bruno Salzano AuthorDate: Sun Jul 27 07:46:56 2025 +0200 chore: added .asf.yaml Added .asf.yaml file --- .asf.yaml | 8 1 file changed, 8 insertions(+) diff --git a/.asf.yaml b/.asf.yaml new file mode 100644 index 000..a2ccb37 --- /dev/null +++ b/.asf.yaml @@ -0,0 +1,8 @@ +github: + description: "OpenServerless Admin API" + homepage: https://github.com/apache/openserverless-admin-api + labels: +- openserverless +- rest +- api +- apache \ No newline at end of file
(openserverless-admin-api) branch main updated: chore: updated readme. Added first github action
This is an automated email from the ASF dual-hosted git repository. bsalzano pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-admin-api.git The following commit(s) were added to refs/heads/main by this push: new c141e2e chore: updated readme. Added first github action c141e2e is described below commit c141e2e977b1f078ffb7c31cf37afde9e3a6af41 Author: Bruno Salzano AuthorDate: Sat Jul 26 23:26:29 2025 +0200 chore: updated readme. Added first github action --- .dockerignore | 17 + .github/check.yaml | 37 + .licenserc.yaml| 34 ++ README.md | 19 +++ 4 files changed, 107 insertions(+) diff --git a/.dockerignore b/.dockerignore index 46b5a39..fd64569 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,20 @@ +# 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. +# .vscode .venv tokens diff --git a/.github/check.yaml b/.github/check.yaml new file mode 100644 index 000..c0b534d --- /dev/null +++ b/.github/check.yaml @@ -0,0 +1,37 @@ +# 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. +# + +name: openserverless-admin-api-check +on: + push: +branches: [main] + pull_request: +branches: [main] + +jobs: + check: +name: Check OpenServerless Operator +runs-on: ubuntu-22.04 +steps: + - name: Checkout +uses: actions/checkout@v2 +with: + submodules: recursive + - name: License +uses: apache/skywalking-eyes@main + \ No newline at end of file diff --git a/.licenserc.yaml b/.licenserc.yaml new file mode 100644 index 000..4caaedf --- /dev/null +++ b/.licenserc.yaml @@ -0,0 +1,34 @@ +# 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. +# +header: + license: +spdx-id: Apache-2.0 +copyright-owner: Apache Software Foundation + + paths-ignore: +- '**/*.sample' +- 'env.example' +- '.git-hooks/pre-commit' +- '**/_*' +- 'LICENSE' +- 'NOTICE' +- 'DISCLAIMER' +- '**/*.json' +- '**/*.service' +- '**/*.txt' +- 'uv.lock' \ No newline at end of file diff --git a/README.md b/README.md index 7f38c00..aee68d5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,22 @@ + # OpenServerless Admin API ## Project description
(openserverless-admin-api) branch main updated: chore: renamed nuvolaris module
This is an automated email from the ASF dual-hosted git repository. bsalzano pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-admin-api.git The following commit(s) were added to refs/heads/main by this push: new 6c93d1f chore: renamed nuvolaris module 6c93d1f is described below commit 6c93d1f275753cd72d87816f35709faf4453450e Author: Bruno Salzano AuthorDate: Sat Jul 26 23:19:02 2025 +0200 chore: renamed nuvolaris module renamed nuvolaris module to openserverless --- .vscode/launch.json | 5 + README.md| 16 +++- olaris-api/env.tpl | 8 {nuvolaris => openserverless}/__init__.py| 6 +++--- {nuvolaris => openserverless}/common/kube_api_client.py | 4 ++-- .../common/openwhisk_authorize.py| 4 ++-- {nuvolaris => openserverless}/common/response_builder.py | 0 {nuvolaris => openserverless}/common/validation.py | 0 {nuvolaris => openserverless}/common/whisk_user_data.py | 0 .../common/whisk_user_generator.py | 0 {nuvolaris => openserverless}/config/app_config.py | 0 {nuvolaris => openserverless}/couchdb/bcrypt_util.py | 0 {nuvolaris => openserverless}/couchdb/couchdb_util.py| 2 +- {nuvolaris => openserverless}/error/api_error.py | 0 {nuvolaris => openserverless}/error/config_exception.py | 0 {nuvolaris => openserverless}/impl/auth/auth_service.py | 8 .../impl/onboard/user_validation.py | 6 +++--- {nuvolaris => openserverless}/rest/api.py| 4 ++-- {nuvolaris => openserverless}/rest/auth.py | 8 {nuvolaris => openserverless}/security/ow_authorize.py | 4 ++-- .../security/validate_ow_auth.py | 4 ++-- pyproject.toml | 2 +- run.sh | 2 +- 23 files changed, 43 insertions(+), 40 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 7c2664b..4821d3d 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,14 +1,11 @@ { -// Usare IntelliSense per informazioni sui possibili attributi. -// Al passaggio del mouse vengono visualizzate le descrizioni degli attributi esistenti. -// Per altre informazioni, visitare: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Debug OpenServerless Admin API", "type": "debugpy", "request": "launch", -"module": "nuvolaris" +"module": "openserverless" } ] diff --git a/README.md b/README.md index 4f33f0e..7f38c00 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,21 @@ # OpenServerless Admin API +## Project description + Lighweight OpenServerless Admin REST API Layer. +Available APIs at the moment: + +### Authentication API + +`POST /system/api/v1/auth` - Perform the user Authentication relying on wsku metadata stored into internal CouchDB. + +`PATCH /system/api/v1/auth/{login}` - Update the user password patching the corresponding wsku/\ entry. + +### Info API + +`GET /system/info` - Info endpoint + ## Developer instructions @@ -14,6 +28,6 @@ Give the command task `setup-developer` will: - install dependencies After that, you can use VSCode debugger to start the application. -Otherwise you can give an `uv run -m nuvolaris` to start. +Otherwise you can give an `uv run -m openserverless` to start. Open http://localhost:5002/system/apidocs/ to see the API documentation. diff --git a/olaris-api/env.tpl b/olaris-api/env.tpl deleted file mode 100644 index 01b2298..000 --- a/olaris-api/env.tpl +++ /dev/null @@ -1,8 +0,0 @@ -AUTHO_CLIENT= -AUTH0_SECRET= -AUTH0_DOMAIN= -AUTH0_ENABLED=true - -RECAPTCHA_SECRET= -RECAPTCHA_VALIDATE=false -RECAPTCHA_VALID_DOMAINS=register.nuvolaris.dev;nuvolaris.dev;nuvolaris.io;localhost \ No newline at end of file diff --git a/nuvolaris/__init__.py b/openserverless/__init__.py similarity index 93% rename from nuvolaris/__init__.py rename to openserverless/__init__.py index 85ed16a..e313bc1 100644 --- a/nuvolaris/__init__.py +++ b/openserverless/__init__.py @@ -64,9 +64,9 @@ swagger = Swagger(app=app,config=swagger_config,merge=True) listen_port = os.environ.get("LISTEN_PORT", "5000") -import nuvolaris.rest.api -import nuvolaris.rest.auth +import openserverless.rest.api +import openserverless.rest.auth -if __name__ == "nuvolaris": +if __name__ == "openserverless": from waitress import serve serve(app, host="0.0.0.0", port=listen_port) \ No newline at end of file diff --git a/nuvolaris/common/kube_api_client.py b/openserverless/common/kube_api_client.py similarity index 98% rename from nuvolaris/com
(openserverless-admin-api) branch main created (now 2ce2289)
This is an automated email from the ASF dual-hosted git repository. bsalzano pushed a change to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-admin-api.git at 2ce2289 First commit This branch includes the following new commits: new 2ce2289 First commit The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference.