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.
Interact with a Simulink model currently open in MATLAB via the MATLAB MCP server.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins simulink-interactions --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/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions .claude/skills/simulink-interactions && 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 "simulink-interactions" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions into .claude/skills/simulink-interactions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simulink-interactions", 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/hashgraph-online/awesome-codex-plugins/tree/main/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactionsType 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 hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins simulink-interactions --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions .agents/skills/simulink-interactions && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "simulink-interactions" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions into .agents/skills/simulink-interactions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simulink-interactions", 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 hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins simulink-interactions --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions .cursor/skills/simulink-interactions && 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 "simulink-interactions" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions into .cursor/skills/simulink-interactions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simulink-interactions", 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/hashgraph-online/awesome-codex-plugins.git --path plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions--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 hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins simulink-interactions --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions .gemini/skills/simulink-interactions && 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 "simulink-interactions" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions into .gemini/skills/simulink-interactions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simulink-interactions", 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 hashgraph-online/awesome-codex-plugins simulink-interactionsInstalls 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 hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions .github/skills/simulink-interactions && 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 "simulink-interactions" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions into .github/skills/simulink-interactions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simulink-interactions", 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 hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins simulink-interactions --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions .opencode/skills/simulink-interactions && 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 "simulink-interactions" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions into .opencode/skills/simulink-interactions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simulink-interactions", 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.
simulink-interactionsInteract with a Simulink model currently open in MATLAB via the MATLAB MCP server.
Simulink Interactions is an agent skill from hashgraph-online/awesome-codex-plugins. Interact with a Simulink model currently open in MATLAB via the MATLAB MCP server. Use this skill whenever the user asks to inspect, modify, query, or navigate a Simulink model that is open in MATLAB — for example changing block properties, finding blocks, adding blocks, connecting signals, or navigating model hierarchy. Trigger whenever the user refers to "this model", "this block", "this subsystem", "selected blocks", or asks to do anything to a Simulink model without specifying a file path to open. Also…
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files.
It sits in Agent Workflows. It works with Model Context Protocol. The repository describes itself as: A curated list of awesome OpenAI Codex / ChatGPT plugins, skills, and resources. The 1 Codex Marketplace. See live plugins at: https://hol.org/plugins/best-codex-plugins. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 78497e5. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are matlab).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Simulink Interactions loads about 2.3k tokens when it runs. Until then it costs about 169 tokens; SKILL.md has 642 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 hashgraph-online/awesome-codex-plugins at commit 78497e5, republished under its Apache-2.0 licence (© hashgraph-online). 642 words, ~2,254 tokens.
.claude/skills/simulink-interactions/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.This skill defines conventions for interacting with the Simulink model currently open in MATLAB, using mcp__matlab__evaluate_matlab_code as the primary tool.
If the MATLAB MCP tool is unavailable in the current session but the user explicitly asks for real model creation or modification, fall back to local MATLAB execution such as matlab -batch. State the fallback briefly and keep the workflow identical: inspect, modify, verify, save.
Before doing anything, determine what model/system/block(s) the user is referring to.
| User says | Resolution |
|---|---|
| "this model" | bdroot(gcs) |
| "this system" / "this subsystem" | gcs |
| "this block" | gcb |
| "selected blocks" (plural) | see snippet below |
| "all [Type] blocks in this subsystem" | see snippet below |
| "all [Type] blocks in the model" | see snippet below |
opts = Simulink.FindOptions;
opts.SearchDepth = 1;
blks = getfullname(Simulink.findBlocks(gcs, 'Selected', 'on', opts));opts = Simulink.FindOptions;
opts.SearchDepth = 1;
BlockType = 'Gain'; % replace with actual type
blks = getfullname(Simulink.findBlocksOfType(gcs, BlockType, opts));BlockType = 'Gain'; % replace with actual type
blks = getfullname(Simulink.findBlocksOfType(bdroot, BlockType));Use get_param to read current state before making changes. This helps you confirm you have the right block and understand its current configuration.
get_param(gcb, 'Gain') % read a specific parameter
get_param(gcb,'DialogParameters') % list all dialog parameters
get_param(gcb, 'ObjectParameters') % list all available parametersUse set_param for most property changes:
set_param(gcb, 'Gain', '2')
set_param(gcb, 'BackgroundColor', 'red')For bulk operations on multiple blocks, iterate over the blks cell array:
for i = 1:numel(blks)
set_param(blks{i}, 'BackgroundColor', 'yellow');
endWhen adding blocks, follow these rules:
'Position' argument to add_blockset_param(blk, 'Position', ...) or set_param(blk, 'Location', ...)Simulink.BlockDiagram.arrangeSystemgetBlockPosition and setBlockDimensions (bundled in utils/) for all positioninggetBlockDimensions; to resize, use setBlockDimensionsUtility signatures (see utils/ for full source):
[x, y] = getBlockPosition(block) % top-left corner
[width, height] = getBlockDimensions(block) % block size
setBlockPosition(block, x, y) % move, preserving size
setBlockDimensions(block, width, height) % resize, preserving top-leftNever use set_param(block, 'Position', ...) — always use setBlockPosition and/or setBlockDimensions instead.
% Example: add a Gain block to the right of the current block
modelName = bdroot(gcs);
refBlk = gcb;
% 1. Get reference block geometry
[refX, refY] = getBlockPosition(refBlk);
[refW, ~] = getBlockDimensions(refBlk);
% 2. Add block (no position argument)
newBlk = [modelName '/MyGain'];
add_block('built-in/Gain', newBlk);
% 3. Position it to the right of the reference block
gap = 50;
setBlockPosition(newBlk, refX + refW + gap, refY);
% 4. Connect it
Simulink.connectBlocks(Source,Destination);When editing a MATLAB Function block programmatically, do not assume set_param(block,'Script',...) exists. For MATLAB Function blocks, update the script through MATLABFunctionConfiguration:
blk = 'model/MyMATLABFunction';
cfg = get_param(blk, 'MATLABFunctionConfiguration');
cfg.FunctionScript = sprintf([ ...
'function y = fcn(u)\n' ...
'%%#codegen\n' ...
'y = 2*u;\n' ...
'end\n']);If the function body references workspace parameters such as Kp, tau_sys, or Q_max, explicitly create Stateflow.Data entries with Scope = 'Parameter' or Simulink may fail size/type inference during compile:
rt = sfroot;
machine = rt.find('-isa', 'Stateflow.Machine', 'Name', bdroot(blk));
chart = machine.find('-isa', 'Stateflow.EMChart', 'Path', blk);
param = Stateflow.Data(chart);
param.Name = 'Q_max';
param.Scope = 'Parameter';Without this explicit parameter declaration, a programmatically generated MATLAB Function block can fail with errors like "cannot determine output size/type" even when the same code works interactively.
Common built-in library paths:
built-in/Gainbuilt-in/Productbuilt-in/Constantbuilt-in/Scopebuilt-in/SubsystemException for Inport and Outport use:
sprintf('simulink/Ports &\nSubsystems/In1')sprintf('simulink/Ports &\nSubsystems/Out1')Exception for Sum. Never use the Sum block, always use Add or Subtract instead:
sprintf(['simulink/Math\nOperations/Add'])sprintf(['simulink/Math\nOperations/Subtract'])Always use Simulink.connectBlocks to connect blocks — never add_line. This API is more robust and handles port resolution automatically.
% Connect two blocks (Simulink picks the appropriate ports)
Simulink.connectBlocks(srcBlock, dstBlock);
% Connect specific ports when needed
Simulink.connectBlocks([srcBlock '/1'], [dstBlock '/1']);When the user asks to log a signal, use Simulink's built-in signal logging on the port directly. Never use a To Workspace block or a To File block.
% Log the first output port of a block
ph = get_param(gcb, 'PortHandles');
set(ph.Outport(1), 'DataLogging', 'on');
% Set the name lf the logged signal
set(ph.Outport(1), 'DataLoggingNameMode', 'SignalName');
set(ph.Outport(1), 'Name', 'mySignalName');To log a specific block by path instead of gcb:
ph = get_param('modelName/BlockName', 'PortHandles');
set(ph.Outport(1), 'DataLogging', 'on');After simulation, logged signals are accessible via logsout in the SimulationOutput object (when using sim()) or via Simulink.SimulationData.Dataset.
If the user explicitly asks for To Workspace blocks or named workspace artifacts as deliverables, follow the user's request. The "never use To Workspace" rule is only the default when the user asks to log signals and does not constrain the export mechanism.
When adding a group of related blocks that should live inside a subsystem, add and connect all the blocks first (following the iterative one-at-a-time workflow above), then group them into a subsystem at the end:
% Collect handles of all blocks to group
blocks = [get_param('model/Block1', 'Handle'), ...
get_param('model/Block2', 'Handle'), ...
get_param('model/Block3', 'Handle')];
% Group into a subsystem — Simulink handles port creation automatically
Simulink.BlockDiagram.createSubsystem(blocks);createSubsystem automatically adds the necessary Inport/Outport blocks inside the subsystem and rewires external connections. Do not manually create a Subsystem block and move blocks into it.
Simulink.BlockDiagram.deleteContents only accepts a block diagram, not an arbitrary subsystem path. If you need to rebuild a subsystem in place, delete its lines and child blocks manually:
subsys = 'model/MySubsystem';
lines = find_system(subsys, 'FindAll', 'on', 'SearchDepth', 1, 'Type', 'line');
if ~isempty(lines)
delete_line(lines);
end
blocks = find_system(subsys, 'SearchDepth', 1, 'Type', 'Block');
blocks = setdiff(blocks, {subsys}, 'stable');
for i = 1:numel(blocks)
delete_block(blocks{i});
endThis is the safe pattern when regenerating subsystem internals from a script.
After making changes, confirm success by reading back the modified parameter or reporting what was changed.
© hashgraph-online, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files in plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions of hashgraph-online/awesome-codex-plugins.
Open the folder on GitHubat commit 78497e5
Simulink Interactions 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 |
|---|---|---|---|---|---|---|
| Simulink Interactions this skillhashgraph-online/awesome-codex-plugins | 1.2k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server Builderanthropics/skills | 180k | 64 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 | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Fastmcp Client CLIPrefectHQ/fastmcp | 28k | 1 repos | ~823 | Automated safety check: Pass | Apache-2.0 | |
| MemPalace Memory SearchMemPalace/mempalace | 59k | — | ~1.4k | Automated safety check: Pass | MIT |
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.
PrefectHQ/fastmcp
Query and invoke tools on MCP servers using fastmcp list and fastmcp call.
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.
hashgraph-online/awesome-codex-plugins
Create original anime-style reaction stickers as looping GIFs and MP4 previews, using generated character pose sheets and timed key poses.
hashgraph-online/awesome-codex-plugins
Manage and query Calibre libraries with the calibredb CLI (local paths or Calibre Content server URLs).
hashgraph-online/awesome-codex-plugins
A skill your agent uses when adding, changing, testing, or debugging Rust HTTP APIs and services, especially when Codex needs black-box integration tests, random-port app startup, real database test…
hashgraph-online/awesome-codex-plugins
Make a studio's game look like something at build time — a cover from a real frame of the game (free), painted covers, backdrops, textures and character plates from image models through the…
hashgraph-online/awesome-codex-plugins
Balance game difficulty, resources, rewards, probability, progression, economies, and dominant strategies.
hashgraph-online/awesome-codex-plugins
Analyze nonfiction manuscripts for reader engagement signals, including heading-level word counts, slow starts, long slogs, weak takeaway titles, value pacing, beta-reader comment dropoff, and…
Works with
Categories
Interact with a Simulink model currently open in MATLAB via the MATLAB MCP server. Simulink Interactions is an agent skill from hashgraph-online/awesome-codex-plugins. Interact with a Simulink model currently open in MATLAB via the MATLAB MCP server.
Simulink Interactions fits situations like: the user asks to inspect; navigate a Simulink model that is open in MATLAB — for example changing block properties; connecting signals; navigating model hierarchy.
Run `npx skills add hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a claude-code`. Or copy the skill folder (plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions in hashgraph-online/awesome-codex-plugins) into .claude/skills/simulink-interactions in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a codex`. Or copy the skill folder (plugins/summer521521/MATLAB_Simulink_plugin/skills/simulink-interactions in hashgraph-online/awesome-codex-plugins) into .agents/skills/simulink-interactions 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 hashgraph-online/awesome-codex-plugins --skill simulink-interactions -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/simulink-interactions, .gemini/skills/simulink-interactions, .github/skills/simulink-interactions and .opencode/skills/simulink-interactions in your project.
SKILL.md names no scripts, command-line tools or credentials: Simulink Interactions is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Simulink Interactions is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9k 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 Simulink Interactions: 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 Fastmcp Client CLI (PrefectHQ/fastmcp, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hashgraph-online (a GitHub organization) maintains it in hashgraph-online/awesome-codex-plugins, which has 1,242 GitHub stars. The repository holds 686 skills in this directory. The repository was last updated on October 8, 2026.
Source: hashgraph-online/awesome-codex-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.