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.
Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type/<name@<version/.
$ npx skills add agenvoy/Agenvoy --skill extension-install -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install agenvoy/Agenvoy extension-install --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/agenvoy/Agenvoy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/extensions/skills/extension-install .claude/skills/extension-install && 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 "extension-install" agent skill from https://github.com/agenvoy/Agenvoy/tree/master/extensions/skills/extension-install into .claude/skills/extension-install/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "extension-install", 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/agenvoy/Agenvoy/tree/master/extensions/skills/extension-installType 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 agenvoy/Agenvoy --skill extension-install -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install agenvoy/Agenvoy extension-install --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agenvoy/Agenvoy.git skills-src && mkdir -p .agents/skills && cp -r skills-src/extensions/skills/extension-install .agents/skills/extension-install && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "extension-install" agent skill from https://github.com/agenvoy/Agenvoy/tree/master/extensions/skills/extension-install into .agents/skills/extension-install/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "extension-install", 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 agenvoy/Agenvoy --skill extension-install -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install agenvoy/Agenvoy extension-install --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agenvoy/Agenvoy.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/extensions/skills/extension-install .cursor/skills/extension-install && 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 "extension-install" agent skill from https://github.com/agenvoy/Agenvoy/tree/master/extensions/skills/extension-install into .cursor/skills/extension-install/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "extension-install", 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/agenvoy/Agenvoy.git --path extensions/skills/extension-install--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 agenvoy/Agenvoy --skill extension-install -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install agenvoy/Agenvoy extension-install --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agenvoy/Agenvoy.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/extensions/skills/extension-install .gemini/skills/extension-install && 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 "extension-install" agent skill from https://github.com/agenvoy/Agenvoy/tree/master/extensions/skills/extension-install into .gemini/skills/extension-install/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "extension-install", 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 agenvoy/Agenvoy extension-installInstalls 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 agenvoy/Agenvoy --skill extension-install -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/agenvoy/Agenvoy.git skills-src && mkdir -p .github/skills && cp -r skills-src/extensions/skills/extension-install .github/skills/extension-install && 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 "extension-install" agent skill from https://github.com/agenvoy/Agenvoy/tree/master/extensions/skills/extension-install into .github/skills/extension-install/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "extension-install", 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 agenvoy/Agenvoy --skill extension-install -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install agenvoy/Agenvoy extension-install --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agenvoy/Agenvoy.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/extensions/skills/extension-install .opencode/skills/extension-install && 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 "extension-install" agent skill from https://github.com/agenvoy/Agenvoy/tree/master/extensions/skills/extension-install into .opencode/skills/extension-install/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "extension-install", 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.
extension-installInstall an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type/<name@<version/.
Extension Install is an agent skill from agenvoy/Agenvoy. Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type/<name@<version/. Extracts tar.gz, validates manifest (email field, type api/script only), installs deps, stores keychain keys, atomically moves staged dir. Collisions handled by Overwrite/Rename/Cancel popup.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows. It works with Model Context Protocol. The repository describes itself as: Self-hosted 24/7 personal AI agent that runs on your own machine — memory, schedules, tools and credentials stay local. Single Go binary with MCP. The licence is AGPL-3.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 09fd548. 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:
aptFrom 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:
pkg.agenvoy.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Extension Install loads about 2.9k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 1,152 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 noted patterns worth knowing about, such as sudo or a known installer.
/yum/pacman/apk` (first found) and runs `sudo -n <pm> install -y <dep>`; the sudo ticket comes from the password collectow=false`); the user sees "About to run `sudo apt install -y ffmpeg` — confirm?". User decline → tool fails → skill aborAutomated 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 agenvoy/Agenvoy at commit 09fd548, republished under its AGPL-3.0 licence (© agenvoy). 1,152 words, ~2,910 tokens.
.claude/skills/extension-install/SKILL.md (or your agent's skills folder).本 Skill 為 Agenvoy 內部最佳化版本,依 Agenvoy 的執行環境撰寫(
run_command的 CWD、~/.config/agenvoy/skills/.system/安裝位置、edit_skill/schedules/find_edit_tool等工具、subagent 與排程的觸發路徑),不保證適配其他 AI harness。
Takes a packager-produced tarball, installs it as an extension visible to the runtime scanner.
tarball (optional): absolute path to a tar.gz.
pkg.agenvoy.com is the fixed registry endpoint — it is not a choice, so there is nothing to ask about.
Call http_request:
{
"url": "https://pkg.agenvoy.com/list?limit=100",
"method": "GET",
"content_type": "json"
}Expect 200 with body {"ok":true,"items":[{...}],"count":N,"limit":100,"offset":0}.
Each item carries name / type / email / version / summary / description / dependence / api_key_name / files / r2_key / size_bytes / sha256 / created_at.
status_code != 200 or items empty → abort with "registry unavailable or no packages".
Convert items into display strings, one per line:
<item.name>@<item.version> (<item.email>) · <item.type> · <item.summary>Example: yt_dlp_youtube_downloader@1.0.0 (chiu@example.com) · script · Download a YouTube video...
ask_user (singleSelect):
Pick the extension to install (N total):options are the display strings. Record the user's chosen item index → extract that item's r2_key / name / email / version.
User cancel → abort.
Call download_file (not http_request — binary doesn't belong in a string body):
{
"url": "https://pkg.agenvoy.com/download?key=<selected item.r2_key>",
"output_file": "~/.config/agenvoy/download/<name>@<version>.tar.gz",
"timeout": 300
}Response: {ok, output_file, size_bytes, sha256, ...}.
Verify the download:
size_bytes > 0sha256, compare to the picked item's sha256; mismatch → abort and rm the fileUse output_file as the tarball variable and proceed to §1.
Fixed staging directory: ~/.config/agenvoy/tools/.extension/.staging/ (cleaned and recreated on every install).
rm -rf ~/.config/agenvoy/tools/.extension/.stagingmkdir -p ~/.config/agenvoy/tools/.extension/.stagingtar -xzf <tarball> -C ~/.config/agenvoy/tools/.extension/.stagingAfter extraction, the staging directory should contain exactly one subdirectory <original-basename>/ (the packager uses -C <parent> to keep the outer dir in the tarball). run_command: ls ~/.config/agenvoy/tools/.extension/.staging gets <original-basename>.
If extraction fails, or staging contains 0 / >1 subdirectories, abort with:
❌ Tarball contents are invalid (cannot find a single root dir). Verify the tarball was produced by the extension-upload skill.read_files: ~/.config/agenvoy/tools/.extension/.staging/<original-basename>/manifest.json
Missing file → abort with "manifest.json missing in tarball, refuse to install".
Validate each field (any failure aborts; a broken manifest is a packager-side defect, so abort and report it):
| Field | Condition |
|---|---|
name | non-empty, matches ^[a-z0-9][a-z0-9_-]*$ |
type | ∈ {api, script} (worker rejects mcp) |
version | strict semver ^\d+\.\d+\.\d+$ |
summary | non-empty |
email | non-empty, matches ^[^@\s]+@[^@\s]+\.[^@\s]+$, already lowercase (worker normalizes) |
dependence | array |
api_key_name | array, each element matches [A-Z][A-Z0-9_]*_API_KEY |
files | array, length ≥ 1, must include tool.json |
Every path in files must exist in the staging subdirectory; any missing file → abort.
For each <dep> in manifest.dependence, call:
pkg_manage(action="install", package="<dep>")The tool internally:
exec.LookPath(<dep>) already present → returns already_installed:true, this step is satisfiedapt/apt-get/dnf/yum/pacman/apk (first found) and runs sudo -n <pm> install -y <dep>; the sudo ticket comes from the password collected during confirmationrun_command(["brew","install","<dep>"], write_paths=["/opt/homebrew"])LookPath re-checksResponse is JSON {"ok": true/false, ...}. ok:false or tool error → abort immediately and rm -rf .staging.
Each call triggers a KindToolConfirm popup (AlwaysAllow=false); the user sees "About to run sudo apt install -y ffmpeg — confirm?". User decline → tool fails → skill aborts.
Note:
pkg_manageis Linux-only (not registered on macOS) and available on every channel. Root actions go through the same system-password confirmationrun_commanduses forwrite_paths, so no terminal is needed.
For each <KEY> in manifest.api_key_name, call:
store_secret(key="<KEY>", prompt="<extension name> needs <KEY>; enter the value (re-enter to overwrite an existing one):")store_secret calls keychain.Set internally. User cancels / empty value → tool returns error → skill aborts and removes staging.
Note: Agenvoy has no read-only key check tool, so even an existing key is re-prompted. The user can re-enter the same value or a new one; cancelling (empty) aborts the install.
Directory name (no author/email prefix):
<manifest.name>@<manifest.version>Examples: yt-dlp-info@1.0.0, yt_dlp_youtube_downloader@1.0.0.
Full install path:
~/.config/agenvoy/tools/.extension/<manifest.type>/<manifest.name>@<manifest.version>/Never rewrite tool.json::name — keep the value the manifest already carries. The runtime tool registry uses that value as the key.
Collisions (same name + version from two authors) are resolved uniformly in §6 collision check (Overwrite / Rename / Cancel popup).
Define <final-dir> = <name>@<version> (the default install directory name derived in §5).
ls ~/.config/agenvoy/tools/.extension/<type>/<final-dir> 2>/dev/nullIf the directory already exists → ask_user singleSelect:
<final-dir> is already installed.
- Overwrite · remove the old version and install the new one
- Rename · pick a new directory name (keep both on disk)
- Cancel · abort install| Choice | Action |
|---|---|
Cancel | Clean staging and abort |
Overwrite | rm -rf the existing dir → keep <final-dir> → proceed to §7 |
Rename | Proceed to §6.1 to collect a new name |
Default suggestion = <final-dir>-2. If -2 is also taken, increment to -3, -4, ... until non-conflicting.
ask_user (free-text):
Enter a new directory name (must end with `@<version>`; allowed chars [A-Za-z0-9_.+\-@]):
default: <suggested name>Reply validation:
| Condition | Action |
|---|---|
| Blank → use the default suggestion | Pass; set <final-dir> = default |
Matches ^[A-Za-z0-9][A-Za-z0-9_.+\-]*@\d+\.\d+\.\d+(-[A-Za-z0-9_.+\-]+)?$ AND does not collide | Pass; set <final-dir> = new name |
| Format invalid / still colliding | Re-prompt; abort after 3 attempts with "rename cancelled, install aborted" |
Note: rename only affects the install directory name (two versions coexist on disk).
tool.json::nameis not rewritten; the runtime tool registry uses that name as the key. When two versions are loaded with the same name, the later-loaded one shadows the earlier, so the runtime still exposes only one. Rename is purely a disk-level coexistence escape hatch for rollback / diff, not a runtime version switcher.
mkdir -p ~/.config/agenvoy/tools/.extension/<type>mv ~/.config/agenvoy/tools/.extension/.staging/<original-basename> ~/.config/agenvoy/tools/.extension/<type>/<final-dir>rm -rf ~/.config/agenvoy/tools/.extension/.stagingtools.NewExecutor re-scans .extension/<type>/* on every incoming user message, so the new extension is loaded automatically on the next message. No daemon restart needed; do not run agen stop.
✅ installed
- name: <manifest.name>
- email: <manifest.email>
- version: <manifest.version>
- type: <manifest.type>
- path: ~/.config/agenvoy/tools/.extension/<type>/<final-dir>/
- tool: <tool.json::name> (kept verbatim from manifest, not rewritten)
- deps: <installed binary list or "all present">
- keys: <stored KEY list or "none">
- next: your next message will see the new toolhttps://pkg.agenvoy.comhttp_request in §0.3; binary belongs to download_file (cannot go through a string body)sha256); mismatch means the tar is corrupted or substituted.staging/. Any failure in validation / deps / key steps must rm -rf .stagingcommand -v <dep> check in step 3 (once before install, once after)store_secret flow as written; routing a plaintext key through ask_user first would pull the value into LLM context)uname -s + probe ordertool.json::name; keep whatever the manifest carries. The runtime tool registry uses it as the key. (Authors must ensure the name matches Gemini / Vertex AI rules [a-zA-Z_][a-zA-Z0-9_.:-]* at publish time.)<manifest.name>@<manifest.version>; collisions are resolved via the §6 popup@<version>; that violates the collision-safe naming conventiontool.json::name; rename is purely disk-level coexistence — the tool registry key always stays as the manifest value.staging/ to .tmp/ or another path (the runtime scanner skips . prefixes; .staging is the scan-safe staging location)agen stop / kill <pid> / pkill agen / any daemon-restart command in §8. tools.NewExecutor re-scans on every user message, so the new extension auto-loads on the next message. Restarting only kills your own session.</content>
</invoke>
© agenvoy, AGPL-3.0. 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 extensions/skills/extension-install of agenvoy/Agenvoy.
Open the folder on GitHubat commit 09fd548
Extension Install 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 |
|---|---|---|---|---|---|---|
| Extension Install this skillagenvoy/Agenvoy | 436 | — | ~2.9k | Automated safety check: Notes | AGPL-3.0 | |
| 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 | |
| MemPalace Memory SearchMemPalace/mempalace | 59k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Crush Configurationcharmbracelet/crush | 29k | — | ~3.7k | Automated safety check: Pass | Custom licence |
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.
MemPalace/mempalace
Mines project files and conversation exports into a local, searchable memory palace and recalls past work by semantic search through the mempalace CLI.
charmbracelet/crush
Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.
mksglu/context-mode
Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.
agenvoy/Agenvoy
建立並排程定時觸發的 skill。所有新增定時/週期任務、提醒、排程通知的請求必須走此 skill,禁止直接呼叫 schedules(mode=write)(那是 skill 已存在時的時間綁定工具,不該作為新建排程的入口)。
agenvoy/Agenvoy
Create, edit, improve, or audit AgentSkills. An agent skill from agenvoy/Agenvoy.
agenvoy/Agenvoy
Package a script tool under ~/.config/agenvoy/tools/script/ into a tar.gz and publish to pkg.agenvoy.com registry.
Works with
Categories
Install an Agenvoy extension from pkg.agenvoy.com registry (browse/pick) or local tarball into ~/.config/agenvoy/tools/.extension/<type/<name@<version/. Extension Install is an agent skill from agenvoy/Agenvoy.extension/<type/<name@<version/.
Extension Install fits situations like: agent Workflows work in your project.
Run `npx skills add agenvoy/Agenvoy --skill extension-install -a claude-code`. Or copy the skill folder (extensions/skills/extension-install in agenvoy/Agenvoy) into .claude/skills/extension-install in your project. Claude Code loads it when a task matches its description.
Run `npx skills add agenvoy/Agenvoy --skill extension-install -a codex`. Or copy the skill folder (extensions/skills/extension-install in agenvoy/Agenvoy) into .agents/skills/extension-install 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 agenvoy/Agenvoy --skill extension-install -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/extension-install, .gemini/skills/extension-install, .github/skills/extension-install and .opencode/skills/extension-install in your project.
Going by SKILL.md and its folder, Extension Install needs the command-line tools its instructions call (apt).
SKILL.md names 1 domain. In commands or code: pkg.agenvoy.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Extension Install is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 Extension Install: 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 MemPalace Memory Search (MemPalace/mempalace, 59k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
agenvoy (a GitHub organization) maintains it in agenvoy/Agenvoy, which has 436 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 9, 2026.
Source: agenvoy/Agenvoy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.