| name | mcp-discovery |
| description | Discovers available MCP servers from registries and validates compatibility. Auto-discovers MCP servers from official registries, community sources, and local definitions. Triggers on: mcp discovery, find mcp servers, discover mcp, mcp registry, mcp catalog. |
MCP Discovery
Discovers and catalogs available MCP servers from registries, community sources, and local configurations.
Preloaded Skills
Always load before analysis:
- [skill:dotnet-advisor] -- routing and context
- [skill:mcp-health] -- validate discovered MCPs
Usage
[mcp-discovery:find-all]
[mcp-discovery:search <keyword>]
[mcp-discovery:update-config]
[mcp-discovery:list]
```text
1. **MCP Registry (modelcontextprotocol.io)**
- Official MCP server listings
- Verified implementations
- Community submissions
2. **Smithery Registry (smithery.ai)**
- Curated MCP servers
- Ratings and reviews
- Installation guides
```bash
https://registry.modelcontextprotocol.io/servers
jq '.servers[] | select(.tags[] | contains("dotnet") or contains("csharp"))'
```text
```bash
https://smithery.ai/api/mcp-servers
curl -s "https://smithery.ai/api/mcp-servers?category=development"
```text
```bash
jq '.devDependencies | keys[] | select(contains("mcp"))' package.json
```text
```bash
ls ~/.vscode/extensions/ | grep -i mcp
ls ~/.claude/ | grep -i mcp
```text
Add to hooks or commands:
```bash
set -uo pipefail
DISCOVERED_MCP="{}"
if command -v curl >/dev/null 2>&1; then
REGISTRY_DATA=$(curl -s --connect-timeout 5 \
"https://registry.modelcontextprotocol.io/servers" 2>/dev/null || echo "")
if [ -n "$REGISTRY_DATA" ]; then
DISCOVERED_MCP=$(echo "$REGISTRY_DATA" | jq -c '{registry: .servers}' 2>/dev/null || echo "{}")
fi
fi
LOCAL_MCPS="{}"
if command -v uvx >/dev/null 2>&1; then
LOCAL_MCPS=$(echo "$LOCAL_MCPS" | jq '. + {uvx: true}')
fi
if command -v npx >/dev/null 2>&1; then
LOCAL_MCPS=$(echo "$LOCAL_MCPS" | jq '. + {npx: true}')
fi
echo "{\"discovered\": $DISCOVERED_MCP, \"local\": $LOCAL_MCPS}"
exit 0
```text
| MCP Server | Type | .NET Support | Status | Notes |
| ----------------- | ----- | ------------ | ------ | ----------------- |
| serena | stdio | Full | Active | Semantic analysis |
| context7 | http | Full | Active | Library docs |
| microsoftdocs-mcp | http | Full | Active | MS Learn |
| deepwiki | http | Full | Active | Wiki search |
| github | http | Full | New | GitHub API |
```bash
dotnet-agent-harness:mcp-discovery:update-config
{
"mcpServers": {
"newly-discovered-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "some-mcp", "server"]
}
}
}
```text
Add discovery to rulesync workflow:
```json
{
"sources": [{ "source": "mcp://registry.modelcontextprotocol.io" }]
}
```text
Local tools should use stdio transport:
- Better performance (no HTTP overhead)
- Works offline
- Easier debugging
Cloud APIs should use http transport:
- No local installation required
- Automatic updates
- Scalable
Always validate discovered MCPs:
```bash
[mcp-health:check <new-mcp>]
[mcp-discovery:test <new-mcp>]
```text
Pin MCP server versions for stability:
```json
{
"mcpServers": {
"some-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "some-mcp==1.2.3", "server"]
}
}
}
```text\n\n## Troubleshooting Discovery
**Problem:** Registry unreachable
**Solutions:**
- Check network connectivity
- Try offline mode with cached registry
- Use local MCP servers only
**Problem:** MCP doesn't support .NET
**Solutions:**
- Check MCP documentation for language support
- Look for .NET-specific alternatives
- Use HTTP MCPs (language-agnostic)
### Duplicate MCPs
**Problem:** Same MCP from multiple sources
**Solutions:**
- Prioritize official registry
- Use version comparison
- User confirmation for duplicates
## Integration Example
### Session Start Hook
Add MCP discovery to session start:
```json
{
"hooks": {
"sessionStart": [
{
"type": "command",
"command": "# Discover MCP servers\necho 'Checking for available MCP servers...'\n# Discovery logic here",
"timeout": 10
}
]
}
}
```text
### Notification
Inform user of discovered MCPs:
```text
Discovered MCP servers:
✓ serena (local)
✓ microsoftdocs-mcp (cloud)
✓ github (remote)
Run [mcp-discovery:update-config] to add new MCPs.
```text
## References
- [MCP Registry](https://registry.modelcontextprotocol.io/)
- [Smithery MCP Catalog](https://smithery.ai/)
- [skill:mcp-health] -- validate discovered MCPs
- [skill:dotnet-observability] -- metrics for discovery process