Skip to main content
Glama

TeamOnly MCP server

Deploy the internal apps you build with AI behind your company login, from Claude Code, Cursor, Claude Desktop, VS Code, Windsurf or any MCP client.

Say "deploy this on TeamOnly" and your agent puts the app online at https://<app>.<company>.teamonly.app. Only people with an email at your company can open it: they sign in with their work Google or Microsoft account, or a code sent to their work email. The app gets its own database, file storage and secrets, and can read and add rows in Google Sheets your team shares with it. Free for 14 days, no card.

Website: teamonly.dev/mcp · npm: teamonly · MCP Registry: dev.teamonly/teamonly

Install

The server is part of the teamonly npm package and runs on your computer (deploying reads your project's files). It needs Node.js 20 or newer (22 for logs).

Claude Code

claude mcp add teamonly -- npx -y teamonly mcp

Cursor: Add to Cursor, or put this in ~/.cursor/mcp.json. Claude Desktop (claude_desktop_config.json) and Windsurf take the same:

{
  "mcpServers": {
    "teamonly": { "command": "npx", "args": ["-y", "teamonly", "mcp"] }
  }
}

VS Code

code --add-mcp '{"name":"teamonly","command":"npx","args":["-y","teamonly","mcp"]}'

Related MCP server: CreateOS MCP

Tools

Tool

What it does

get_app_rules

The rules for an app that deploys: React + Vite front end, Hono API on one Cloudflare Worker, D1 database, and how to read the signed-in person. The agent reads this before writing code.

init

Starts an app in an empty folder (or from a template), or adds TeamOnly to an app you already have.

deploy

Builds the app and puts it online behind your company login.

versions

Lists the app's versions: when, who deployed each, and which is live.

rollback

Puts the previous version (or a chosen one) back live in seconds.

pull

Downloads a deployed app's code into a new folder, so you can change an app whose code isn't on your computer. Owner or admin.

status

Who is signed in, the plan, and every app with who can open it.

logs

Watches the live app's requests, console.log output and errors for 5 to 60 seconds.

access

Who can open the app: everyone at the company, or a list of people.

roles

Roles people have inside the app, like approver or finance.

set_secret

Saves an API key or password for the app.

sign_in

Signs in with a work email and the 6-digit code TeamOnly emails.

start_trial

Starts the free 14-day trial for a company new to TeamOnly.

subscribe

Returns a payment link for a paid plan.

delete_app

Deletes the app and its data. Needs the app name to confirm.

How sign-in works

There are no API keys to paste. The agent asks for your work email, calls sign_in, and asks you for the code from the email. If your company is new to TeamOnly it offers the free trial. The sign-in is saved on your computer in ~/.teamonly, shared with the npx teamonly command line tool.

Example

Build a tool where people submit expenses and their manager approves them. Deploy it on TeamOnly so only people at our company can open it.

Templates

Five ready-made internal tools (expense approval, customer lookup, inventory tracker, request form, ask the docs): sohelsd/teamonly-templates.

Source

src/mcp.ts is the server. It ships inside the teamonly npm package next to the command line tool it runs: each tool call runs the matching teamonly command without a terminal and returns its output, so the MCP tools and the CLI always behave the same. This copy is updated with each release. The Dockerfile runs the published package.

License

This repository is MIT licensed. The teamonly npm package it runs has its own license.

Support

Email hello@teamonly.dev.

Available Tools

12 tools
accessWho can open the appB

Shows or changes who can open the app. "show" (default), "everyone" (everyone at the company), "only" (only these people and the owner), "add" or "remove" people on that list.

Inputs: action, emails, directory.

delete_appDelete the appA
Destructive

Deletes the live app with its database, files and secrets. It cannot be undone. Only call this when the person asked for it, and pass the app name (from teamonly.json) as "confirm".

Inputs: confirm (required), directory.

deployDeploy the appA

Builds the app in "directory" and puts it online at https://..teamonly.app, behind the company login. Takes up to a minute. If the person is not signed in, the result says what to do (use sign_in).

Inputs: directory.

get_app_rulesHow to write a TeamOnly appA
Read-only

The rules for writing an app that deploys on TeamOnly: the supported stack, how to read the signed-in person, the database, files, secrets, email to coworkers, scheduled jobs and roles. Read this before writing or changing app code.

Inputs: no named parameters.

initSet up a folder for TeamOnlyA

In an empty folder, creates a starter app (or a ready-made one with "template"). In a folder with an existing app, adds teamonly.json and the TeamOnly instructions for Claude Code, Cursor and other AI tools. Leave "template" out to see the template list in the result.

Inputs: template, directory.

logsWatch the live appA
Read-only

Collects the live app's requests, console.log output and errors for a few seconds and returns them. Ask the person to open the app (or trigger the problem) while it runs.

Inputs: seconds, directory.

rolesRoles inside the appB

Shows or changes the roles people have inside the app (the app reads them as ctx.user.roles), such as approver or finance. "show" (default), "add" or "remove" a role for some people.

Inputs: role, action, emails, directory.

set_secretSave a secretA
Idempotent

Saves a secret (API key, password) for the deployed app. The app reads it with ctx.secrets.get(NAME). Names are UPPER_SNAKE_CASE. Ask the person for the value; never put it in code.

Inputs: name (required), value (required), directory.

sign_inSign in with a work emailA

Signs in to TeamOnly on this computer. Call it with "email" first: TeamOnly emails that address a 6-digit code. Ask the person for the code, then call again with "code". If their company is new, the result says so; then use start_trial.

Inputs: code, email.

start_trialStart a free 14-day trialA

For a company that doesn't have TeamOnly yet, after sign_in verified the email: starts a free 14-day trial (one builder, up to 3 apps, no card).

Inputs: company.

statusWho is signed in, plan and appsA
Read-only

Shows who is signed in to TeamOnly on this computer, the company and plan (with free trial days left), and every app with its address, who can open it and when it was last deployed.

Inputs: no named parameters.

subscribePick a paid planA

Starts paying for TeamOnly (also ends a free trial): opens a payment page in the person's browser and returns its link. The person pays there; call subscribe again afterwards to finish. Plans: builder ($19/mo, one builder, 3 apps), team ($249/mo, unlimited apps and builders), business ($899/mo, adds SSO and audit logs).

Inputs: plan (required), company.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 12 tools

    Disambiguation5/5

    Each tool targets a distinct action or resource: app setup, deployment, logs, access control, roles, secrets, authentication, billing, and deletion. Potentially similar pairs like get_app_rules vs init and access vs roles are clearly separated by their descriptions.

    Naming Consistency3/5

    The names consistently use snake_case, but the naming convention itself mixes bare verbs (deploy, init, subscribe), noun-only names (status, logs, access, roles), and verb_noun forms (get_app_rules, set_secret, sign_in). It remains readable, but there is no predictable pattern.

    Tool Count5/5

    Twelve tools is well-scoped for a platform covering app creation, deployment, logs, access, roles, secrets, authentication, billing, and deletion. Each tool has a clear role in the workflow and the set does not feel bloated.

    Completeness4/5

    The surface covers the core app lifecycle: init/create, deploy, status, logs, access, roles, secrets, sign-in, trial/subscription, and delete. Minor gaps remain, such as listing or deleting secrets, cancelling a subscription, and pausing or updating an app beyond redeploying.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      AppCrane is the self-hosted home for the apps your AI builds and your AI deploys. It exposes 35 appcrane_* MCP tools so any MCP client (Claude Code, Cursor, Codex) can run the full deploy lifecycle — create app, deploy to sandbox/production, manage secrets, stream logs, list releases, roll back — every action bound to a user and audit-logged. Enterprise SSO (SAML/OIDC/SCIM), Docker isolation per a
      7
      AGPL 3.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI assistants to build, deploy, and inspect apps through a hosted backend service, including reading platform docs, deploying raw source, inspecting logs, verifying live pages in browsers, and managing project tasks.
      MIT