Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_FILENoOverride the log file path (defaults to 'logs/skills_mcp_server.log').
SKILLS_DIRNoOverride the skills directory path (defaults to '<repo_root>/skills').
SKILLS_GIT_URLNoGit URL for the skills repository (optional). If set, the server will clone/pull updates into the skills directory on startup.
SKILLS_GIT_BRANCHNoBranch name for the skills repository (optional, defaults to 'main').main

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
skill_server_infoA

function_purpose: Return server-level documentation including purpose and usage.

Description:

  • Provides an overview of the ClaudeSkills MCP Server, its transport mode, and where skills are loaded from.

  • Useful for clients to show contextual info and help users understand capabilities and configuration.

Returns:

  • name: str Server name

  • description: str High-level description of server purpose and capabilities

  • skills_dir: str Absolute path to the skills directory in use

  • transport: str Transport used by the server (e.g., "stdio")

Usage:

  • Call this tool once when connecting, then cache/show details in the client UI or logs.

skill_list_allA

function_purpose: List available skills with brief metadata (excluding body).

Description:

  • Enumerates all discovered skills from the skills directory and returns summary metadata.

  • Excludes the markdown body for compact listing; use get_skill_detail for full content.

Args:

  • markdown_output: bool If True, return formatted markdown string instead of JSON list (default: False)

Returns:

  • If markdown_output=False: List of dict entries with name, description, license, allowed_tools, metadata, path

  • If markdown_output=True: formatted markdown string with skill catalog

Usage:

  • Use this to present a catalog of available skills to the agent or user.

  • Set markdown_output=True for a more readable format.

skill_get_detailA

function_purpose: Get full parsed details for a specific skill by name (frontmatter + body + notes).

Description:

  • Returns the complete parsed skill including frontmatter fields and the markdown body content.

  • By default, appends all notes from the _notes/ directory to provide complete context including learnings, improvements, corrections, and examples discovered while using the skill.

Args:

  • name: str The hyphen-case name of the skill (must match the skill directory name)

  • include_notes: bool If True (default), append notes from _notes/ to the body for complete context

  • markdown_output: bool If True, return formatted markdown string instead of JSON dict (default: False)

Returns:

  • If markdown_output=False: dict containing name, description, license?, allowed_tools?, metadata?, path, body

  • If markdown_output=True: formatted markdown string with frontmatter and body

Usage:

  • Use this when the agent needs the full guidance text and metadata for a skill.

  • Notes are included by default to ensure the agent sees all relevant context, corrections, and examples.

  • Set include_notes=False only if you want just the core SKILL.md content without historical notes.

  • Set markdown_output=True to get a readable markdown document instead of JSON structure.

skill_search_indexA

function_purpose: Search skills by case-insensitive substring across name, description, and body.

Description:

  • Performs a simple substring search across the parsed name, description, and body for each skill.

Args:

  • query: str Case-insensitive substring

  • markdown_output: bool If True, return formatted markdown string instead of JSON list (default: False)

Returns:

  • If markdown_output=False: List of dicts with name, description, path

  • If markdown_output=True: formatted markdown string with search results

Usage:

  • Use this to quickly locate relevant skills by topic or keywords.

  • Set markdown_output=True for a more readable format.

skill_list_assetsA

function_purpose: List non-SKILL.md files within a skill folder (recursive).

Description:

  • Enumerates files inside a specific skill directory, excluding SKILL.md, recursively.

  • Useful for discovering supporting artifacts, reference materials, templates, and helper scripts that belong to a skill.

Args:

  • name: str The hyphen-case name of the skill whose assets to list

  • markdown_output: bool If True, return formatted markdown string instead of JSON list (default: False)

Returns:

  • If markdown_output=False: list of dicts with path, size, mime_type

  • If markdown_output=True: formatted markdown string with asset listing

Usage:

  • Call before reading assets to present available files to the agent or user.

  • For reading actual content, use skill_read_asset() with the returned path.

  • Set markdown_output=True for a more readable format.

skill_read_assetA

function_purpose: Read a specific asset file within a skill (returns text or base64 data).

Description:

  • Safely reads an asset inside a skill directory, preventing path traversal and limiting size via max_bytes.

  • Returns UTF-8 text when possible, otherwise base64-encoded bytes, including a MIME type guess and truncation flag.

Args:

  • name: str The hyphen-case skill name (must match skill directory)

  • path: str Relative file path within the skill directory

  • max_bytes: int Maximum number of bytes to read (default: 8_388_608)

Returns:

  • dict[str, Any] with:

    • encoding: "text" | "base64"

    • data: str UTF-8 text or base64 string

    • mime_type: str | None Best-effort MIME type guess

    • truncated: bool True if content was cut at max_bytes

Usage:

  • Use after listing assets to fetch the content of a specific file for analysis or display.

  • If the asset is large, consider increasing max_bytes or reading only required portions.

skill_createA

function_purpose: Create a new skill directory containing a SKILL.md per Agent Skills Spec.

Description:

  • Creates a new directory under the skills root whose name matches the skill 'name' frontmatter.

  • Writes a SKILL.md file with YAML frontmatter (name, description, optional license, allowed_tools, metadata) followed by the markdown body.

  • Fails if a skill with that name already exists or if the name is invalid.

Constraints:

  • Additive only; will not overwrite existing skills.

  • Name must be hyphen-case or simple alphanumeric with dashes/underscores.

  • Body may be empty; if empty a placeholder is inserted.

Args:

  • name: str Skill directory and frontmatter name (hyphen-case recommended)

  • description: str Concise description of the skill

  • body: str Markdown guidance content (optional)

  • license: str | None Optional license identifier/text

  • allowed_tools: list[str] Optional list of tool names this skill permits

  • metadata: dict[str, Any] Optional arbitrary metadata mapping

Returns:

  • dict[str, Any] with:

    • created: bool

    • path: str (relative path to SKILL.md within skills dir)

    • message: str status narrative

skill_add_assetA

function_purpose: Add (or optionally overwrite) a single asset file inside an existing skill directory.

Description:

  • Writes a new file under the skill folder (creating parent directories) while enforcing path safety.

  • Supports text (UTF-8) or base64 content for binary assets (e.g. PDFs, images).

  • Will not overwrite existing files unless overwrite=True.

IMPORTANT: After adding an asset, you should ALWAYS create a note (via skill_store_note) documenting:

  • What the asset contains and its purpose

  • When and why an agent should load/use it

  • Any context needed to understand it

  • Example usage patterns if applicable

This ensures the asset remains discoverable and properly documented for future use.

Args:

  • name: str Skill name (directory must already exist)

  • path: str Relative path inside the skill (e.g. "examples/foo.py")

  • content: str Text content or base64 string

  • encoding: str "text" (default) or "base64"

  • overwrite: bool Allow overwriting when True (default False)

Returns:

  • dict with:

    • written: bool

    • path: str Relative normalized path

    • size: int | None

    • message: str

    • binary: bool

skill_add_assetsA

function_purpose: Bulk add multiple assets to a skill.

Description:

  • Convenience wrapper over add_skill_asset for efficiency when scaffolding several files.

  • Applies a shared overwrite policy (individual entries may still be rejected if invalid).

IMPORTANT: After adding assets, you should ALWAYS create a note (via skill_store_note) documenting:

  • What each asset contains and its purpose

  • When and why an agent should load/use them

  • Any context needed to understand them

  • Example usage patterns if applicable

Args:

  • name: str Skill name

  • assets: list[dict] Each: {path: str, content: str, encoding?: "text"|"base64"}

  • overwrite: bool Allow overwriting existing files

Returns:

  • list of result dicts (see add_skill_asset).

skill_store_noteA

function_purpose: Append a new note to a skill capturing learnings, improvements, and scripts.

Description:

  • Safely stores additive notes related to a skill (no edits to existing files). Use this to record observations, corrections, suggested improvements, and example scripts discovered while using the skill.

  • Encourages iterative refinement: if documentation turns out inaccurate or incomplete, add a note that clarifies, extends, or proposes better approaches. Over time, these notes can guide maintainers to improve the canonical SKILL.md.

Constraints:

  • Additions only. This tool never edits existing files; it only creates new note files.

  • Notes are stored under a dedicated '_notes' directory within the skill folder.

Args:

  • name: str The hyphen-case skill name (must match skill directory)

  • title: str A short, descriptive title for the note

  • content: str The body of the note (Markdown supported)

Returns:

  • dict[str, Any] with:

    • path: str Relative path to the created note within the skill directory

    • created: bool True on success

    • message: str Status message

skill_list_notesA

function_purpose: List notes created under a skill's _notes directory.

Description:

  • Enumerates note files stored under a skill's '_notes' and 'notes' directories. Notes are additive records of learnings, improvements, and scripts created via store_skill_note() or manually, intended to refine or clarify skills over time without editing existing files.

Args:

  • name: str The hyphen-case skill name (must match the skill directory)

  • markdown_output: bool If True, return formatted markdown string instead of JSON list (default: False)

Returns:

  • If markdown_output=False: list of dicts with path, size, title, created_at, kind

  • If markdown_output=True: formatted markdown string with note listing

Usage:

  • Use this to browse available notes and select one to read with skill_read_asset().

  • Set markdown_output=True for a more readable format.

skill_trash_user_skillA

function_purpose: Move a user-created skill directory into a trash location instead of hard deleting it.

Policy:

  • Only user-created skills may be trashed. Bundled/Anthropic skills are rejected.

  • The skill directory is moved under a trash/skills subdirectory with a timestamped folder name.

  • All operations are logged to an operations log file.

Args:

  • name: str Skill name to trash

  • force: bool Require explicit confirmation flag (default True). If False, the call is a dry refusal.

Returns:

  • dict[str, Any] with:

    • trashed: bool

    • name: str

    • trash_path: str | None

    • message: str

skill_trash_user_assetA

function_purpose: Move a user-created asset or note into trash instead of deleting it.

Policy:

  • For bundled/Anthropic skills:

    • Only assets under reserved user areas are allowed:

      • "_user_assets/" subtree

      • "_user_notes/" subtree

      • "_notes/" subtree (programmatic notes from skill_store_note)

      • "notes/" subtree (manually created notes)

    • Core assets (including SKILL.md and any other non-user files) cannot be trashed.

  • For user-created skills:

    • Any asset path under the skill directory may be trashed.

  • The target file is moved under trash/assets//__.

  • Operations are logged in an operations log.

Args:

  • name: str Skill name

  • path: str Relative path within the skill directory

Returns:

  • dict[str, Any] with:

    • trashed: bool

    • name: str

    • path: str

    • trash_path: str | None

    • message: str

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tsoernes/skills-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server