Skip to content

Commit 0e0f3b8

Browse files
sjnimsclaude
andauthored
docs(mcp-integration): add MCP server discovery reference (#74)
## Description Adds comprehensive reference documentation for discovering and evaluating MCP servers to integrate into Claude Code plugins. This addresses a gap in the mcp-integration skill where users had no guidance on finding appropriate servers for their plugin needs. ## Type of Change - [x] Documentation update (improvements to README, CLAUDE.md, or component docs) ## Component(s) Affected - [x] Skills (methodology and best practices) ## Motivation and Context When building a plugin that needs external capabilities (database access, API integration, file operations), users currently must manually browse registries, guess at search terms, evaluate quality blindly, and potentially miss relevant options. This creates friction in the plugin development workflow. Fixes #72 ## How Has This Been Tested? **Test Configuration**: - markdownlint: Passes with no errors - OS: macOS **Test Steps**: 1. Ran `markdownlint` on both changed files - passes 2. Verified file structure matches existing references (server-types.md pattern) 3. Confirmed SKILL.md update correctly references the new file ## Checklist ### General - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings or errors ### Documentation - [x] I have updated the documentation accordingly (README.md, CLAUDE.md, or component docs) - [x] I have verified all links work correctly ### Markdown - [x] I have run `markdownlint` and fixed all issues - [x] My markdown follows the repository style (ATX headers, dash lists, fenced code blocks) ### Component-Specific Checks #### Skills (if applicable) - [x] SKILL.md references section updated - [x] New reference file follows established format - [x] Content organized with clear sections and tables ### Testing - [x] I have verified markdown linting passes ## Changes - **`references/discovery.md`** (new): ~1,100 word reference covering: - Overview of when to use MCP servers vs custom solutions - Official MCP Registry API (endpoint, search syntax, response structure) - Alternative discovery sources (Smithery.ai, npm, GitHub, MCP.SO) - Category mappings table for common plugin needs - Evaluation criteria (popularity, maintenance, quality, red flags) - Discovery workflow recommendations - Reference to companion script in #73 - **`SKILL.md`**: Added reference to new discovery.md file ## Additional Notes This establishes the conceptual foundation; a companion feature issue (#73) will implement the discovery script referenced in the documentation. --- 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 9f1b3e6 commit 0e0f3b8

2 files changed

Lines changed: 306 additions & 0 deletions

File tree

plugins/plugin-dev/skills/mcp-integration/SKILL.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,7 @@ For detailed information, consult:
520520
- **`references/server-types.md`** - Deep dive on each server type
521521
- **`references/authentication.md`** - Authentication patterns and OAuth
522522
- **`references/tool-usage.md`** - Using MCP tools in commands and agents
523+
- **`references/discovery.md`** - Finding and evaluating MCP servers
523524

524525
### Example Configurations
525526

Lines changed: 305 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
# MCP Server Discovery: Finding and Evaluating Servers
2+
3+
Complete reference for discovering MCP servers to integrate into Claude Code plugins.
4+
5+
## Overview
6+
7+
When building plugins that need external capabilities, finding the right MCP server saves development time and leverages community-tested implementations. This guide covers discovery sources, search strategies, and evaluation criteria.
8+
9+
### When to Use MCP Servers
10+
11+
**Integrate existing MCP servers when:**
12+
13+
- Standard functionality exists (file system, database, API clients)
14+
- Multiple tools needed from single service (10+ related operations)
15+
- OAuth or complex authentication required
16+
- Community maintenance preferred over custom implementation
17+
18+
**Build custom solutions when:**
19+
20+
- Functionality is unique to your use case
21+
- Only 1-2 simple tools needed
22+
- Tight integration with plugin logic required
23+
- Existing servers don't meet security requirements
24+
25+
## Official MCP Registry
26+
27+
The official registry at `registry.modelcontextprotocol.io` provides a REST API for discovering servers.
28+
29+
### API Endpoint
30+
31+
```text
32+
https://registry.modelcontextprotocol.io/v0/servers
33+
```
34+
35+
### Search Syntax
36+
37+
**Basic search:**
38+
39+
```text
40+
GET /v0/servers?search=filesystem
41+
```
42+
43+
**With limit:**
44+
45+
```text
46+
GET /v0/servers?search=database&limit=10
47+
```
48+
49+
**Pagination:**
50+
51+
```text
52+
GET /v0/servers?cursor=<cursor_from_previous_response>
53+
```
54+
55+
**Quick test:**
56+
57+
```bash
58+
curl "https://registry.modelcontextprotocol.io/v0/servers?search=filesystem&limit=5"
59+
```
60+
61+
No authentication required. Returns JSON with matching servers.
62+
63+
### Response Structure
64+
65+
```json
66+
{
67+
"servers": [
68+
{
69+
"name": "@modelcontextprotocol/server-filesystem",
70+
"description": "MCP server for file system operations",
71+
"repository": "https://github.com/modelcontextprotocol/servers",
72+
"homepage": "https://modelcontextprotocol.io"
73+
}
74+
],
75+
"cursor": "next_page_cursor"
76+
}
77+
```
78+
79+
### Key Fields
80+
81+
| Field | Description |
82+
|-------|-------------|
83+
| `name` | Package/server name (often npm scope) |
84+
| `description` | Brief functionality summary |
85+
| `repository` | Source code location |
86+
| `homepage` | Documentation URL |
87+
88+
### Limitations
89+
90+
The official registry provides no popularity metrics. Supplement with GitHub stars or npm downloads for quality signals.
91+
92+
## Alternative Discovery Sources
93+
94+
### Smithery.ai
95+
96+
Largest MCP server marketplace with usage metrics.
97+
98+
**URL:** <https://smithery.ai/>
99+
100+
**Advantages:**
101+
102+
- Call volume statistics (popularity indicator)
103+
- Curated categories
104+
- Installation instructions
105+
- User ratings
106+
107+
**Search tips:**
108+
109+
- Browse categories for common use cases
110+
- Sort by popularity for battle-tested servers
111+
- Check "Recently Added" for new capabilities
112+
113+
### npm Registry
114+
115+
Official MCP servers and community packages available via npm.
116+
117+
**Official scope search:**
118+
119+
```bash
120+
npm search @modelcontextprotocol
121+
```
122+
123+
**Community search:**
124+
125+
```bash
126+
npm search mcp-server
127+
```
128+
129+
**Key indicators:**
130+
131+
- Weekly downloads (popularity)
132+
- Last publish date (maintenance)
133+
- Dependency count (complexity)
134+
135+
### GitHub
136+
137+
Direct source code access and community engagement metrics.
138+
139+
**Topic search:**
140+
141+
```text
142+
https://github.com/topics/mcp-server
143+
```
144+
145+
**Curated lists:**
146+
147+
- `awesome-mcp-servers` repositories
148+
- `modelcontextprotocol` organization
149+
150+
**Search queries:**
151+
152+
```text
153+
mcp server in:name,description language:TypeScript
154+
model context protocol in:readme
155+
```
156+
157+
### MCP.SO
158+
159+
Third-party aggregator with rankings and categories.
160+
161+
**URL:** <https://mcp.so/>
162+
163+
**Features:**
164+
165+
- Combined metrics from multiple sources
166+
- Category browsing
167+
- Quick comparison view
168+
169+
## Category Mappings
170+
171+
Find servers for common plugin needs:
172+
173+
| Plugin Need | Search Terms | Notable Servers |
174+
|-------------|--------------|-----------------|
175+
| Database access | postgres, sqlite, database, sql | @modelcontextprotocol/server-postgres, mcp-server-sqlite |
176+
| File operations | filesystem, files, directory | @modelcontextprotocol/server-filesystem |
177+
| GitHub integration | github, git, repository | Official GitHub MCP server |
178+
| Web search | search, web, exa, tavily | Exa MCP, Tavily MCP |
179+
| Browser automation | browser, playwright, puppeteer | Browserbase, Playwright MCP |
180+
| Memory/knowledge | memory, knowledge, notes | @modelcontextprotocol/server-memory |
181+
| Time/scheduling | time, calendar, scheduling | Google Calendar MCP |
182+
| HTTP/APIs | fetch, http, rest, api | mcp-server-fetch |
183+
| Slack integration | slack, messaging | Slack MCP server |
184+
| Email | email, gmail, smtp | Gmail MCP servers |
185+
186+
## Evaluation Criteria
187+
188+
### Popularity Signals
189+
190+
Strong indicators of production-ready servers:
191+
192+
| Metric | Good | Excellent |
193+
|--------|------|-----------|
194+
| GitHub stars | 50+ | 500+ |
195+
| npm weekly downloads | 100+ | 1,000+ |
196+
| Smithery call volume | 1K+ | 10K+ |
197+
| Forks | 10+ | 50+ |
198+
199+
### Maintenance Indicators
200+
201+
Signs of active development:
202+
203+
- **Recent commits:** Last commit within 3 months
204+
- **Issue response time:** Maintainers respond within 1-2 weeks
205+
- **Release cadence:** Regular releases (monthly or quarterly)
206+
- **Open issues ratio:** Less than 50% of total issues open
207+
208+
### Quality Markers
209+
210+
Technical quality signals:
211+
212+
- **TypeScript:** Type safety and better IDE support
213+
- **Tests:** Test suite with reasonable coverage
214+
- **Documentation:** README with setup instructions and examples
215+
- **Semantic versioning:** Proper version management
216+
- **License:** Permissive license (MIT, Apache 2.0)
217+
- **CI/CD:** Automated testing and publishing
218+
219+
### Red Flags
220+
221+
Avoid servers with these issues:
222+
223+
| Red Flag | Risk |
224+
|----------|------|
225+
| No license | Legal uncertainty |
226+
| Abandoned (1+ year stale) | Security vulnerabilities, no bug fixes |
227+
| Hardcoded secrets in examples | Poor security practices |
228+
| No error handling | Unreliable in production |
229+
| Excessive permissions | Security risk |
230+
| No README | Integration difficulty |
231+
| Only personal use | Not designed for distribution |
232+
233+
## Discovery Workflow
234+
235+
Recommended process for finding MCP servers:
236+
237+
1. **Define requirements**
238+
- List needed capabilities
239+
- Identify authentication requirements
240+
- Consider security constraints
241+
242+
2. **Search official registry first**
243+
- Query `registry.modelcontextprotocol.io`
244+
- Check official `@modelcontextprotocol` packages
245+
246+
3. **Expand to alternative sources**
247+
- Browse Smithery categories
248+
- Search npm for community packages
249+
- Check GitHub awesome lists
250+
251+
4. **Evaluate candidates**
252+
- Apply popularity filters
253+
- Check maintenance status
254+
- Review code quality
255+
256+
5. **Test integration**
257+
- Clone and run locally
258+
- Verify tools work as expected
259+
- Check error handling
260+
261+
6. **Document choice**
262+
- Record why server was selected
263+
- Note any limitations
264+
- Plan for future updates
265+
266+
## Discovery Script
267+
268+
For automated discovery, see the companion script implementation in issue [#73](https://github.com/sjnims/plugin-dev/issues/73). Once implemented, usage:
269+
270+
```bash
271+
./scripts/search-mcp-servers.sh "filesystem" --limit 10
272+
```
273+
274+
## Quick Reference
275+
276+
### Search Priority
277+
278+
1. Official MCP Registry (`registry.modelcontextprotocol.io`)
279+
2. npm `@modelcontextprotocol` scope
280+
3. Smithery.ai curated servers
281+
4. npm community packages (`mcp-server-*`)
282+
5. GitHub topic search
283+
284+
### Minimum Quality Bar
285+
286+
Before integrating an MCP server, verify:
287+
288+
- [ ] Active maintenance (commits within 6 months)
289+
- [ ] Proper license (MIT, Apache 2.0, etc.)
290+
- [ ] Documentation exists
291+
- [ ] No obvious security issues
292+
- [ ] Works with current MCP protocol version
293+
294+
**Verifying protocol compatibility:** Check the server's `package.json` for `@modelcontextprotocol/sdk` dependency version, or look for protocol version notes in the README.
295+
296+
### Quick Evaluation
297+
298+
```bash
299+
# Check npm package health
300+
npm view <package-name> time.modified
301+
npm view <package-name> repository.url
302+
303+
# Check GitHub activity
304+
gh repo view <owner/repo> --json stargazerCount,pushedAt
305+
```

0 commit comments

Comments
 (0)