Access our comprehensive directory of MCP servers programmatically. Free, no authentication required.
https://toolservers.ai/api/toolscurl https://toolservers.ai/api/tools/api/toolscategoryFilter by category (e.g., "Development", "Database", "Cloud Service")featuredFilter featured servers (true/false)officialFilter official servers (true/false)protocolFilter by protocol (MCP, ACP, A2A, Other)limitNumber of results to returnoffsetNumber of results to skip (for pagination)curl "https://toolservers.ai/api/tools?category=Development&featured=true&limit=10"{
"success": true,
"data": [
{
"id": "filesystem-mcp",
"name": "Filesystem MCP Server",
"description": "Official MCP server for filesystem operations",
"provider": "Anthropic",
"classification": "Official",
"category": "File System",
"protocol": "MCP",
"estimatedDownloads": 125000,
"releaseDate": "2024-11-25",
"githubStars": 69420,
"githubUrl": "https://github.com/modelcontextprotocol/servers",
"featured": true,
"official": true,
"tags": ["filesystem", "files", "official"],
"version": "1.0.0",
"license": "MIT",
"documentation": "https://modelcontextprotocol.io/docs",
"homepage": "https://modelcontextprotocol.io",
"deploymentType": "Local",
"containerized": false,
"requiresAuth": false,
"supportsStreaming": true,
"securityFeatures": ["TLS/SSL"]
}
],
"count": 1,
"source": "database"
}/api/tools/[id]idThe unique identifier of the tool servercurl https://toolservers.ai/api/tools/filesystem-mcp{
"success": true,
"data": {
"id": "filesystem-mcp",
"name": "Filesystem MCP Server",
"description": "Official MCP server for filesystem operations",
"provider": "Anthropic",
"classification": "Official",
"category": "File System",
"protocol": "MCP",
"estimatedDownloads": 125000,
"releaseDate": "2024-11-25",
"githubStars": 69420,
"githubUrl": "https://github.com/modelcontextprotocol/servers",
"featured": true,
"official": true,
"tags": ["filesystem", "files", "official"],
"version": "1.0.0",
"license": "MIT",
"documentation": "https://modelcontextprotocol.io/docs",
"homepage": "https://modelcontextprotocol.io",
"deploymentType": "Local",
"containerized": false,
"requiresAuth": false,
"supportsStreaming": true,
"securityFeatures": ["TLS/SSL"]
},
"source": "database"
}idstringUnique identifiernamestringTool server namedescriptionstringDetailed descriptionproviderstringProvider/organization nameclassificationstringClassification typecategorystringPrimary categoryprotocolstringProtocol type (MCP, ACP, A2A, Other)estimatedDownloadsnumberEstimated download countreleaseDatestringRelease date (ISO 8601)githubStarsnumberGitHub star countgithubUrlstringGitHub repository URLfeaturedbooleanFeatured statusofficialbooleanOfficial statustagsstring[]Array of tagsversionstringCurrent versionlicensestringLicense typedocumentationstring?Documentation URL (optional)homepagestring?Homepage URL (optional)deploymentTypestringDeployment type (Remote, Local, Hybrid)containerizedbooleanContainerization supportrequiresAuthbooleanAuthentication requirementsupportsStreamingbooleanStreaming supportsecurityFeaturesstring[]Array of security featuresCurrently, there are no rate limits on the API. However, we recommend implementing client-side caching to improve performance and reduce unnecessary requests.
API responses include cache headers for optimal performance:
/api/tools - Cached for 60 seconds/api/tools/[id] - Cached for 5 minutes// Fetch all tool servers
const response = await fetch('https://toolservers.ai/api/tools');
const { data, count } = await response.json();
// Fetch featured servers
const featured = await fetch('https://toolservers.ai/api/tools?featured=true');
const { data: featuredServers } = await featured.json();
// Fetch specific server
const server = await fetch('https://toolservers.ai/api/tools/filesystem-mcp');
const { data: serverData } = await server.json();import requests
# Fetch all tool servers
response = requests.get('https://toolservers.ai/api/tools')
data = response.json()
# Fetch with filters
params = {'category': 'Development', 'featured': 'true'}
response = requests.get('https://toolservers.ai/api/tools', params=params)
servers = response.json()['data']package main
import (
"encoding/json"
"net/http"
)
type Response struct {
Success bool `json:"success"`
Data []ToolServer `json:"data"`
Count int `json:"count"`
}
func getToolServers() (*Response, error) {
resp, err := http.Get("https://toolservers.ai/api/tools")
if err != nil {
return nil, err
}
defer resp.Body.Close()
var result Response
err = json.NewDecoder(resp.Body).Decode(&result)
return &result, err
}