ALSO Cloud Marketplace MCP Server
MCP server exposing ALSO Cloud Marketplace Simple API so AI assistants can query and manage marketplace account data.
Discover marketplaces and API endpoints, and validate/clear sessions.
Find/get companies by name, account ID, or VAT; list resellers, departments, and users.
List and inspect subscriptions in compact/full form, including addons, possible services, and subscription fields.
Run reports and retrieve latest, period, preview, and aggregation invoices.
Browse owned marketplaces, marketplace services, service information, security roles, credit limits, and special deals.
Create/update companies, resellers, departments, users, and subscriptions; configure renewals and upgrades.
Execute account custom actions, retry failed provisioning, set credit limits, approve/decline credit-check orders, and set special deals.
Use api_request as an authenticated escape hatch for other Simple API calls, including destructive operations deliberately not exposed as dedicated tools.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ALSO Cloud Marketplace MCP Server List all companies under parent 12345"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ALSO Cloud Marketplace MCP
MCP-Server für die ALSO Cloud Marketplace Simple API — damit KI-Assistenten (Cursor, Claude, Gemini CLI, OpenAI Codex, …) direkt auf Companies, Subscriptions, Users, Invoices usw. zugreifen können.
Protokoll | Model Context Protocol (stdio) |
API | |
Stack | TypeScript / Node.js 20+ |
SDK-Library | go-also-cloud-wrapper (gleiche Auth & Marketplaces) |
Schnellstart
git clone https://github.com/pitwch/also-cloud-marketplace-mcp.git
cd also-cloud-marketplace-mcp
npm install
npm run buildBenötigte Umgebungsvariablen:
Variable | Beispiel | Pflicht |
|
| ja |
|
| ja |
|
| ja |
|
| nein |
|
| nein |
|
| nein (Default-Parent für Namenssuche) |
ALSO_CLOUD_MARKETPLACE akzeptiert eine volle URL oder einen Country-Key:Switzerland, Germany, Austria, Debug, …
Hinweis: 2FA
ALSO Cloud Marketplace-Accounts haben standardmässig 2FA aktiviert. Die Simple API und dieses MCP unterstützen nur Login mit Benutzername und Passwort — 2FA funktioniert damit nicht. Für die API-/MCP-Nutzung muss 2FA für den betreffenden Account über das ALSO Supportportal deaktiviert werden (Support-Anfrage).
Related MCP server: SMB AI Command Platform MCP Server
Installation in Clients
Überall gilt: Server lokal starten (stdio), Credentials als env setzen.
Pfad unten durch deinen Clone ersetzen, z. B. C:/DEV/also-cloud-marketplace-mcp oder /home/you/also-cloud-marketplace-mcp.
Empfohlene Variante (gebaut)
command: node
args: [<REPO>/dist/index.js]Alternative (ohne Build, via tsx)
command: npx
args: [tsx, <REPO>/src/index.ts]Voraussetzung: zuvor npm install im Repo.
Cursor
Settings → MCP → Add new MCP server (oder
mcp.jsonbearbeiten).Eintrag hinzufügen:
{
"mcpServers": {
"also-cloud": {
"command": "node",
"args": ["C:/DEV/also-cloud-marketplace-mcp/dist/index.js"],
"env": {
"ALSO_CLOUD_MARKETPLACE": "Switzerland",
"ALSO_CLOUDUSER": "you@example.com",
"ALSO_CLOUDPW": "your-password"
}
}
}
}Server aktivieren / Cursor neu laden.
Im Chat Tools von
also-cloudnutzen, z. B. „Liste Companies unter Parent 12345“.
Claude Desktop
Config öffnen: Settings → Developer → Edit Config
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Gleichen
mcpServers-Block wie bei Cursor einfügen.Claude Desktop vollständig neu starten.
Im Chat das Hammer-/Tools-Icon prüfen —
also-cloudsollte erscheinen.
Claude Code (CLI)
claude mcp add also-cloud --env ALSO_CLOUD_MARKETPLACE=Switzerland --env ALSO_CLOUDUSER=you@example.com --env ALSO_CLOUDPW=secret -- node /path/to/also-cloud-marketplace-mcp/dist/index.jsPrüfen:
claude mcp listGemini CLI
Config in ~/.gemini/settings.json (oder projektbezogen .gemini/settings.json):
{
"mcpServers": {
"also-cloud": {
"command": "node",
"args": ["/path/to/also-cloud-marketplace-mcp/dist/index.js"],
"env": {
"ALSO_CLOUD_MARKETPLACE": "Switzerland",
"ALSO_CLOUDUSER": "you@example.com",
"ALSO_CLOUDPW": "your-password"
}
}
}
}Oder per CLI:
gemini mcp add also-cloud --env ALSO_CLOUD_MARKETPLACE=Switzerland --env ALSO_CLOUDUSER=you@example.com --env ALSO_CLOUDPW=secret -- node /path/to/also-cloud-marketplace-mcp/dist/index.jsDocs: MCP servers with Gemini CLI
OpenAI — Codex CLI / ChatGPT Desktop / IDE
Codex nutzt TOML (~/.codex/config.toml), geteilt mit ChatGPT Desktop & Codex-IDE:
[mcp_servers.also-cloud]
command = "node"
args = ["/path/to/also-cloud-marketplace-mcp/dist/index.js"]
[mcp_servers.also-cloud.env]
ALSO_CLOUD_MARKETPLACE = "Switzerland"
ALSO_CLOUDUSER = "you@example.com"
ALSO_CLOUDPW = "your-password"Oder:
codex mcp add also-cloud \
--env ALSO_CLOUD_MARKETPLACE=Switzerland \
--env ALSO_CLOUDUSER=you@example.com \
--env ALSO_CLOUDPW=secret \
-- node /path/to/also-cloud-marketplace-mcp/dist/index.js
codex mcp listIn der TUI: /mcp zeigt verbundene Server.
ChatGPT im Browser: lokales stdio geht hier nicht nativ — siehe unten Browser (MCP SuperAssistant). Für natives MCP: Codex CLI / ChatGPT Desktop.
Docs: OpenAI MCP / Codex
VS Code (GitHub Copilot / MCP)
Je nach Extension analog Cursor: MCP-Server mit command/args/env eintragen.
Pfad auf dist/index.js zeigen und Credentials setzen.
Browser (ChatGPT, Gemini, Perplexity, …) — MCP SuperAssistant
Für Web-Clients ohne natives lokales MCP (z. B. ChatGPT, Gemini, Perplexity, Grok, Google AI Studio) eignet sich MCP SuperAssistant (Browser-Extension + lokaler Proxy).
Extension installieren: Chrome Web Store (auch Firefox / Chromium-Browser). Docs: Installation.
config.jsonanlegen (gleicheralso-cloud-Block wie bei Cursor):
{
"mcpServers": {
"also-cloud": {
"command": "node",
"args": ["C:/DEV/also-cloud-marketplace-mcp/dist/index.js"],
"env": {
"ALSO_CLOUD_MARKETPLACE": "Switzerland",
"ALSO_CLOUDUSER": "you@example.com",
"ALSO_CLOUDPW": "your-password"
}
}
}
}Alternativ eine bestehende Cursor-/Claude-Config nutzen.
Proxy starten (im Terminal, Repo oder Ordner mit der Config):
npx -y @srbhptl39/mcp-superassistant-proxy@latest --config ./config.json --outputTransport sse Default-URL: http://localhost:3006/sse
ChatGPT / Gemini / … öffnen → MCP-Sidebar → Server-Status → Connect auf
http://localhost:3006/sse→ MCP-Instructions-Prompt per Insert oder Attach in den Chat legen → Tools nutzen.
Verwendung (Beispiele)
Nach der Anbindung kannst du natürlichsprachlich fragen:
„Welche Subscriptions hat die Demo AG aktiv?“ →
list_company_subscriptions(companyName, ggf.parentAccountId/ Env)„Alle Azure-/VM-Subscriptions / Optimierung RI“ →
list_azure_subscriptions„Finde Company Demo“ →
find_companies„Zeig Companies unter Parent 523525“ →
get_companies„Latest Invoices für März 2026“ →
get_latest_invoices_for_period„Lege einen User unter Company X an“ →
create_user(Write)
Tipp: Für Firmen-/Abo-Fragen nicht über Reports oder Marketplaces gehen — die Workflow-Tools sind dafür da. Subscription-Tools liefern standardmässig kompakte Antworten; Rohdaten nur mit fullDetail=true. Für Gemini CLI siehe GEMINI.md (nach MCP-Update CLI neu starten).
Discovery aller API-Endpoints: Tool list_api_endpoints.
Tools (Überblick)
~58 Tools. Vollständige Liste inkl. Risiko-Flags: Tool list_api_endpoints.
Empfohlene Workflows
Tool | Zweck |
| Firma nach Name unter Parent suchen |
| Aktive/kompakte Subscriptions einer Firma (Name oder Account-ID) |
| Azure Plan / RI / Savings Plan über alle Endkunden (Portfolio) |
Session & Meta
Tool | Zweck |
| Country-Keys → Base-URLs (ohne Login) |
| Katalog der Simple-API |
| Session prüfen / verwerfen |
| Escape Hatch (u. a. destruktive Endpoints) |
Lesen
Bereich | Tools |
Company / Reseller / Dept / User |
|
Subscriptions |
|
Catalog |
|
Billing |
|
Sonst |
|
Schreiben (gezielt freigeschaltet)
Bereich | Tools |
Accounts |
|
Subscriptions |
|
Actions |
|
Upgrade / Renew |
|
Credit / Deal |
|
Nur über api_request (destruktiv / selten)
TerminateAccount, DeleteMarketplace*, DeleteSpecialDeal, Marketplace-Create/Delete, …
→ bewusst kein eigenes Tool, damit die KI sie nicht versehentlich aufruft.
Entwicklung
npm run dev # stdio via tsx
npm run typecheck
npm run build
npm start # node dist/index.jsWichtig: Auf stdout nur MCP-JSON-RPC schreiben — Logs nur mit console.error.
Links
Go-Wrapper: https://github.com/pitwch/go-also-cloud-wrapper
Swagger: https://app.swaggerhub.com/apis-docs/MarketplaceSimpleAPI/MarketplaceSimpleAPI/1.0.0
License
MIT © Pedrett IT+Web AG
Available Tools
60 toolsapi_requestAPI requestA
Generic authenticated Simple API call. Prefer dedicated tools when available. Use this for destructive ops (TerminateAccount, DeleteMarketplace*, DeleteSpecialDeal) and rare endpoints. ALSO Simple API is POST-only for almost all operations.
Inputs: endpoint (required), body, query, method.
approve_credit_check_orderApprove credit check orderA
WRITE: ApproveCreditCheckOrder. Pass the order object (typically from list_credit_check_orders_for_approval), usually including RequestId and Comment.
Inputs: order (required).
clear_sessionClear sessionA
Drop the cached session token (forces fresh login on next call).
Inputs: no named parameters.
configure_subscription_renewConfigure subscription renewB
WRITE: ConfigureSubscriptionRenew — stores renew field values applied at subscription end date.
Inputs: accountId (required), fieldValues (required).
create_companyCreate companyB
WRITE: CreateCompany. Pass companyAccount object (parent, name, address, … per Simple API). Prefer get_companies afterwards to verify.
Inputs: companyAccount (required).
create_departmentCreate departmentC
WRITE: CreateDepartment. Pass departmentAccount object.
Inputs: departmentAccount (required).
create_resellerCreate resellerC
WRITE: CreateReseller. Pass resellerAccount object.
Inputs: resellerAccount (required).
create_subscriptionCreate subscriptionC
WRITE: CreateSubscription. Use get_fields_for_service + validate_subscription_fields first.
Inputs: subscriptionAccount (required).
create_userCreate userC
WRITE: CreateUser under selected parent. Pass userAccount object.
Inputs: userAccount (required).
decline_credit_check_orderDecline credit check orderB
WRITE: DeclineCreditCheckOrder. Pass the order object (typically from list_credit_check_orders_for_approval).
Inputs: order (required).
execute_account_custom_actionExecute account custom actionC
WRITE: ExecuteAccountCustomAction — runs a named custom action on a subscription.
Inputs: action (required), subscriptionAccount (required).
execute_reportExecute reportC
ExecuteReport — run a named report with parameters.
Inputs: reportName (required), columns, parameters.
execute_subscription_upgradeExecute subscription upgradeC
WRITE: ExecuteSubscriptionUpgrade — provisions upgrade to targetProductName.
Inputs: fieldValues (required), sourceAccountId (required), targetProductName (required), targetAccountId, +1 more.
find_companiesFind companies by nameARead-only
PREFERRED for locating a company by name. Calls GetCompanies under parentAccountId (or ALSO_CLOUD_PARENT_ACCOUNT_ID) and filters by CompanyName. Do NOT use get_reports / execute_report to search companies.
Inputs: name (required), parentAccountId.
get_account_custom_actionsGet account custom actionsCRead-only
GetAccountCustomActionsWithFields — list custom actions for a subscription.
Inputs: accountId (required).
get_available_services_for_marketplaceGet available marketplace servicesD
GetAvailableServicesForMarketplace.
Inputs: marketplaceId (required), filters.
get_companiesGet companiesA
GetCompanies — all first-level companies under parentAccountId. To search by name prefer find_companies.
Inputs: parentAccountId (required).
get_companyGet companyC
GetCompany — company by accountId.
Inputs: accountId (required).
get_company_by_vat_idGet company by VAT IDD
GetCompanyByVatId.
Inputs: vatId (required).
get_credit_limitGet credit limitC
GetCreditLimit for company accountId.
Inputs: accountId (required).
get_departmentGet departmentC
GetDepartment — department by accountId.
Inputs: accountId (required).
get_departmentsGet departmentsC
GetDepartments — departments under parentAccountId.
Inputs: parentAccountId (required).
get_fields_for_serviceGet fields for serviceARead-only
GetFieldsForService — field definitions needed before CreateSubscription / ValidateFields.
Inputs: productName (required), parentAccountId (required), secondaryParentId.
get_invoice_aggregation_reportGet invoice aggregation reportD
GetInvoiceAggregationReport for year/month.
Inputs: year, month, resellerContext.
get_latest_invoicesGet latest invoicesC
GetLatestInvoices for the authenticated account.
Inputs: resellerContext, groupByDepartments.
get_latest_invoices_for_periodGet invoices for periodD
GetLatestInvoicesForPeriod — invoices for year/month.
Inputs: year (required), month (required), resellerContext, groupByDepartments.
get_owned_marketplacesGet owned marketplacesB
GetMarketplaces — marketplaces owned by the company (API).
Inputs: no named parameters.
get_possible_services_for_parentGet possible services for parentC
GetPossibleServicesForParent — services a parent can subscribe to.
Inputs: parentAccountId (required).
get_possible_services_for_upgradeGet possible upgrade servicesCRead-only
GetPossibleServicesForUpgrade for accountId.
Inputs: accountId (required).
get_preview_invoicesGet preview invoicesC
GetPreviewInvoices — current open billing month preview.
Inputs: resellerContext, groupByDepartments.
get_reportsGet reportsA
GetReports — list available report names. Do NOT use this to find companies or subscriptions; use find_companies / list_company_subscriptions.
Inputs: no named parameters.
get_resellerGet resellerC
GetReseller — reseller by accountId.
Inputs: accountId (required).
get_reseller_by_vat_idGet reseller by VAT IDD
GetResellerByVatId.
Inputs: vatId (required).
get_resellersGet resellersC
GetResellers — resellers under parentAccountId.
Inputs: parentAccountId (required).
get_security_rolesGet security rolesC
GetSecurityRoles for company/reseller accountId.
Inputs: accountId.
get_service_informationGet service informationC
GetServiceInformation by serviceName.
Inputs: serviceName (required).
get_special_dealGet special dealC
GetSpecialDeal discounts for accountId.
Inputs: accountId (required).
get_subscriptionGet subscriptionB
GetSubscription by accountId. Prefer list_company_subscriptions for company-wide lists. compact=true by default.
Inputs: accountId (required), compact, resellerContext.
get_subscription_fields_for_renewGet subscription fields for renewCRead-only
GetSubscriptionFieldsForRenew for accountId.
Inputs: accountId (required).
get_subscription_fields_for_upgradeGet subscription fields for upgradeCRead-only
GetSubscriptionFieldsForUpgrade for accountId + targetProductName.
Inputs: accountId (required), targetProductName (required).
get_subscriptionsGet subscriptionsA
GetSubscriptions under parentAccountId. For "subscriptions of company X by name" prefer list_company_subscriptions. compact=true by default (drops huge Fields arrays).
Inputs: parentAccountId (required), compact, activeOnly, resellerContext, +1 more.
get_subscription_with_addonsGet subscription with addonsC
GetSubscriptionWithAddons — full detail for one subscription including addons.
Inputs: accountId (required), resellerContext.
get_userGet userC
GetUser — user by accountId.
Inputs: accountId (required).
get_usersGet usersC
GetUsers — users under companyAccountId.
Inputs: companyAccountId (required).
list_api_endpointsList Simple API endpointsB
Catalog of MarketplaceSimpleAPI 1.0.0 endpoints with tags, summaries, dedicated MCP tool names (if any), and write/destructive risk flags.
Inputs: tag, onlyReadable.
list_company_subscriptionsList company subscriptions (compact)ARead-only
PREFERRED for "which subscriptions does company X have?". Resolves company by accountId or name (via find_companies), then GetSubscriptions. Returns a compact summary (no huge Fields arrays). Use activeOnly=true (default) for active services only.
Inputs: accountId, activeOnly, companyName, parentAccountId, +1 more.
list_credit_check_orders_for_approvalList credit check ordersBRead-only
ListCreditCheckOrdersForApproval — pending credit check orders.
Inputs: no named parameters.
list_marketplacesList country marketplace URLsA
Static country keys → marketplace base URLs (Switzerland, Germany, Debug, …). No credentials required. For API-owned marketplaces use get_owned_marketplaces.
Inputs: no named parameters.
list_marketplace_servicesList marketplace servicesD
ListMarketplaceServices for marketplaceId.
Inputs: marketplaceId (required).
reset_default_renew_valuesReset default renew valuesB
WRITE: ResetDefaultRenewValues — clears saved renew config for accountId.
Inputs: accountId (required).
retry_last_failed_provisioningRetry last failed provisioningC
WRITE: RetryLastFailedProvisioning for a subscription accountId.
Inputs: accountId (required).
set_credit_limitSet credit limitA
WRITE: SetCreditLimit. Omit limit (or leave empty per API) to remove the credit limit; comment is required.
Inputs: comment (required), accountId (required), limit.
set_special_dealSet special dealB
WRITE: SetSpecialDeal — create/update special deal discount for accountId.
Inputs: accountId (required), specialDeal (required).
update_companyUpdate companyB
WRITE: UpdateCompany. Pass company object with accountId and fields to change.
Inputs: company (required).
update_departmentUpdate departmentB
WRITE: UpdateDepartment. Pass department object with accountId and fields to change.
Inputs: department (required).
update_resellerUpdate resellerC
WRITE: UpdateReseller. Pass reseller object with accountId and fields to change.
Inputs: reseller (required).
update_subscriptionUpdate subscriptionC
WRITE: UpdateSubscription. Pass subscription object with accountId and field changes.
Inputs: subscription (required).
update_userUpdate userC
WRITE: UpdateUser. Pass user object with accountId and settings to change.
Inputs: user (required).
validate_sessionValidate sessionA
Optional health check (PingPong). Login is automatic on other tools — do not call this before every query.
Inputs: no named parameters.
validate_subscription_fieldsValidate subscription fieldsA
WRITE-ish: ValidateFields — validates subscriptionAccount before create. Does not provision.
Inputs: subscriptionAccount (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 60 tools
The set has many overlapping retrieval tools, especially get_company/get_companies/find_companies, get_subscription/get_subscriptions/list_company_subscriptions, and multiple marketplace/service lookup tools. Descriptions do provide preferred-tool guidance, which reduces confusion, but an agent still has to carefully choose among several near-duplicates.
Most names are snake_case verb_noun, but the set mixes get_, list_, find_, create_, update_, execute_, validate_, set_, reset_, approve_, decline_, and a vague api_request. The pattern is readable but not predictable enough for a 60-tool surface.
Sixty tools is very heavy for a marketplace API surface and includes many specialized one-off operations. While the domain is broad, the count exceeds what an agent can reliably navigate without strong grouping or consolidation.
The surface covers substantial lifecycle operations for companies, users, departments, resellers, subscriptions, invoices, reports, credit, marketplaces, and custom actions. Some destructive and rare operations are only available through api_request, so coverage is broad but not fully self-contained.
Related MCP Connectors
Find and call verified APIs from any AI assistant, with free trial calls and previewed writes.
Query your books, company data, business health, and ship invoices from your AI assistant.
Ask your Quickbase apps in plain language. Read-only by default; writes need human approval.
Read-only by architecture: ask AI about QuickBooks, Xero and NetSuite, across every entity.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with the Nimble REST API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.14,856 npmApache 2.0- AlicenseAqualityDmaintenanceEnables AI assistants to interact with SMB platform APIs for querying business data, managing tasks, accessing connectors, dashboards, and monitoring security.16MIT

Schematic MCP Serverofficial
AlicenseNot gradedqualityFmaintenanceEnables AI assistants to manage billing, plans, features, and entitlements via Schematic. Supports company lookup, plan management, feature creation, and override configuration through natural language.56 npm2MIT
Alternative Payments MCPofficial
AlicenseNot gradedqualityBmaintenanceProvides AI assistants with read and safe-write access to Alternative Payments customers, invoices, payment requests, transactions, payouts, and webhooks without directly moving money.Apache 2.0