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.
Drive PyBERT's MCP server to run headless serial-link BER simulations, read/write configuration, browse saved results, and inspect IBIS-AMI models, without opening the GUI.
$ npx skills add capn-freako/PyBERT --skill pybert-mcp -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install capn-freako/PyBERT pybert-mcp --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/capn-freako/PyBERT.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/pybert-mcp .claude/skills/pybert-mcp && 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 "pybert-mcp" agent skill from https://github.com/capn-freako/PyBERT/tree/master/.claude/skills/pybert-mcp into .claude/skills/pybert-mcp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pybert-mcp", 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/capn-freako/PyBERT/tree/master/.claude/skills/pybert-mcpType 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 capn-freako/PyBERT --skill pybert-mcp -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install capn-freako/PyBERT pybert-mcp --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/capn-freako/PyBERT.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/pybert-mcp .agents/skills/pybert-mcp && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pybert-mcp" agent skill from https://github.com/capn-freako/PyBERT/tree/master/.claude/skills/pybert-mcp into .agents/skills/pybert-mcp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pybert-mcp", 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 capn-freako/PyBERT --skill pybert-mcp -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install capn-freako/PyBERT pybert-mcp --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/capn-freako/PyBERT.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/pybert-mcp .cursor/skills/pybert-mcp && 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 "pybert-mcp" agent skill from https://github.com/capn-freako/PyBERT/tree/master/.claude/skills/pybert-mcp into .cursor/skills/pybert-mcp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pybert-mcp", 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/capn-freako/PyBERT.git --path .claude/skills/pybert-mcp--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 capn-freako/PyBERT --skill pybert-mcp -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install capn-freako/PyBERT pybert-mcp --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/capn-freako/PyBERT.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/pybert-mcp .gemini/skills/pybert-mcp && 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 "pybert-mcp" agent skill from https://github.com/capn-freako/PyBERT/tree/master/.claude/skills/pybert-mcp into .gemini/skills/pybert-mcp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pybert-mcp", 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 capn-freako/PyBERT pybert-mcpInstalls 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 capn-freako/PyBERT --skill pybert-mcp -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/capn-freako/PyBERT.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/pybert-mcp .github/skills/pybert-mcp && 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 "pybert-mcp" agent skill from https://github.com/capn-freako/PyBERT/tree/master/.claude/skills/pybert-mcp into .github/skills/pybert-mcp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pybert-mcp", 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 capn-freako/PyBERT --skill pybert-mcp -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install capn-freako/PyBERT pybert-mcp --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/capn-freako/PyBERT.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/pybert-mcp .opencode/skills/pybert-mcp && 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 "pybert-mcp" agent skill from https://github.com/capn-freako/PyBERT/tree/master/.claude/skills/pybert-mcp into .opencode/skills/pybert-mcp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pybert-mcp", 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.
pybert-mcpDrive PyBERT's MCP server to run headless serial-link BER simulations, read/write configuration, browse saved results, and inspect IBIS-AMI models, without opening the GUI.
Pybert MCP is an agent skill from capn-freako/PyBERT. Drive PyBERT's MCP server to run headless serial-link BER simulations, read/write configuration, browse saved results, and inspect IBIS-AMI models, without opening the GUI. Use when asked to run a PyBERT simulation, tune Tx/Rx/channel/CTLE/DFE settings, evaluate link performance (BER, jitter), compare configurations, or introspect an IBIS/AMI file.
Its SKILL.md is about 1.6k 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, covering MCP servers. It works with Model Context Protocol and Python. The repository describes itself as: Serial communication link bit error rate tester simulator, written in Python. The licence is BSD-3-Clause.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dee27ab. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
mcp__pybert__get_default_configmcp__pybert__get_configmcp__pybert__set_configmcp__pybert__run_simulationmcp__pybert__inspect_results_filemcp__pybert__list_ibis_modelsmcp__pybert__inspect_ibis_modelFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From 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.
Pybert MCP loads about 1.6k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 729 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 capn-freako/PyBERT at commit dee27ab, republished under its BSD-3-Clause licence (© capn-freako). 729 words, ~1,556 tokens.
.claude/skills/pybert-mcp/SKILL.md (or your agent's skills folder).Seven tools, registered as mcp__pybert__* (server defined in .mcp.json, implementation in
src/pybert/mcp/server.py). Every call constructs a fresh, isolated PyBERT instance
server-side — there is no session state between calls, and no shared cache. Whatever settings you
want in effect for a given run_simulation (or set_config) call must be present in the config
dict you pass to that call.
mcp extra installed: uv sync --extra mcp. If it isn't, tool calls will
fail at the transport level (the server process itself exits with a clear "MCP support requires:
pip install 'pipbert[mcp]'" message if invoked directly, but from inside a session that just
looks like the server failing to start — tell the user to run uv sync --extra mcp if that
happens)..mcp.json) — not the user's shell cwd, not this skill's directory. Always
pass repo-relative paths (e.g. "models/ibisami/example_rx.ibs"), matching how paths are used
throughout this repo's own tests and examples (tests/test_mcp.py, examples/mcp_client.py).get_default_config / get_config / set_configget_default_config() or get_config(config_file) —
never hand-build one. It has ~88 keys; real names include bit_rate, nbits, eye_bits,
tx_taps, rx_bw, peak_mag, rx_use_viterbi, use_dfe. Don't guess a key name; read it off
the dict you just fetched.set_config and run_simulation validate keys strictly: an unrecognized key (e.g. a typo
like "bit_rat") raises an error naming the bad key(s). That's intentional — treat it as "you
used a wrong key name," not as a bug to route around.set_config(overrides, out_file, base_config_file=None) layers overrides onto
base_config_file (or the defaults) and writes the result to out_file as YAML — it does not
run a simulation. Use it to persist a tuned configuration for later use with the GUI
(pybert -c out_file) or CLI (pybert sim out_file).run_simulationrun_simulation(config, results_file=None) runs headless and returns scalar metrics directly:
status, total_perf, jitter_perf, n_errs_dfe, n_errs_viterbi, chnl_dly, isi_dfe,
dcd_dfe, pj_dfe, rj_dfe, perf_info (an HTML table), jitter_info.
status is a free-text log message, not a boolean — don't treat any
non-empty string as success. On success it ends as "Ready.". On failure it starts with
"Exception: ..." or reads "Aborted Simulation". Check for those.n_errs_viterbi == -1 means Viterbi/FEC decoding wasn't enabled for that run (rx_use_viterbi
was false) — it's a sentinel, not an error.nbits/eye_bits first (e.g. 1000/500) — full-length
runs are much slower and unnecessary until you've converged on settings worth a final,
full-length confirmation run.results_file when you actually need inspect_results_file afterward — it triggers
extra plot-data population and file I/O a metrics-only call doesn't need.inspect_results_fileOnly works on files written by run_simulation(..., results_file=...) (or pybert sim). It
reports {array_name: {shape, dtype, min, max, mean}} per waveform (impulse/step/pulse responses,
etc.) — never raw samples, and never scalar performance metrics (those exist only live,
via run_simulation's return value — they aren't persisted in .pybert_data files). If you need
actual sample values, there is no tool for that here; say so rather than inventing numbers.
list_ibis_models / inspect_ibis_modelTwo-step, always in this order:
list_ibis_models(ibis_file) — confirms the file parses (parsing_errors == "Success!") and
lists valid components/models names.inspect_ibis_model(ibis_file, model_name) — pass an exact name from step 1's models list.inspect_ibis_model returns null for zout/slew on Rx-only models and for zin on Tx-only
models — that's expected (those are driver-only / receiver-only properties), not missing data.
ami_files lists DLL/SO + .ami paths per platform/bitness; this tool never executes the AMI
model itself.
Tune a parameter and compare performance:
get_default_config() (or get_config on an existing file) → cfg.cfg["nbits"] / cfg["eye_bits"] for speed.cfg (e.g. cfg["rx_bw"],
cfg["peak_mag"], cfg["tx_taps"]) → run_simulation(cfg) → compare total_perf /
jitter_perf across variants, checking status on each.nbits/eye_bits for the number you actually
report, optionally with results_file set. Report the numbers a tool call actually returned —
never estimate or interpolate a result.Persist a tuned configuration: set_config(overrides, out_file) once you've found values
worth keeping.
get_default_config/get_config, don't retry the same key.© capn-freako, BSD-3-Clause. 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 .claude/skills/pybert-mcp of capn-freako/PyBERT.
Open the folder on GitHubat commit dee27ab
Pybert MCP 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 |
|---|---|---|---|---|---|---|
| Pybert MCP this skillcapn-freako/PyBERT | 150 | — | ~1.6k | Automated safety check: Pass | BSD-3-Clause | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| MemPalace Setup and OperationMemPalace/mempalace | 59k | — | ~2.2k | Automated safety check: Pass | MIT | |
| FastmcpTommy-yw/RunbookHermes | 546 | 3 repos | ~2.1k | Automated safety check: Pass | MIT | |
| Fastmcp Client CLIPrefectHQ/fastmcp | 28k | — | ~823 | Automated safety check: Pass | 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.
MemPalace/mempalace
Installs and configures MemPalace as a private local palace, a shared-brain hub or a client of an existing hub, including MCP registration and version-correct initialization.
Tommy-yw/RunbookHermes
Build, test, inspect, install, and deploy MCP servers with FastMCP in Python.
PrefectHQ/fastmcp
Query and invoke tools on MCP servers using fastmcp list and fastmcp call.
archestra-ai/archestra
Migrate an existing agentic PoC/pilot (Claude Code project files, MCP configs, hooks, local tools, openclaw config, or similar hand-rolled setup artifacts) into an Archestra instance.
Works with
Categories
Drive PyBERT's MCP server to run headless serial-link BER simulations, read/write configuration, browse saved results, and inspect IBIS-AMI models, without opening the GUI. Pybert MCP is an agent skill from capn-freako/PyBERT. Drive PyBERT's MCP server to run headless serial-link BER simulations, read/write configuration, browse saved results, and inspect IBIS-AMI models, without opening the GUI.
Pybert MCP fits situations like: asked to run a PyBERT simulation; tune Tx/Rx/channel/CTLE/DFE settings; evaluate link performance (BER; compare configurations.
Run `npx skills add capn-freako/PyBERT --skill pybert-mcp -a claude-code`. Or copy the skill folder (.claude/skills/pybert-mcp in capn-freako/PyBERT) into .claude/skills/pybert-mcp in your project. Claude Code loads it when a task matches its description.
Run `npx skills add capn-freako/PyBERT --skill pybert-mcp -a codex`. Or copy the skill folder (.claude/skills/pybert-mcp in capn-freako/PyBERT) into .agents/skills/pybert-mcp 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 capn-freako/PyBERT --skill pybert-mcp -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pybert-mcp, .gemini/skills/pybert-mcp, .github/skills/pybert-mcp and .opencode/skills/pybert-mcp in your project.
Going by SKILL.md and its folder, Pybert MCP needs the command-line tools its instructions call (uv). Our summary lists: Python 3. Its frontmatter pre-approves these tools: mcp__pybert__get_default_config, mcp__pybert__get_config, mcp__pybert__set_config, mcp__pybert__run_simulation, mcp__pybert__inspect_results_file, mcp__pybert__list_ibis_models, mcp__pybert__inspect_ibis_model.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. 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.
Pybert MCP is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.2k 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 Pybert MCP: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MemPalace Setup and Operation (MemPalace/mempalace, 59k stars) and Fastmcp (Tommy-yw/RunbookHermes, 546 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
capn-freako (a GitHub user) maintains it in capn-freako/PyBERT, which has 150 GitHub stars. The repository was last updated on October 1, 2026.
Source: capn-freako/PyBERT on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.