skillfinder-mcp
Searches and retrieves skills from a GitHub repository, with automatic caching and background sync to keep the index up-to-date.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@skillfinder-mcpsearch for skills on React hooks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SkillFinder MCP
SkillFinder MCP is an MCP (Model Context Protocol) server that provides on-demand skill discovery for AI coding agents.
Instead of loading a full skill library into context up front, it lets an agent query only what is relevant, pulls skills from GitHub, and returns full SKILL.md content for immediate use.
On startup, the server hydrates from local cache immediately (if present), then checks upstream SHA in the background and refreshes automatically when needed.
During package installation, SkillFinder also attempts a one-time cache prewarm so the first MCP query is faster.
Why Use It
Reduces context bloat by loading only relevant skills.
Uses fast local BM25 ranking over skill metadata.
Auto-syncs from the upstream repository when content changes.
Runs over stdio with no database, embeddings, or external service.
Related MCP server: skillsmp-mcp-server
Features
Fast BM25 search over skill name, description, and tags.
Immediate cache hydration with background SHA validation.
Duplicate skill handling with preference for canonical
skills/paths.Local disk cache for fast warm starts.
Automatic zip-archive fallback when GitHub API is unavailable/rate-limited.
Tools Exposed
search_skills(query: string, limit?: number)Returns the most relevant skills and fullSKILL.mdcontent.refresh_index()Forces a full index rebuild from GitHub (bypasses cache check).
Installation and Usage
SkillFinder MCP runs via stdio and is typically launched with npx.
Claude Desktop
Config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"skillfinder": {
"command": "npx",
"args": ["-y", "skillfinder-mcp"]
}
}
}Cursor
In Cursor: Features -> MCP Servers -> Add New MCP Server
Type:
commandName:
skillfinderCommand:
npx -y skillfinder-mcp
Claude Code
claude mcp add skillfinder -- npx -y skillfinder-mcpConfiguration
Set optional environment variables in your MCP server config:
Variable | Description | Default |
| GitHub repository containing skills ( |
|
| Default number of search results ( |
|
| Optional GitHub token to increase API limit | None |
| Parallel raw file fetch count during full index build ( |
|
| Per-request timeout in milliseconds ( |
|
| Enable/disable install-time cache prewarm ( | Enabled |
Local Development
npm install
npm run build
npm startRun the automated test suite:
npm testRun integration test:
node test-run.mjsOperational Notes
Cache location:
macOS:
~/Library/Caches/skillfinder-mcp/index.jsonLinux:
$XDG_CACHE_HOME/skillfinder-mcp/index.json(or~/.cache/...)Windows:
%LOCALAPPDATA%\skillfinder-mcp\index.json
If GitHub is temporarily unavailable, stale cache is used when present.
Install-time prewarm does not fail installation if GitHub is unavailable.
First run can take longer due to full index fetch (often 10-30s depending on network).
Warm starts are typically near-instant because results are served from cache.
License
MIT. See LICENSE.
Available Tools
2 toolsrefresh_indexA
Force a full re-fetch of the skill index from GitHub, bypassing the cache. Use this if you know the upstream skill repo was recently updated.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose that the operation re-fetches from GitHub and bypasses the cache, which is useful. However, it does not mention potential side effects, failure conditions, network dependency, or whether the cache is invalidated before the fetch succeeds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core behavior is front-loaded, and the usage condition follows directly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, straightforward refresh operation, the description is complete: it states what happens, where data comes from, and when to use it. The sibling tool is not confused with this one, and no output schema is needed for such a simple action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides full coverage and the description does not need to explain parameter meaning. The baseline of 4 applies, and the description adds context about the underlying fetch behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Force a full re-fetch') applied to a specific resource ('the skill index from GitHub') and distinguishes it from the sibling search_skills, which searches rather than refreshes. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit condition for use: 'Use this if you know the upstream skill repo was recently updated.' It could also state when not to use it, but the provided condition is clear and actionable enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_skillsA
Search the skill library for skills relevant to your current task. Pass a natural language description of what you're working on and get back the most relevant skill documents with full content. Call this BEFORE starting any coding task to get specialized guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (default: 3, max: 10) | |
| query | Yes | Natural language description of the task or topic to find skills for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses the input (natural language task description) and output (full content of relevant skill documents), which implies a read-only search operation. It does not describe ordering guarantees or indexing behavior, but that is acceptable for a straightforward search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action and output are front-loaded, and the usage timing is stated at the end without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter search tool without an output schema, the description covers the input format, output behavior, and when to invoke it. The limit parameter is already documented in the schema, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already well documented: query as a natural language description and limit with default and maximum. The description adds little beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly specifies the verb 'Search', the resource 'skill library', and the return value 'most relevant skill documents with full content'. The search-vs-index purpose is unambiguous even without naming the sibling tool refresh_index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool: 'Call this BEFORE starting any coding task to get specialized guidance'. This provides a strong trigger condition, though it does not name alternatives or describe when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.1.0- First observed
refresh_index - First observed
search_skills
TDQS
Scored across 2 tools
search_skills and refresh_index serve clearly different purposes—one retrieves relevant skill documents, the other updates the underlying index. There is no overlap or ambiguity between them.
Both tool names follow a consistent verb_noun snake_case pattern (search_skills, refresh_index). The verbs clearly describe the action and the nouns identify the target.
Two tools is slightly below the typical 3-15 range, but for a focused skill-finding server the pair is logical: one core search tool and one maintenance tool. It is not thin enough to feel incomplete.
The domain is read-only skill discovery, and the search tool returns full skill content while refresh_index keeps the library current. No obvious operations are missing for this server's stated purpose.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Capability registry for the agentic economy. Semantic search over verified MCP server listings.
Search engine for AI agents to find MCP servers, A2A agents, and skills on their own.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that generates skill manifests from GitHub skills directories and provides tools to recommend and download AI agent skills.38 npmApache 2.0
- AlicenseAqualityCmaintenanceThis MCP server enables AI agents to search, discover, and install skills from the SkillsMP marketplace, with support for keyword and semantic search, skill content retrieval, and installation to various coding agents.5144 npm3MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for SkillDB that enables AI assistants to search, load, and manage AI agent skills directly.51 npmMIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that lets AI agents search, view, install, and validate skills from the skillhub registry through tool calls.MIT