CtrlK
BlogDocsLog inGet started
Tessl Logo

fastmcp

Build, test, and deploy Python MCP servers.

56

Quality

65%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./optional-skills/mcp/fastmcp/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

81%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is a strong, executable skill: a well-sequenced build-test-install-deploy workflow with genuine validation gates, concrete CLI commands throughout, and appropriate offloading of CLI detail to a real reference file. Its main defect is that the three template files it repeatedly directs Claude to start from are missing from the bundle, which undercuts both the actionability of those pointers and the file inventory.

Suggestions

Ship the three template files (`templates/api_wrapper.py`, `templates/database_server.py`, `templates/file_processor.py`) in the bundle, or remove them from "Included Files" and the per-pattern "Start from" lines and inline the minimal starting code instead.

Replace the "FastMCP command missing" troubleshooting block with a one-line pointer back to Prerequisites to avoid the duplicated `pip install fastmcp` snippet.

Trim the good/weak tool-name example lists to one line each; the verb-based-name rule already conveys the point.

DimensionReasoningScore

Conciseness

The body is mostly lean and assumes competence — no explanations of what MCP or Python are; every section is skill-specific workflow guidance ("Prefer a thin server with good names, docstrings, and schemas over a large server with vague tools"). Minor trimming is possible: the "FastMCP command missing" troubleshooting section repeats the identical `pip install fastmcp` block already shown in Prerequisites, and the good/weak tool-name examples slightly over-illustrate a rule Claude could apply alone.

4 / 5

Actionability

The commands are fully copy-paste ready with concrete values (`fastmcp call acme_server.py search_resources query=router limit=5 --json`, `fastmcp install cursor acme_server.py -e .`), and the scaffold invocation is complete. It falls short of 5 because three of the four "Included Files" entries — `templates/api_wrapper.py`, `templates/database_server.py`, `templates/file_processor.py` — do not exist in the bundle, so every "Start from templates/..." instruction and the `--template api_wrapper` flag cannot actually be executed as written.

4 / 5

Workflow Clarity

The seven-step workflow is explicitly sequenced with validation gates: "Always run at least one real `fastmcp call` against each new tool before claiming the server works", "Install into a Client When Local Validation Passes", "Deploy After the Local Contract Is Stable", plus a Quality Bar checklist and a Troubleshooting section covering failure recovery. This matches the anchor "Clear sequence with explicit validation steps; feedback loops for error recovery; checklists for complex processes".

5 / 5

Progressive Disclosure

Structure is good: an "Included Files" section inventories the bundle, `scripts/scaffold_fastmcp.py` and `references/fastmcp-cli.md` are both real files, references are one level deep, and the final References section clearly signals where the CLI detail lives. It is not 5 because the declared template files are absent from the bundle, so navigation to the primary reference material is partially broken.

4 / 5

Total

17

/

20

Passed

Description

50%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is concise and names a real domain, but it is a bare verb list with no trigger guidance and no mention of FastMCP, the framework the entire skill is built around. All the excellent "when to use / when not to use" content exists in the body but was not surfaced into the description.

Suggestions

Append an explicit trigger clause, e.g. "Use when the task is to create or expose an MCP server in Python, wrap an API or database as MCP tools, or install a FastMCP server into Claude Code or another MCP client."

Include the keyword "FastMCP" and the spelled-out phrase "Model Context Protocol (MCP)" so natural user phrasings match the description.

Add a boundary sentence distinguishing this from connecting existing servers, e.g. "Use native-mcp when the server already exists and only needs to be connected."

DimensionReasoningScore

Specificity

"Build, test, and deploy Python MCP servers." names the domain (Python MCP servers) and three verbs, but the verbs are generic — the 4-anchor requires specific actions like "Extract text from PDFs, fills forms, converts pages to images", whereas here nothing says what building or deploying concretely involves. It is above score 2 ("Processes PDF files") because three actions and the domain are named, but not comprehensive enough for 4.

3 / 5

Completeness

The "what" is clear (build, test, deploy Python MCP servers) but there is no "Use when..." clause or any equivalent trigger guidance, which per the judging guidelines caps completeness at 3. The body contains extensive when-to-use guidance ("Use this skill when the task is to: create a new MCP server in Python...") that never made it into the description.

3 / 5

Trigger Term Quality

Natural terms present are "Python" and "MCP servers", but the description never mentions "FastMCP" (the framework the skill is actually about) or the spelled-out "Model Context Protocol", nor variations like "wrap an API as tools". This matches "Some relevant keywords but missing common variations or synonyms" — above the generic-only anchors, below the good coverage of anchor 4.

3 / 5

Distinctiveness Conflict Risk

"Python MCP servers" carves out a niche but the description itself gives no boundary against adjacent skills — the body explicitly mentions sibling skills ("Use `native-mcp` when the server already exists... Use `mcporter` for ad-hoc CLI access") yet none of that distinctiveness appears in the description. It could still overlap with generic MCP-connection skills, matching "Somewhat specific but could still overlap with similar skills".

3 / 5

Total

12

/

20

Passed

Validation

81%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

metadata_field

'metadata' should map string keys to string values

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

13

/

16

Passed

Repository
NousResearch/hermes-agent
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.