Skip to content
Open
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
19 changes: 15 additions & 4 deletions .github/workflows/ci.yaml → .github/workflows/ci-docs-mcp.yaml
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
name: CI
name: CI Docs MCP

on:
push:
branches:
- main
- stage
- dev
paths:
- 'apps/docs-mcp/**'
- '.github/workflows/ci-docs-mcp.yaml'
pull_request:
branches:
- main
paths:
- 'apps/docs-mcp/**'
- '.github/workflows/ci-docs-mcp.yaml'

permissions:
contents: read

defaults:
run:
working-directory: ./apps/docs-mcp

jobs:
lint:
name: Lint
name: Lint and Typecheck
runs-on: ubuntu-latest
steps:
- name: Checkout code
Expand All @@ -24,14 +34,15 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version-file: .nvmrc
node-version: '22'
cache: npm
cache-dependency-path: apps/docs-mcp/package.json

- name: Setup Biome CLI
uses: biomejs/setup-biome@29711cbb52afee00eb13aeb30636592f9edc0088 # v2.7.0

- name: Install dependencies
run: npm ci
run: npm install

- name: Build
run: npm run build
Expand Down
51 changes: 51 additions & 0 deletions .github/workflows/ci-sumup-mcp.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: CI SumUp MCP

on:
push:
branches:
- main
- stage
- dev
paths:
- 'apps/sumup-mcp/**'
- '.github/workflows/ci-sumup-mcp.yaml'
pull_request:
branches:
- main
paths:
- 'apps/sumup-mcp/**'
- '.github/workflows/ci-sumup-mcp.yaml'

permissions:
contents: read

defaults:
run:
working-directory: ./apps/sumup-mcp

jobs:
lint:
name: Lint and Typecheck
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: '22'
cache: npm
cache-dependency-path: apps/sumup-mcp/package.json

- name: Setup Biome CLI
uses: biomejs/setup-biome@29711cbb52afee00eb13aeb30636592f9edc0088 # v2.7.0

- name: Install dependencies
run: npm install

- name: Build
run: npm run build

- name: Lint code
run: biome ci --diagnostic-level=error --reporter=github
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
name: Deploy
name: Deploy Docs MCP

on:
push:
branches:
- main
- stage
- dev
paths:
- 'apps/docs-mcp/**'
- '.github/workflows/deploy-docs-mcp.yaml'

permissions:
contents: read
deployments: write

concurrency:
group: deploy-${{ github.ref }}
group: deploy-docs-mcp-${{ github.ref }}
cancel-in-progress: true

defaults:
run:
working-directory: ./apps/docs-mcp

jobs:
deploy-live:
name: Deploy live
Expand All @@ -27,14 +34,15 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version-file: .nvmrc
node-version: '22'
cache: npm
cache-dependency-path: apps/docs-mcp/package.json

- name: Install dependencies
run: npm ci
run: npm install

- name: Deploy Worker
run: npx wrangler deploy --env live
run: npx wrangler deploy -c wrangler.jsonc --env live
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

Expand All @@ -49,14 +57,15 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version-file: .nvmrc
node-version: '22'
cache: npm
cache-dependency-path: apps/docs-mcp/package.json

- name: Install dependencies
run: npm ci
run: npm install

- name: Deploy Worker
run: npx wrangler deploy --env stage
run: npx wrangler deploy -c wrangler.jsonc --env stage
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

Expand All @@ -71,13 +80,14 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version-file: .nvmrc
node-version: '22'
cache: npm
cache-dependency-path: apps/docs-mcp/package.json

- name: Install dependencies
run: npm ci
run: npm install

- name: Deploy Worker
run: npx wrangler deploy --env dev
run: npx wrangler deploy -c wrangler.jsonc --env dev
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
93 changes: 93 additions & 0 deletions .github/workflows/deploy-sumup-mcp.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: Deploy SumUp MCP

on:
push:
branches:
- main
- stage
- dev
paths:
- 'apps/sumup-mcp/**'
- '.github/workflows/deploy-sumup-mcp.yaml'

permissions:
contents: read
deployments: write

concurrency:
group: deploy-sumup-mcp-${{ github.ref }}
cancel-in-progress: true

defaults:
run:
working-directory: ./apps/sumup-mcp

jobs:
deploy-live:
name: Deploy live
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: '22'
cache: npm
cache-dependency-path: apps/sumup-mcp/package.json

- name: Install dependencies
run: npm install

- name: Deploy Worker
run: npx wrangler deploy -c wrangler.jsonc --env live
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

deploy-stage:
name: Deploy stage
if: github.ref == 'refs/heads/stage'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: '22'
cache: npm
cache-dependency-path: apps/sumup-mcp/package.json

- name: Install dependencies
run: npm install

- name: Deploy Worker
run: npx wrangler deploy -c wrangler.jsonc --env stage
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

deploy-dev:
name: Deploy dev
if: github.ref == 'refs/heads/dev'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: '22'
cache: npm
cache-dependency-path: apps/sumup-mcp/package.json

- name: Install dependencies
run: npm install

- name: Deploy Worker
run: npx wrangler deploy -c wrangler.jsonc --env dev
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
7 changes: 5 additions & 2 deletions .github/workflows/publish-mcp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,20 @@
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version-file: .nvmrc
node-version: '22'
cache: npm
cache-dependency-path: apps/sumup-mcp/package.json

- name: Install dependencies
run: npm ci
run: npm install
working-directory: ./apps/sumup-mcp

- name: Build package
run: npm run build
working-directory: ./apps/sumup-mcp

- name: Install MCP Publisher
if: steps.publish.outputs.published == 'true'

Check failure on line 43 in .github/workflows/publish-mcp.yaml

View workflow job for this annotation

GitHub Actions / Lint

[actionlint] reported by reviewdog 🐶 property "publish" is not defined in object type {} [expression] Raw Output: e:.github/workflows/publish-mcp.yaml:43:13: property "publish" is not defined in object type {} [expression]
run: |
curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" -o mcp-publisher.tar.gz
tar xzf mcp-publisher.tar.gz mcp-publisher
Expand All @@ -45,9 +48,9 @@
chmod +x mcp-publisher

- name: Login to MCP Registry
if: steps.publish.outputs.published == 'true'

Check failure on line 51 in .github/workflows/publish-mcp.yaml

View workflow job for this annotation

GitHub Actions / Lint

[actionlint] reported by reviewdog 🐶 property "publish" is not defined in object type {} [expression] Raw Output: e:.github/workflows/publish-mcp.yaml:51:13: property "publish" is not defined in object type {} [expression]
run: ./mcp-publisher login github-oidc

- name: Publish to MCP Registry
if: steps.publish.outputs.published == 'true'

Check failure on line 55 in .github/workflows/publish-mcp.yaml

View workflow job for this annotation

GitHub Actions / Lint

[actionlint] reported by reviewdog 🐶 property "publish" is not defined in object type {} [expression] Raw Output: e:.github/workflows/publish-mcp.yaml:55:13: property "publish" is not defined in object type {} [expression]
run: ./mcp-publisher publish
21 changes: 14 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,31 @@
<div align="center">

# SumUp MCP Server
# SumUp MCP Servers

[![Documentation][docs-badge]](https://developer.sumup.com)
[![License](https://img.shields.io/github/license/sumup/sumup-ts)](./LICENSE)

</div>

SumUp's [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) server for interactions between large language models (LLMs) and SumUp APIs. The MCP server allows you to connect to SumUp's services from an MCP client (e.g. Cursor, Claude) and use natural language to work with your SumUp account.
SumUp's [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) servers for interactions between large language models (LLMs) and SumUp APIs/documentation.

## Apps layout

- `apps/sumup-mcp`: MCP server for SumUp API tools (`mcp.sumup.com`).
- `apps/docs-mcp`: MCP server for developer docs search via AutoRAG (`docs.mcp.sumup.com`).
- `server.json` (root): registry descriptor listing all MCP remotes.

## Getting started

From each app folder, install dependencies and run scripts:

```bash
npm install
npm run dev
cd apps/sumup-mcp && npm install && npm run dev
cd apps/docs-mcp && npm install && npm run dev
```

Every MCP request must include a SumUp API key through the `Authorization: Bearer <apiKey>` header. We currently don't support other authentication methods. The worker listens on `/mcp` for the Streamable HTTP transport and `/sse` for the legacy SSE transport.

You can get your API key from the [developer settings](https://me.sumup.com/settings/api-keys) in the SumUp Dashboard.
`mcp.sumup.com` requires a SumUp API key via `Authorization: Bearer <apiKey>`.
`docs.mcp.sumup.com` exposes `search_developer_docs` backed by Cloudflare AutoRAG.

## Using from an MCP client

Expand Down
34 changes: 34 additions & 0 deletions apps/docs-mcp/biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.14/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {
"ignoreUnknown": false
},
"formatter": {
"enabled": true,
"indentStyle": "tab"
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": {
"quoteStyle": "double"
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}
Loading
Loading