Team Sync MCP Server
Allows importing OpenAPI specifications from FastAPI backends, enabling automatic synchronization of API routes and schemas into the project state.
Click on "Install 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., "@Team Sync MCP ServerPublish that the backend added a new endpoint for user lookup."
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.
Team Sync MCP Server
A self-hosted synchronization hub for frontend and backend teams using Cursor. It exposes MCP tools for publishing and reading project state across multiple projects, stores everything locally, and serves a React dashboard for visual inspection.
What It Provides
A Python MCP server using the official
mcpSDK and Streamable HTTP transport athttp://localhost:8080/mcp.Multi-project shared state for API contracts, requirements, component specs, and changelog entries.
Cursor-driven subproject onboarding: after connecting MCP, the agent reviews the open workspace and bulk-publishes what other teams need.
SQLite persistence by default, with an optional JSON-file backend.
REST endpoints at
/api/projects...plus live SSE at/api/events.A React, Tailwind CSS, and shadcn-style dashboard at
http://localhost:8080/dashboard/.Optional shared bearer token for MCP calls and write endpoints.
Local username/password login, API keys for Cursor/CI, and project RBAC (owner/editor/viewer).
Related MCP server: JustClone Coordination MCP Server
Quick Start With Docker
docker compose up --buildOpen the dashboard:
http://localhost:8080/dashboard/The SQLite database is stored in ./data through the compose volume.
Local Development
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
python -m sync_mcpDashboard with hot reload:
cd dashboard
npm install
npm run devProduction-like local UI:
cd dashboard && npm install && npm run build && cd ..
python -m sync_mcpConfiguration
Variable | Default | Description |
|
| Name used only when migrating a legacy single-project database. |
|
| Use |
|
| Directory for persistent state. |
|
| Server bind host. |
|
| Server port. |
| empty | JWT signing secret (auto-generated for the process if empty; set in production). |
| empty | Bootstrap admin username when no users exist. |
| empty | Bootstrap admin password when no users exist. |
| empty | Deprecated; migrated once into an admin API key if present and no keys exist. |
| empty | HTTP proxy for outbound public web fetches (OpenAPI URLs on the internet). Falls back to |
| empty | HTTPS proxy for outbound public web fetches. Falls back to |
HTTP proxy (internet only): OpenAPI auto-sync and import_openapi URL fetches use a proxy only for non-local hosts. Private LAN (192.168.x.x), loopback (127.0.0.1, localhost), and link-local addresses always connect directly — so a corporate proxy does not break LAN OpenAPI URLs like http://192.168.17.29:8001/openapi.json. sync_agent status posts to the hub use the same rules. Cursor SDK cloud traffic is separate; set HTTPS_PROXY on the agent process if Cursor itself needs a proxy.
Existing single-project databases are auto-migrated into one project (slug derived from SYNC_MCP_PROJECT) on startup.
Authentication and RBAC
Set
SYNC_MCP_ADMIN_USERNAME/SYNC_MCP_ADMIN_PASSWORDand start the hub — the first admin is created if the DB has no users.Open the dashboard and sign in.
Under API keys, create a key (copy it once). Admins can manage users under Admin.
Project roles: owner (edit/delete/members), editor (sync/publish), viewer (read). Hub admin can manage all projects and users.
Action | Hub admin | Owner | Editor | Viewer |
Read project | all | yes | yes | yes |
Create project | yes | yes* | no | no |
Edit / delete project | yes | yes | no | no |
Sync / publish | yes | yes | yes | no |
Manage members | yes | yes | no | no |
Hub settings / users | yes | no | no | no |
*Any signed-in hub member can create a project and becomes its owner.
Cursor MCP Configuration
Use an API key (not the dashboard JWT) plus Project and Team headers (preferred):
{
"mcpServers": {
"team-sync": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer sk_YOUR_API_KEY",
"Project": "adra",
"Team": "backend"
}
}
}
}Also accepted: Project: adra/backend, or legacy Project: adra-backend. Team slugs are lowercase (frontend, backend, mobile, qa, …). Bearer + Project (with Team, slash form, or legacy suffix) are required on /mcp. The API key’s user must be a member of that project (or hub admin).
If you previously saw POST ... Not Found / SSE 404, restart Team Sync — an older bug mounted FastMCP at /mcp/mcp. The endpoint is now /mcp.
Also make sure the hub process is running (python -m sync_mcp or docker compose up) before enabling the MCP server in Cursor. Early ERR_CONNECTION_REFUSED means nothing was listening on port 8080.
CI / REST import (no Cursor SDK)
When the Cursor SDK is unavailable (e.g. region blocks), push contracts with the hub REST API:
pip install -e .
# Backend OpenAPI (URL must be reachable from the machine running the CLI)
sync-mcp-import openapi --hub http://192.168.17.29:8080 \
--api-key sk_... --project adra --url http://192.168.17.29:8001/openapi.json
# Frontend snapshot JSON (supports --replace to prune stale components)
sync-mcp-import snapshot --hub http://192.168.17.29:8080 \
--api-key sk_... --project adra --team frontend --file snapshot.json --replace
# Trigger on_commit OpenAPI sync
sync-mcp-import commit --hub http://192.168.17.29:8080 --api-key sk_... --project adra --sha abc123Example snapshot.json:
{
"team": "frontend",
"components": [{"name": "UserTable", "spec": "props: rows[]"}],
"requirements": [{"id": "tax", "title": "Need tax field"}],
"artifacts": [{"kind": "env_var", "key": "VITE_API_URL", "title": "API base"}],
"replace": true
}Automatic OpenAPI sync
Backend teams do not need to republish manually after each code change.
In the dashboard, set the project OpenAPI URL to an address the hub process can reach (e.g.
http://192.168.17.29:8001/openapi.json) and enable auto-sync. Do not uselocalhost/127.0.0.1when the hub runs in Docker — that points at the container itself. Use the host LAN IP,host.docker.internal(Docker Desktop), orhttp://172.17.0.1:<port>(Linux bridge gateway) depending on where the backend listens.Choose sync mode:
Every N seconds (
interval): fetch OpenAPI on each hub poll tick (default).After each commit (
on_commit): on each tick, cheaply read localgit rev-parse HEAD; only fetch OpenAPI when the SHA changes. Requires a Git repo path visible to the hub process. With Docker,docker-compose.ymlbind-mounts${SYNC_MCP_GIT_HOST_PATH:-../AD2}→/repos/AD2; set the project Git repo path to/repos/AD2(not a host path like/home/.../AD2).
In Auto-sync settings, set the hub poll / check cadence (default 30 seconds, min 5).
Use Sync now on the project page to force an immediate OpenAPI refresh.
Remote/CI can trigger the same sync path without local git on the hub:
curl -X POST http://localhost:8080/api/projects/adra/hooks/commit \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"commit_sha":"abc123"}'import_openapi from Cursor also saves the openapi_url and turns on auto-sync for that project.
Team-local sync agents (autonomous crawl)
Each subproject team runs an agent on a machine that has their checkout. The agent uses the Cursor SDK to read the codebase and push updates to the hub over MCP. The hub does not need those repos mounted.
# On the frontend team's machine
pip install -e ".[agent]"
export CURSOR_API_KEY=... # from Cursor dashboard
export SYNC_AGENT_HUB_URL=http://192.168.17.29:8080/mcp
export SYNC_AGENT_API_KEY=sk_... # hub API key (editor+ on project)
export SYNC_AGENT_PROJECT=adra-frontend
export SYNC_AGENT_CWD=/path/to/frontend-repo
export SYNC_AGENT_MODE=on_commit # or: schedule | once
# export SYNC_AGENT_INTERVAL_SECONDS=300 # for schedule / poll cadence
python -m sync_agent
# or: sync-mcp-agentBackend example: set SYNC_AGENT_PROJECT=adra-backend, optionally SYNC_AGENT_OPENAPI_URL=http://localhost:8001/openapi.json.
Mode | Behavior |
| Single crawl then exit |
| Crawl every |
| Watch local |
After each run the agent reports status to POST /api/projects/{id}/agent-status (shown on the project dashboard). If that returns 404, the hub process is an older build — rebuild/redeploy (e.g. docker compose up --build) so the new route is present. Status reporting is best-effort and does not block crawls.
Windows: the sync Cursor SDK bridge uses select() on a pipe and fails with WinError 10038. sync_agent automatically uses the async bridge on Windows. Prefer running the agent from the team repo checkout (SYNC_AGENT_CWD), not only from this hub repo. WSL also works if you prefer a Linux environment.
First-Connect Workflow (Cursor-driven onboarding)
MCP connection alone does not auto-run an agent. After wiring the server, ask Cursor once (or add a project rule) to onboard:
list_projects/register_project("acme-app")→ getproject_id(e.g.acme-app).Call
onboard_subproject(project_id, team="backend")or use theonboard_subproject_promptprompt.FastAPI backend (preferred): start your API, then call
import_openapi(project_id, openapi_url="http://localhost:8000/openapi.json").Otherwise Cursor reviews the workspace and calls
import_snapshot.The other team opens the same
project_idviaget_latest_stateor the dashboard.
Suggested Cursor rule
When this repo is first opened with Team Sync MCP available:
1. list_projects / register_project for this product
2. run onboard_subproject for this team's role (backend|frontend)
3. If backend FastAPI: import_openapi from /openapi.json
4. Else explore the workspace and import_snapshot when readyExample: FastAPI OpenAPI import
Register/list project acme-app, then import_openapi with
openapi_url=http://localhost:8000/openapi.jsonMCP Tools
Tool | Purpose |
| List hub projects |
| Create a project ( |
| Return checklist + instructions |
| Bulk import; |
| Upsert typed artifacts (env vars, flags, events, …) |
| Mark a change |
| List artifacts |
| Import FastAPI/OpenAPI routes |
| Publish one change |
| Full state + markdown digest |
| Filtered changelog |
| Resource subscription hints |
With a Project header, project_id / team can be omitted on tools that support them.
Resources: sync://projects, sync://projects/{id}/state, sync://projects/{id}/changelog.
Dashboard
Sign in with username/password; JWT is stored in
localStorage.Overview lists projects you can access; create projects (you become owner).
Open a project for state + activity; owners can edit/delete/sync and manage members.
API keys page for Cursor/CI; Admin (hub admins) manages users.
Live updates via SSE (
/api/events?access_token=...).
REST examples
curl http://localhost:8080/api/health
curl http://localhost:8080/api/projects
curl -X POST http://localhost:8080/api/projects \
-H "Content-Type: application/json" \
-d '{"name":"Acme App","description":"Main product"}'
curl http://localhost:8080/api/projects/acme-app/state
curl -X POST http://localhost:8080/api/projects/acme-app/snapshot \
-H "Content-Type: application/json" \
-d '{
"team":"backend",
"api":[{"method":"GET","path":"/users/:id","description":"User lookup"}],
"notes":"Initial scan"
}'Legacy /api/state and /api/changelog still work but require ?project_id=....
Tests
pip install -e ".[dev]"
pytestThis 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 Servers
- Alicense-qualityDmaintenanceEnables client-to-client communication between IDEs and development tools, allowing real-time collaboration across Cursor, VS Code, Windsurf, and other editors through bidirectional messaging and AI agent coordination.Last updated2MIT
- Flicense-quality-maintenanceA production-grade coordination hub that enables AI agents and human teams to work as a single organism by sharing tasks, context, decisions, and persistent memory across projects. It features two-tier agentic memory with per-agent hot caches, inter-agent messaging, and multi-agent authorship tracking for seamless collaboration.Last updated2
- AlicenseAqualityAmaintenanceLocal-first shared memory and coordination layer for AI coding agents, with repository evidence, reservations, handoffs, code graph context, and dashboard review backed by PostgreSQL/pgvector.Last updated303Apache 2.0
- Alicense-qualityAmaintenanceA local digital asset hub for multi-AI assistant collaboration, offering real-time meeting rooms and structured project vaults with zero-configuration setup.Last updated2510Apache 2.0
Related MCP Connectors
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
The team layer for AI coding agents: shared contracts, collision alerts, E2EE sessions.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
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/babakshofficial/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server