MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Search real live music, theater, comedy, film, art, sports, festivals, markets, food and drink, classes, tours and nightlife in New York City — with dates, times, prices, booking links and images.
$ npx skills add SyncSo-Inc/syncso --skill syncso -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SyncSo-Inc/syncso syncso --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/SyncSo-Inc/syncso.git skills-src && mkdir -p .claude/skills && cp -r skills-src/syncso .claude/skills/syncso && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "syncso" agent skill from https://github.com/SyncSo-Inc/syncso/tree/main/syncso into .claude/skills/syncso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "syncso", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/SyncSo-Inc/syncso/tree/main/syncsoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add SyncSo-Inc/syncso --skill syncso -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SyncSo-Inc/syncso syncso --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SyncSo-Inc/syncso.git skills-src && mkdir -p .agents/skills && cp -r skills-src/syncso .agents/skills/syncso && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "syncso" agent skill from https://github.com/SyncSo-Inc/syncso/tree/main/syncso into .agents/skills/syncso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "syncso", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SyncSo-Inc/syncso --skill syncso -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SyncSo-Inc/syncso syncso --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SyncSo-Inc/syncso.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/syncso .cursor/skills/syncso && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "syncso" agent skill from https://github.com/SyncSo-Inc/syncso/tree/main/syncso into .cursor/skills/syncso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "syncso", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/SyncSo-Inc/syncso.git --path syncso--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add SyncSo-Inc/syncso --skill syncso -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SyncSo-Inc/syncso syncso --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SyncSo-Inc/syncso.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/syncso .gemini/skills/syncso && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "syncso" agent skill from https://github.com/SyncSo-Inc/syncso/tree/main/syncso into .gemini/skills/syncso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "syncso", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install SyncSo-Inc/syncso syncsoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add SyncSo-Inc/syncso --skill syncso -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SyncSo-Inc/syncso.git skills-src && mkdir -p .github/skills && cp -r skills-src/syncso .github/skills/syncso && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "syncso" agent skill from https://github.com/SyncSo-Inc/syncso/tree/main/syncso into .github/skills/syncso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "syncso", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SyncSo-Inc/syncso --skill syncso -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SyncSo-Inc/syncso syncso --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SyncSo-Inc/syncso.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/syncso .opencode/skills/syncso && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "syncso" agent skill from https://github.com/SyncSo-Inc/syncso/tree/main/syncso into .opencode/skills/syncso/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "syncso", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
syncsoSearch real live music, theater, comedy, film, art, sports, festivals, markets, food and drink, classes, tours and nightlife in New York City — with dates, times, prices, booking links and images.
Syncso is an agent skill from SyncSo-Inc/syncso. Search real live music, theater, comedy, film, art, sports, festivals, markets, food and drink, classes, tours and nightlife in New York City — with dates, times, prices, booking links and images. Use this whenever someone asks what to do, where to go, what is on, or where to take people in New York, for any date or none, even if they do not name SyncSo. Live catalogue, updated continuously.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Model Context Protocol. The repository describes itself as: Let your agents understand what's happening locally, in real time — every experience across a city, with times, prices, booking links and images. The licence is MIT.
Read from SKILL.md and the folder at commit 11f3379. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
rtdb.syncso.comsyncso.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SYNCSO_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Syncso loads about 4.1k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 1,468 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from SyncSo-Inc/syncso at commit 11f3379, republished under its MIT licence (© SyncSo-Inc). 1,468 words, ~4,063 tokens.
.claude/skills/syncso/SKILL.md (or your agent's skills folder).SyncSo reads everything happening around this person — events, shows,
classes, tours, markets, tastings — and answers what they should do. Use
find_things_to_do whenever they ask what to do, where to go, what is on,
or want a day or an evening planned. New York only for now, with more cities in the
next few months — for anywhere else, say that rather than searching.
If your client speaks MCP, point it at the endpoint and stop reading here. It will be told to authenticate, the tools and this guidance arrive on connect, and everything below is handled for you.
https://rtdb.syncso.com/partner/mcpIf it does not, the tool definitions are at the end of this file.
Add them to your model's tools and POST each call as JSON-RPC to that same
URL, carrying the access token from the section below. The reply is
result.content[0].text — compact text, about 120 tokens per result, ready
to hand straight back to the model.
Send X-SyncSo-Skill: 2.0.0 on every call, in the same place you
set the Authorization header — it says which copy of this file you are
working from. Copy the number as it appears here. If this file later changes
in a way that makes your copy wrong, a search will refuse and tell you to
fetch it again rather than answer from stale guidance.
curl -sS https://rtdb.syncso.com/partner/mcp \
-H "Authorization: Bearer $SYNCSO_TOKEN" \
-H "X-SyncSo-Skill: 2.0.0" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"find_things_to_do","arguments":{
"request":"A first date tonight in the East Village, somewhere quiet enough to talk"}}}'Every call is made on behalf of the person you are helping, and carries something that identifies their account.
The simple way, and the one to reach for first. Send them this page:
https://syncso.com/connectThey sign in, copy the code it shows, and give it back to you in the
conversation. Send each call with that code as
Authorization: Bearer <code> and you are done — nothing to register,
nothing to refresh, no browser of your own. Keep it for next time; it does
not expire on its own, and they can replace it on that same page.
Ask for the code when you set up — say what it is for, and that it spends their own allowance.
The OAuth way, if you are built for it. Call WITHOUT anything first:
the 401 carries a WWW-Authenticate header naming
https://rtdb.syncso.com/partner/.well-known/oauth-protected-resource,
which names the authorization server. That is the standard OAuth 2.1
discovery path (RFC 9728), and any OAuth client library can walk it. Run
the authorization code flow with PKCE, let them approve once in a browser,
then keep the refresh token and use it when the access token expires, which
is about an hour.
Both open the same account, and the tools behave identically on either.
This is their account, not yours. It carries their free allowance, and if they subscribe it is their subscription — so the payment tools act on their balance, and you never handle money yourself.
Every answer opens with the current New York time. Say times in words —
"tonight", "this weekend" — and they are resolved against that clock, which
is the simplest thing to do; send a resolved window in when only when you
already hold exact values. Before the first call of a conversation, use the
date your own instructions give you; if you have none, ask without when
and read the clock off the answer.
Send what they said, in their words, and with it whatever you know about this person that bears on it:
Who they are — where they live, how old, what they do, how long they have been here. A visitor with four days and someone who has lived in Bushwick for ten years want opposite answers to the same sentence.
Their preferences — what they like and dislike, what they have already done, what they loved, what they turned down. In this conversation or an earlier one. This is the most useful thing you can send and the easiest to leave behind, because it is not in the question they just asked.
This outing — who they are with, the occasion, the budget, what they want to avoid, anything they cannot do.
Send what you have, as much as you have. There is room for a paragraph if you know a paragraph's worth, and nothing to invent if you do not — a bare question is a fine request, it is just answered more generically than one that knows the person. Keep their own sentence in there either way.
Do not split it into searches. One request is one call, however many
interests it names. "Art in the afternoon, dinner somewhere lively, then
live music" is one request, not three.
Do not re-rank or filter what comes back. Every row was read against this request by a model that saw it — a thousand rows and more — and the order is that judgement. Show them in the order given. Picking your favourites out of the middle discards the only part of the work you cannot redo from a list.
Leave nothing out of request for being unsearchable. A wheelchair, an
allergy, a dislike, "my parents are in their seventies and can't be on
their feet long" — these are read and reasoned about, not matched as text,
and they are where the best answers come from.
An answer costs 5-10 credits for the first 50 results and 3 for each further 50, on the work it actually did.
Leave limit out: it is 20, and that is almost always the right ask. A
smaller number does not come back sooner — the sentences are written in
parallel and released in rank order, so the first card arrives at the same
moment either way. Asking for fewer buys fewer credits, never less
waiting.
Each row arrives finished, laid out as the card to show:

**name** — why it suits this person
time · venue · price
[Book](the booking link)Pass them on in that shape and that order, all of them, top to bottom. Please don't reorder everything, and please don't investigate everything, because the user needs the results fast.
The sentence is already written for this request — use it, as it is written. Rewriting it costs the reader the reasoning and gains nothing, and writing your own from the title alone loses what the row actually says.
Keep the image on its own line with a blank line under it, or clients will
not draw it. Drop the [1] id: … handles — they are there so you can tell
which row is which, not for the reader. Times are New York local; never
convert them, and never say whether tickets are available.
Open with the line the answer leads with: it says how much was read and what the request was taken to mean, which is the reader's one chance to correct you before reading on.
request with the cursor from the last answer.
Nothing else changed. An expired cursor means asking again without one.request. Say the whole thing
again, not just the correction.get_details with its id and
kind: "experience" — every row here is one, so there is nothing to
work out. (kind: "venue" exists for rows from the older search
tools, which answered with places as well.) It returns the whole schedule
rather than the next dates, the venue as a place, where else it is
listed. Several ids in one call cost the same as one. Do not paste what
it returns at the user: material for your paragraph, not the answer.Never ask for card details yourself, and never put them in a message.
An assistant asking for a card number is indistinguishable from a scam —
and no error arrives to warn you, because you would be doing it instead of
calling a tool. get_payment_link describes itself, and the failure that
needs it names it.
Nothing on in that window and area means the window or the distance is the thing to widen — there is no second place to look. Adjust once, then tell the user what you asked for. An answer that says a place is outside the area we cover is neither empty nor a failure: New York is the only city for now, and nothing was searched. Say that in a sentence, and do not search New York in its place unless they ask for it.
On rate_limited, wait the seconds given and retry. On
insufficient_credits or quota_exceeded, stop and tell the user.
OpenAI's Responses API shape, which is flat: type, name, description,
parameters. For the older Chat Completions API, wrap each one —
{"type": "function", "function": {name, description, parameters}} —
or it will be rejected. For Anthropic, rename parameters to
input_schema and drop the type wrapper.
[
{
"type": "function",
"name": "find_things_to_do",
"description": "The tool to reach for whenever someone asks what to do, where to go, what is on, or wants a day or an evening planned.\n\nSend what they said, in their words, and with it whatever you know about this person — who they are, and their preferences: what they have liked, disliked or already done. Not only tonight's constraints. One call. We read everything on in that window and that area — a thousand rows and more — and return the ones that fit, in order, each with a sentence saying why it is there.\n\nDO NOT split the request into searches, and do not re-rank or filter what comes back. The ordering is the answer: it was made by reading every candidate against this person's actual request, which is work no selection from a results list can redo. Show them in the order given.\n\nKeyword searches miss the local life — a Go night at a cafe, a running club, an origami meetup, a free park tour — because\nnone of it describes itself in the words anyone would search for. Reading every row is how those are found.\n\nNew York only for now.\n\n11-16 seconds for a screenful. Priced per call on the work it did: 5-10 credits for the first 50 results and 3 for each further 50, so `limit` is what moves both the clock and the price.",
"parameters": {
"type": "object",
"properties": {
"request": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "What they want, in their own words, and with it whatever you know about this person that bears on it:\n\nWHO THEY ARE — where they live, how old, what they do, how long they have been in the city.\n\nTHEIR PREFERENCES — what they like and dislike, what they have already done, what they loved, what they turned down. In this conversation or an earlier one. This is the most useful thing you can send and the easiest to leave behind, because it is not in the question they just asked.\n\nTHIS OUTING — who they are with, the occasion, the budget, what they want to avoid, anything they cannot do.\n\nProse, not keywords. Send what you have, as much as you have: there is room for a paragraph if you know a paragraph's worth, and nothing to invent if you do not. All of it is read and reasoned about, never matched as text. Leave nothing out for being unsearchable: a wheelchair, an allergy, a dislike, \"her parents are in their seventies and can't be on their feet long\" all belong here, and are where the best answers come from.\n\nTime and place can be said here too, in words — \"tonight\", \"this weekend\", \"near Columbia\" — and are resolved against the real clock and map. Use the structured fields instead only when you already hold the exact values."
},
"place": {
"type": "string",
"maxLength": 120,
"description": "A neighbourhood, borough or landmark, when you want to be certain of it rather than leave it to the sentence. Beats any place named in `request`."
},
"lat": {
"type": "number",
"description": "Their position, if you have it. Send both `lat` and `lng`; either alone is ignored. Beats `place`."
},
"lng": {
"type": "number",
"description": "The other half of `lat`. Negative in New York."
},
"radius_mi": {
"type": "number",
"minimum": 0.1,
"maximum": 50,
"description": "How far they will go. Default 3 miles from a point, 5 from a named area."
},
"when": {
"type": "object",
"description": "A window you have already resolved, New York local time. Beats any time in `request`. Give `end` only when there is a real deadline: an absent `end` means the rest of that day, not the coming year.",
"properties": {
"start": {
"type": "string",
"description": "e.g. 2026-10-02T18:00"
},
"end": {
"type": "string",
"description": "Same shape as `start`, e.g. 2026-10-02T23:00. A deadline, not a day: leave it out and the window runs to the end of `start`'s day."
}
},
"required": [
"start"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 400,
"description": "How many to return. Defaults to 20, in order; show them in that order, and leave this field out — the default is almost always the one to send.\n\nA smaller number does not come back sooner. The sentences are written in parallel and released in rank order, so the first card arrives at the same moment whether you asked for 12 or 50. Asking for fewer buys fewer credits and a shorter answer, never less waiting.\n\nSo send a number only when the person wants a short list, or when you are spending their credits carefully: a sentence is written for every row returned, and the price follows that. Ask for what you will actually show — but never to go faster, because there is no faster here."
},
"cursor": {
"type": "string",
"description": "Next page of the same answer."
}
},
"required": [
"request"
]
}
},
{
"type": "function",
"name": "get_details",
"description": "The full record behind a search result, by its id. A search row is a summary; this is everything we hold about that one thing — its whole schedule rather than the next dates, the venue as a place rather than an address, and where else it is listed.\n\nCall it when the row in front of you does not answer what you are about to say. 1 credit per call, and several ids in one call cost the same as one. Not for pictures — the search row already carries the image URL, and this returns none.",
"parameters": {
"type": "object",
"properties": {
"items": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"description": "The results to look up, up to 20 at once. One entry per id.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The id shown on a search result."
},
"kind": {
"type": "string",
"enum": [
"experience",
"venue"
],
"description": "experience for a row from the EXPERIENCES list, venue for one from VENUES."
}
},
"required": [
"id",
"kind"
]
}
}
},
"required": [
"items"
]
}
}
]© SyncSo-Inc, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in syncso of SyncSo-Inc/syncso.
Open the folder on GitHubat commit 11f3379
Syncso next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Syncso this skillSyncSo-Inc/syncso | 301 | — | ~4.1k | Automated safety check: Pass | MIT | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 4 repos | ~1.2k | Automated safety check: Pass | MIT | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Figma use_figma Plugin API Ruleswarpdotdev/warp | 65k | 4 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Stitch to Remotion Walkthrough Videosgoogle-labs-code/stitch-skills | 8.5k | 6 repos | ~3.2k | Automated safety check: Notes | Apache-2.0 |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
shareAI-lab/learn-claude-code
Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
warpdotdev/warp
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
google-labs-code/stitch-skills
Builds walkthrough videos from Stitch design projects using Remotion, with transitions, zoom effects and text overlays on each screen.
coollabsio/coolify
A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.
Works with
Search real live music, theater, comedy, film, art, sports, festivals, markets, food and drink, classes, tours and nightlife in New York City — with dates, times, prices, booking links and images. Syncso is an agent skill from SyncSo-Inc/syncso. Search real live music, theater, comedy, film, art, sports, festivals, markets, food and drink, classes, tours and nightlife in New York City — with dates, times, prices, booking links and images.
Run `npx skills add SyncSo-Inc/syncso --skill syncso -a claude-code`. Or copy the skill folder (syncso in SyncSo-Inc/syncso) into .claude/skills/syncso in your project. Claude Code loads it when a task matches its description.
Run `npx skills add SyncSo-Inc/syncso --skill syncso -a codex`. Or copy the skill folder (syncso in SyncSo-Inc/syncso) into .agents/skills/syncso in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add SyncSo-Inc/syncso --skill syncso -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/syncso, .gemini/skills/syncso, .github/skills/syncso and .opencode/skills/syncso in your project.
Going by SKILL.md and its folder, Syncso needs the command-line tools its instructions call (curl) and credentials named SYNCSO_TOKEN. Our summary lists: A credential in SYNCSO_TOKEN.
SKILL.md names 2 domains. In commands or code: rtdb.syncso.com and syncso.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Syncso is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Syncso: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars) and Figma use_figma Plugin API Rules (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
SyncSo-Inc (a GitHub organization) maintains it in SyncSo-Inc/syncso, which has 301 GitHub stars. The repository was last updated on October 9, 2026.
Source: SyncSo-Inc/syncso on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.