Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/workflows/publish-mcp-registry.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Publish to MCP Registry

env:
# Releases: https://github.com/modelcontextprotocol/registry/releases
DEFAULT_MCP_PUBLISHER_VERSION: 'v1.3.10'

on:
# Allow this workflow to be called from other workflows
workflow_call:
# Allow manual triggering
workflow_dispatch:
inputs:
mcp_publisher_version:
description: 'MCP Publisher version to use'
required: false
type: string
default: '${{ env.DEFAULT_MCP_PUBLISHER_VERSION }}'
dry_run:
description: 'Run in dry-run mode (install and login only, no publishing)'
required: false
type: boolean
default: true
# Trigger dry-run on changes to this workflow file
pull_request:
paths:
- '.github/workflows/publish-mcp-registry.yml'
branches:
- main

permissions:
id-token: write # Required for login via github-oidc
contents: read

jobs:
publish-mcp-registry:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Install MCP Publisher
run: |
MCP_PUBLISHER_VERSION="${{ inputs.mcp_publisher_version || env.DEFAULT_MCP_PUBLISHER_VERSION }}"
MCP_PUBLISHER_OS_ARCH="$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')"
MCP_PUBLISHER_DOWNLOAD_URL="https://github.com/modelcontextprotocol/registry/releases/download/${MCP_PUBLISHER_VERSION}/mcp-publisher_${MCP_PUBLISHER_OS_ARCH}.tar.gz"
curl -L "${MCP_PUBLISHER_DOWNLOAD_URL}" | tar xz mcp-publisher
- name: Login to MCP Registry
run: ./mcp-publisher login github-oidc
- name: Publish to MCP Registry
if: ${{ inputs.dry_run != true && github.event_name != 'pull_request' }}
run: ./mcp-publisher publish
5 changes: 5 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,8 @@ jobs:
mv package.json.bak package.json
- name: Publish to npm
run: npm publish --access public

publish-mcp-registry:
needs: [pull-request, publish-package]
if: ${{needs.pull-request.outputs.releases_created && toJson(fromJson(needs.pull-request.outputs.paths_released)) != '[]'}}
uses: ./.github/workflows/publish-mcp-registry.yml
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# UI5 MCP Server

A [Model Context Protocol](https://modelcontextprotocol.io/) server for UI5 development.
A [Model Context Protocol](https://modelcontextprotocol.io/) server for UI5 application development.

[![OpenUI5 Community Slack (#tooling channel)](https://img.shields.io/badge/slack-join-44cc11.svg)](https://ui5-slack-invite.cfapps.eu10.hana.ondemand.com/)
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.1%20adopted-ff69b4.svg)](https://github.com/UI5/mcp-server?tab=coc-ov-file#readme)
Expand Down Expand Up @@ -95,7 +95,7 @@ The UI5 MCP server can be configured using the following environment variables.
* Description: Set to any value to disable [resources](https://modelcontextprotocol.io/specification/2025-06-18/server/resources) in the MCP server responses. This is useful for [clients that do not support resources](https://modelcontextprotocol.io/clients), such as Cursor or the Gemini CLI.
* **`UI5_LOG_LVL`**:
* Default Value: `info`
* Description: Internal [log level](https://sap.github.io/ui5-tooling/stable/pages/Troubleshooting/#changing-the-log-level): `silent`, `error`, `warn`, `info`, `perf`, `verbose`, `silly`
* Description: Internal [log level](https://ui5.github.io/cli/stable/pages/Troubleshooting/#changing-the-log-level): `silent`, `error`, `warn`, `info`, `perf`, `verbose`, `silly`
* **`UI5_DATA_DIR`**:
* Default Value: The `.ui5` directory in the user's home directory
* Description: Directory where the MCP server stores its data, such as cached API references
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@ui5/mcp-server",
"version": "0.1.3",
"description": "A MCP server for UI5",
"description": "MCP server for UI5 application development",
"author": {
"name": "SAP SE",
"email": "[email protected]",
Expand All @@ -25,6 +25,7 @@
"bin": {
"ui5mcp": "bin/ui5mcp.js"
},
"mcpName": "io.github.UI5/mcp-server",
"type": "module",
"scripts": {
"start": "tsx src/cli.ts",
Expand Down
9 changes: 8 additions & 1 deletion release-please-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,13 @@
"hidden": true
}
]
}
},
"extra-files": [
{
"type": "json",
"path": "server.json",
"jsonpath": "$..version"
}
]
}
}
63 changes: 63 additions & 0 deletions server.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
"name": "io.github.UI5/mcp-server",
"description": "MCP server for UI5 application development",
"repository": {
"url": "https://github.com/UI5/mcp-server",
"source": "github"
},
"version": "0.1.3",
"packages": [
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "@ui5/mcp-server",
"version": "0.1.3",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"default": "localhost, services.odata.org",
"description": "A comma-separated list of domains that are allowed to be used in the 'oDataV4Url' parameter of the 'create_ui5_app' tool, for example: 'localhost, example.com, sub.example.com'. Set to an empty string to allow any domains. For wildcard subdomains, prefix the domain with a dot: '.example.com'. This will match 'www.example.com' but not 'example.com'.",
"isRequired": false,
"format": "string",
"isSecret": false,
"name": "UI5_MCP_SERVER_ALLOWED_ODATA_DOMAINS"
},
{
"default": "false",
"description": "Set to any value to disable structured content in the MCP server responses.",
"isRequired": false,
"format": "boolean",
"isSecret": false,
"name": "UI5_MCP_SERVER_RESPONSE_NO_STRUCTURED_CONTENT"
},
{
"default": "false",
"description": "Set to any value to disable resources in the MCP server responses, see https://modelcontextprotocol.io/specification/2025-06-18/server/resource. This is useful for clients that do not support resources, see https://modelcontextprotocol.io/clients, such as Cursor or the Gemini CLI.",
"isRequired": false,
"format": "string",
"isSecret": false,
"name": "UI5_MCP_SERVER_RESPONSE_NO_RESOURCES"
},
{
"default": "info",
"description": "Internal log level (https://ui5.github.io/cli/stable/pages/Troubleshooting/#changing-the-log-level): 'silent', 'error', 'warn', 'info', 'perf', 'verbose' or 'silly'",
"isRequired": false,
"format": "string",
"isSecret": false,
"name": "UI5_LOG_LVL"
},
{
"default": "The '.ui5' directory in the user's home directory",
"description": "Directory where the MCP server stores its data, such as cached API references.",
"isRequired": false,
"format": "string",
"isSecret": false,
"name": "UI5_DATA_DIR"
}
]
}
]
}
Loading