teamshare-server
teamshare
Your whole team uses AI coding assistants. None of them know what the others have been told.
teamshare fixes that. One person says "share with the team that the auth refactor lands Friday". Everyone else's assistant tells them at the start of their next session, and asks if they want the details. Saying yes or no counts as read — so you can always ask "who's seen this?" and get a real answer.
A server is already running. You never need its address. Everything below is either a slash command or a single copy-paste line.
Jump to your setup:
Every output block on this page is real, captured from a running server.
Part 1 — Claude Code
Step 1 · Install
/plugin marketplace add abdulgeek/teamshare
/plugin install teamshareIt asks for one thing: your personal token. Then trust the workspace when prompted, and restart Claude Code.
Don't have a token yet? Then you're the first one here — go to Step 2A.
If your team already uses teamshare, ask whoever set it up to run
/teamshare:invite your@email.com and send you the result. That's Step 2B.
Related MCP server: Project Memory MCP Server
Step 2A · You're setting up the team
One command — the org name only. Do not paste a signup secret.
/teamshare:create-team <org-name>create-team recovers the live signup secret on this machine (local terraform
state, a pin from a previous recover, or TEAMSHARE_INSTANCE_ID — never an
id shipped in the plugin). A freshly minted tss_… is not that secret
and the hosted server will reject it.
/teamshare:generate-secret is optional: it prints a copy of the live value
for a password manager. Use --new only when you are standing up a server
that does not exist yet.
teamshare create-team — success
Team: Platform (tm_6c772dbd6de4)
Server: https://54.90.22.249.sslip.io
Team token (shown once — this cannot be recovered later; save it in a password manager now):
ts_fb5bcb7f5bd6c1a04e7d…
Verifying the new token against the live server:
[OK] server reachable at https://54.90.22.249.sslip.io/health
[OK] https://54.90.22.249.sslip.io/members returned 200 (0 known email(s))Save that token in your password manager. It's also saved automatically to
~/.teamshare/admin.json, so you'll never type it again — but that file dies
with this laptop.
It's an admin token. It can invite people, remove them, and list them. It cannot read shares. So it can't log you in — which is why the next step matters.
Now invite everyone, starting with yourself
/teamshare:invite you@yourcompany.com "Your Name"teamshare invite — success
Invited: Sam <sam@acme.com>
Personal token for sam@acme.com (shown once — this cannot be recovered later; save it in a password manager now):
tsm_2a96b76e46df8c31b0…
Send this token privately to sam@acme.com only — never post it in a shared channel or thread with
others on the team. Whoever holds it can publish shares and record read receipts as this person.It also prints a ready-to-send message. DM it to that person — one per teammate, never a group channel.
Take your own token from that output and paste it into
/plugin configure teamshare@teamshare. Now you're on the board too.
Step 2B · You're joining a team
Your lead sends you a token starting with tsm_. Paste it into the install
prompt from Step 1. That's it — no address to look up, no file to edit, no git
setup.
Already installed and just need to change the token?
/plugin configure teamshare@teamshare.
Step 3 · Use it
Talk normally. You never type a tool name.
Share something:
/teamshare:share Auth middleware refactor lands Friday. Session validation
moves into middleware/auth.ts. Don't merge anything touching src/auth.Your assistant tightens it up, shows you, and publishes when you confirm:
{ "id": "shr_ddd81b0b4b92", "notified": 5 }Five teammates will see it at their next session start.
Shares are short on purpose. The server rejects anything longer: 200 characters for what changed, 300 for why it matters, 200 for what to do. That cap is why people keep reading them.
What your teammates see, before they type anything:
2 unread team share(s) published by teammates.
- id=shr_f7d71cb96ec3 | BLOCKING | from Dev | 2026-08-30T17:36:48.220Z
Database migration 0042 is irreversible.
- id=shr_ddd81b0b4b92 | BLOCKING | from Priya | 2026-08-30T17:36:48.202Z
Auth middleware refactor lands Friday.Their assistant asks if they want details. Yes shows the full note; no skips it. Either way it's marked read and won't nag them again.
And if they're already mid-session, they don't have to wait until tomorrow. Anyone with Claude Code open gets told on their next message:
teamshare: 1 new share from Priya (blocking)Their assistant mentions it in one line at the top of its reply and then carries on with whatever they actually asked — it won't hijack what they were doing. Details on request.
That check is throttled to once a minute, capped at 1.2 seconds, and silent on
failure, so it costs about 25ms on a typical message and never blocks you.
Change the interval with TEAMSHARE_POLL_SECONDS (0 polls every message).
Everything else is plain English:
Say this | Get this |
"what's unread?" | Your waiting shares |
"show me the auth one" | Full note, marks it read |
"who's seen the auth share?" |
|
"retract my auth share" | Deleted everywhere |
"mark it stale" | Stops showing as unread, stays in history |
Only the author can retract. Shares expire on their own after 14 days.
Step 4 · Managing the team
Who's actually set up?
/teamshare:rosterRoster for "Platform" (2 known email(s)):
- lead@acme.com (Lead) — active, 1 active token(s), never connected
- sam@acme.com (Sam) — active, 1 active token(s), never connectedWatch for never connected — that person was invited but never used it. They're missing every share and don't know it. Chase them.
Someone left:
/teamshare:revoke sam@acme.comRevoked 1 live token(s) for sam@acme.com. Every device using one of them gets a 401 on its
next request and needs a fresh invite to regain access.All their devices, one command. Their old shares stay — this removes access, not history.
Something not working?
teamshare stays quiet when it breaks, so it never interrupts you. The downside: "no shares today" and "totally disconnected" look identical. This tells them apart:
/teamshare:statusteamshare whoami
Server: https://54.90.22.249.sslip.io
teamshare's default server (built in — nothing to configure)
Your personal token (publishes shares, records receipts, receives the digest):
working — 0 unread share(s) waiting.
Admin tokens saved on this machine (invite / revoke / roster / rotate-team):
- Platform (tm_6c772dbd6de4) — saved 2026-08-30T17:28:32.033ZIt says | Do this |
| Nothing — you're fine. |
|
|
| Your token was revoked, or you pasted the admin token by mistake. Ask for a new invite. |
| Server or network issue, at the address shown. |
If the commands themselves are missing, restart Claude Code. If the tools are
missing, check /mcp and make sure you trusted the workspace.
Broken config from an old setup? /teamshare:setup repairs it. You shouldn't
need it otherwise.
Part 2 — Cursor, Codex, Windsurf, and the rest
Same board. Same shares. Same read receipts. Cursor, Codex, Windsurf, Gemini CLI, Cline, Zed, VS Code and Continue all speak MCP.
Step 1 · Connect
Two lines, once:
curl -fsSL https://raw.githubusercontent.com/abdulgeek/teamshare/main/packages/server/src/teamshare-connect.mjs -o teamshare-connect.mjs
node teamshare-connect.mjsNo arguments — it already knows the server. It asks for one thing, hidden as you type:
Personal token (input hidden):teamshare connect — result
[written] Cursor -> /Users/you/.cursor/mcp.json (backup: /Users/you/.cursor/mcp.json.teamshare-backup-1788099903701)
1 assistant(s) configured automatically.
Restart the affected assistant(s) to pick up the change.Restart whatever it configured. Done.
Want to see what it'll touch first?
node teamshare-connect.mjs --listteamshare connect --list — detected assistants
[detected] Cursor /Users/you/.cursor/mcp.json
[not installed] VS Code /Users/you/Library/Application Support/Code/User/mcp.json
[not installed] Windsurf /Users/you/.codeium/mcp_config.json
[not installed] Gemini CLI /Users/you/.gemini/settings.json
[not installed] Cline /Users/you/Library/Application Support/Code/User/globalStorage/<cline-extension>/settings/cline_mcp_settings.json
[not installed] Zed (via mcp-remote bridge) /Users/you/.config/zed/settings.json
[not installed] Codex CLI /Users/you/.codex/config.toml
[not installed] Continue.dev /Users/you/.continue/config.yamlIt backs up every file it edits, and leaves an existing teamshare entry alone
unless you add --force.
Already in Claude Code and want to set up your other tools? /teamshare:connect
does the same thing.
Step 2 · Use it
No slash commands here — just ask:
Say this | Get this |
"what has my team shared?" | Your unread shares |
"show me shr_ddd81b0b4b92" | Full note, marks it read |
"share with the team that the auth refactor lands Friday" | Publishes it |
"who's seen my auth share?" | Read receipts |
"retract that share" | Deletes it everywhere |
One difference, honestly: Claude Code gets the automatic start-of-session
digest, the mid-session nudge when something new lands, and
/teamshare:share. Those are plugin features. Everywhere else you ask for your
unread shares instead of being told. Publishing, reading, receipts and
retracting all work identically.
Step 3 · Running a team from here
Same thing, one file, no address needed:
curl -fsSL https://raw.githubusercontent.com/abdulgeek/teamshare/main/packages/server/src/teamshare-team.mjs -o teamshare-team.mjs
node teamshare-team.mjs create-team "<org-name>"
node teamshare-team.mjs invite sam@acme.com "Sam"
node teamshare-team.mjs roster
node teamshare-team.mjs revoke sam@acme.com
node teamshare-team.mjs whoamiIt prompts for what it needs and prints exactly what Part 1 shows. The Claude Code commands are this same file with a nicer front door.
Cheat sheet
Claude Code
Command | Does |
| Publish a note to the team |
| Recover the live signup secret (optional; not required before create-team) |
| Create a team, save its admin token |
| One person's token + the message to send them |
| Who's on the team, who never connected |
| Remove someone completely |
| Am I actually connected? |
| Set up your other AI assistants |
| Repair a broken config (rarely needed) |
Terminal — node teamshare-team.mjs <command> after the curl above.
generate-secret, create-team, invite, revoke, roster, rotate-team,
whoami. Add --server <url> for your own server, or --team "<name>" if you
run more than one team.
Two questions everyone asks
Why do I need a token?
Because it's how the server knows which teammate you are. Every share and every "read" is attributed by your token, not by a name your app claims. That's what makes "who's seen this?" trustworthy instead of a guess — and it means one command removes one person without disturbing anyone else.
There are two kinds, and mixing them up is the most common mistake:
Can do | Cannot do | |
Personal ( | Read and publish shares | Invite anyone |
Admin ( | Invite, revoke, list the team | Read a single share |
/teamshare:status will tell you if you've pasted the wrong one.
Why don't I need a server address?
Because it's the same for everybody and it never changes. It's built into the plugin and into both terminal commands. It isn't secret either — every request without a valid token is refused.
One thing worth knowing: /teamshare:invite prints a real token into your
Claude Code transcript, because you have to send it to someone. Same for
/teamshare:generate-secret. Both are deliberate: the alternative was a tool
you couldn't use without leaving it. Neither value ever touches a command
line, where ps would see it. /teamshare:revoke invalidates a personal
token in one step, and the signup secret opens no team's data at all.
Running your own server
You don't need to. If you want to:
pnpm install
pnpm -r build
node packages/server/dist/cli.js serve --signup-secret <pick-one>Point the terminal commands at it with --server <url>.
For Claude Code, the plugin's address lives in
packages/plugin/.mcp.json as plain JSON. Fork
this repo, change that one line, and /plugin marketplace add <your-fork>.
Everything else follows it automatically.
For a real deployment with HTTPS and backups, see
deploy/aws/README.md — that's what the default server
runs on.
More detail — trust model, diagnostics, a full worked example:
docs/reference.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceContext-anchored gotcha notes for LLM agents that surface warnings at the point of relevance, and allows leaving new notes via MCP tools.5CC BY-4.0
- FlicenseNot gradedqualityBmaintenanceProvides persistent, searchable memory for MCP-compatible AI coding tools, allowing notes added from one tool to be retrieved from another.
- AlicenseNot gradedqualityAmaintenanceProvides shared long-term memory for AI coding agents via MCP, allowing tools like Claude Code and Codex to store and retrieve distilled facts, notes, and conversation history to persist context across sessions.114MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that stores notes attached to specific code locations and keeps them attached as code moves, enabling coding agents to read context before editing and leave handoff notes for future sessions.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/abdulgeek/teamshare'
If you have feedback or need assistance with the MCP directory API, please join our Discord server