Skip to main content
Glama

skill

Load detailed skill instructions with step-by-step guidance, examples, and file references to execute specific tasks within the Skill Jack MCP server.

Instructions

Load a skill's full instructions. Returns the complete SKILL.md content with step-by-step guidance, examples, and file references to follow.

Skills

When a user's task matches a skill description below: 1) activate it, 2) follow its instructions completely.

<available_skills> </available_skills>

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesSkill name from <available_skills>

Implementation Reference

  • Handler function for the 'skill' MCP tool. It parses the input args, retrieves the skill metadata from the shared SkillState, loads the full SKILL.md content using loadSkillContent, and returns it as a text content block or an error response.
    async (args): Promise<CallToolResult> => { const { name } = SkillSchema.parse(args); const skill = skillState.skillMap.get(name); if (!skill) { const availableSkills = Array.from(skillState.skillMap.keys()).join(", "); return { content: [ { type: "text", text: `Skill "${name}" not found. Available skills: ${availableSkills || "none"}`, }, ], isError: true, }; } try { const content = loadSkillContent(skill.path); return { content: [ { type: "text", text: content, }, ], }; } catch (error) { const message = error instanceof Error ? error.message : String(error); return { content: [ { type: "text", text: `Failed to load skill "${name}": ${message}`, }, ], isError: true, }; } }
  • Zod input schema for the 'skill' tool, validating a single 'name' parameter.
    const SkillSchema = z.object({ name: z.string().describe("Skill name from <available_skills>"), });
  • MCP server registration of the 'skill' tool within the registerSkillTool function, including title, dynamic description, schema, annotations, and handler.
    const skillTool = server.registerTool( "skill", { title: "Activate Skill", description: getToolDescription(skillState), inputSchema: SkillSchema, annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false, }, }, async (args): Promise<CallToolResult> => { const { name } = SkillSchema.parse(args); const skill = skillState.skillMap.get(name); if (!skill) { const availableSkills = Array.from(skillState.skillMap.keys()).join(", "); return { content: [ { type: "text", text: `Skill "${name}" not found. Available skills: ${availableSkills || "none"}`, }, ], isError: true, }; } try { const content = loadSkillContent(skill.path); return { content: [ { type: "text", text: content, }, ], }; } catch (error) { const message = error instanceof Error ? error.message : String(error); return { content: [ { type: "text", text: `Failed to load skill "${name}": ${message}`, }, ], isError: true, }; } } );
  • src/index.ts:319-319 (registration)
    Invocation of registerSkillTool in the main MCP server setup, completing the tool registration.
    const skillTool = registerSkillTool(server, skillState);
  • Helper function called by the 'skill' handler to read the full content of a skill's SKILL.md file.
    export function loadSkillContent(skillPath: string): string { return fs.readFileSync(skillPath, "utf-8"); }
Install Server

Other Tools

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/olaservo/skill-jack-mcp'

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