ls-apis-mcp
This MCP server enables AI assistants to discover and explore 4,000+ public APIs from the ls-apis dataset using three tools:
Search APIs (
search-apis): Search by keyword (matching API names and descriptions), filter by category (e.g., weather, finance, animals), filter by authentication type (apiKey,OAuth, orno), and limit the number of results returned.List Categories (
list-categories): Retrieve all API categories along with the count of APIs in each, sorted by popularity.List Providers (
list-providers): Retrieve all data providers that contribute APIs to the dataset, along with their contribution count, sorted by popularity.
ls-apis
Public APIs Discovery for Humans & Agents
A curated collection of 5,000+ public APIs with a powerful CLI search tool. Discover, filter, and explore APIs by category, authentication type.
Features
Comprehensive Dataset - 5,000+ APIs aggregated from multiple sources
Smart Search - Filter by query, category, authentication type
Colored Output - Syntax-highlighted results (use
--no-colorto disable)Multiple Output Formats - Text or JSON output
MCP Server - AI-friendly API search via Model Context Protocol
Extensible Architecture - Pluggable fetchers for adding new API sources
TypeScript - Fully typed for better developer experience
Related MCP server: MCP Public APIs
Installation
git clone https://github.com/koalyptus/ls-apis.git
cd ls-apis
npm install
npm buildQuick Start
npm install -g @ls-apis/cli
npm build
ls-apis -q weatherVia npm link (local development)
npm run build
npm link --workspace=@ls-apis/cli
ls-apis -q weatherUsage
CLI Search
# Search by keyword
npm run ls-apis -- -q weather
# Filter by category
npm run ls-apis -- -c weather
# Filter by authentication type
npm run ls-apis -- -a apiKey
# Combine filters
npm run ls-apis -- -q weather -c data -a oauth
# Limit results
npm run ls-apis -- -q weather -l 10
# Output as JSON
npm run ls-apis -- -q weather -o json
# Sort by name
npm run ls-apis -- -q weather -s name
# List all categories
npm run ls-apis -- categories
# List categories sorted by count
npm run ls-apis -- categories --sort count
# List categories as JSON
npm run ls-apis -- categories --output jsonCommands
Command | Description |
| List all API categories with counts |
| List all data providers |
| Show config settings and file path |
| Run QA checks (terminal summary) |
# Run QA via CLI
npm run ls-apis -- qa
# Save QA report to custom path
npm run ls-apis -- qa -f ./my-report.jsonQA Options
Flag | Alias | Description |
|
| Sort by: name (default), count |
|
| Output format: text (default), json |
Providers Options
Flag | Alias | Description |
|
| Sort by: name (default), count |
|
| Output format: text (default), json |
Options
Flag | Alias | Description |
|
| Search query (filters name, description) |
|
| Filter by category |
|
| Filter by auth type (apiKey, OAuth, no) |
|
| Max results to show (default: 20) |
|
| Output format: text or json (default: text) |
|
| Sort results: name, category, auth |
| Disable colors in output | |
|
| Show help |
|
| Show version |
Note: Colors are enabled by default. Use
--no-coloror setNO_COLOR=1environment variable to disable.
Configuration File
A config file is automatically created at ~/.ls-apis on first run. You can edit it to set personal defaults. CLI flags always override config values.
Location: ~/.ls-apis (your home directory)
{
"limit": 10,
"descriptionMaxLength": 150,
"colors": true
}Key | Default | Description |
| 20 | Default max results |
| 250 | Max chars before truncation |
| true | Enable terminal colors |
The config file is plain JSON. Edit it manually to customize defaults, or delete it to regenerate with built-in values.
Example Output
Found 2 APIs:
Weather API
Description: Get real-time weather data for any location...
Link: https://api.weather.example.com
Auth: apiKey
Categories: weather, data
Sources: apis-guru
Weather2 API
Description: Comprehensive weather forecasting service...
Link: https://api.weather2.example.com
Auth: OAuth
Categories: weather, forecast
Sources: publicapis-devMCP Server
ls-apis includes an MCP server for AI assistants to search and discover public APIs via natural language.
Tools
Tool | Description |
| Search public APIs by query, category, auth type, and limit |
| List all API categories with API counts |
| List all data providers with API counts |
Resources
URI | Description |
| Full aggregated API dataset (JSON) |
| All API categories with counts (JSON) |
| All data providers with counts (JSON) |
| Dataset summary statistics (JSON) |
Setup
npm installConfiguration
VS Code / GitHub Copilot
Create .vscode/mcp.json in your project root:
VS Code will ask for permission on first run — this is standard for project-local MCP servers. Approve once and it won't prompt again.
{
"servers": {
"ls-apis": {
"command": "npx",
"args": ["tsx", "packages/mcp-server/src/index.ts"],
"cwd": "/path/to/ls-apis"
}
}
}Switch Copilot Chat to Agent mode to use MCP tools.
Claude Desktop
Edit claude_desktop_config.json (%APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS):
{
"mcpServers": {
"ls-apis": {
"command": "npx",
"args": ["tsx", "packages/mcp-server/src/index.ts"],
"cwd": "/path/to/ls-apis"
}
}
}Cursor
Create .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"ls-apis": {
"command": "npx",
"args": ["tsx", "packages/mcp-server/src/index.ts"],
"cwd": "/path/to/ls-apis"
}
}
}Verification
After configuring, the client should discover the tools and resources listed above. You can also test via CLI:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npm run mcpProject Structure
See AGENTS.md for the full project layout. The repo is a monorepo with four packages under packages/:
aggregator— fetches, normalizes, deduplicates API data from upstream sourcescli— command-line search tool published asls-apisshared— types, config, search logic, paths consumed by all packagesmcp-server— MCP server for AI-friendly API queries (stdio transport)
Scripts
# Install dependencies
npm install
# Run all tests with coverage
npm test
# Run specific package tests
npm run test:aggregator
npm run test:cli
npm run test:shared
npm run test:mcp
# Typecheck all workspaces
npm run typecheck
# Lint & format
npm run lint
npm run format
# Run aggregator (generates data/apis.json in CLI package)
npm run aggregate
# Run QA checks on aggregated data
npm run qa
# Run CLI directly
npm run ls-apis -- -q <query>
# Run MCP server (stdio transport for AI clients)
npm run mcp
# Build all packages (shared → CLI)
npm run buildCLI Build and Publish Notes
The published CLI entrypoint is
packages/cli/dist/index.js.packages/cli/src/contains TypeScript sources.packages/clibuild script runs:tscto compile TS intodist/tsc-esm-fix --target distto add.jsextensions required by Node ESM runtime
prepackin the CLI package runs the build before packaging, so npm publish includes ready-to-run JavaScript.
Data Schema
The packages/cli/data/apis.json file contains metadata and aggregated API data with the following structure:
interface DataFile {
timestamp: string; // ISO 8601 UTC timestamp of processing
providers: Provider[]; // Data source providers
apis: ApiEntry[]; // Aggregated API entries
}
interface Provider {
name: string; // Provider identifier (e.g., 'apis-guru')
url: string; // Data source URL
}
interface ApiEntry {
name: string;
description?: string;
link: string;
auth?: string; // apiKey, OAuth, etc.
cors?: string;
categories: string[];
openapiSpec?: string; // OpenAPI spec URL if available
sources: string[]; // Which fetchers found this API
}Adding a New API Source
Create a new fetcher in
packages/aggregator/src/sources/:touch packages/aggregator/src/sources/mysource.fetcher.tsImplement the
SourceFetcherinterface:import type { SourceFetcher, ApiEntry } from '../types'; export const mysourceFetcher: SourceFetcher = { name: 'mysource', fetchApis: async (): Promise<ApiEntry[]> => { // Fetch and normalize APIs from your source return [ /* ApiEntry items */ ]; }, };Run the aggregator to fetch and update:
npm run aggregate
Fetchers are auto-loaded via loadAllFetchers() in sources/index.ts.
Testing
Tests use Vitest with v8 coverage:
# Run all tests
npm test
# Run specific package tests
npm run test:aggregator
npm run test:cli
npm run test:shared
npm run test:mcp
# Watch mode
cd packages/cli && npm run test:watchContributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Maintenance
Related MCP Servers
- AlicenseBqualityDmaintenanceNatural language API discovery MCP server. Search 700+ API capabilities across 163 current providers, get, exact endpoints, auth setup, and code snippets. Supports auto-discovery of new APIs.Last updated31MIT
- FlicenseAqualityDmaintenanceAn MCP server that indexes the public-apis catalogue, allowing LLMs to search and filter over 1,400 public APIs by category, authentication type, and technical requirements. It facilitates precise API discovery for developers by providing tools to query specific features like HTTPS support and CORS compatibility.Last updated3
- AlicenseAqualityDmaintenanceAn MCP server that gives AI coding agents real-time access to the public-apis dataset, enabling search, live probing, and code snippet generation for 1,500+ free public APIs.Last updated7374MIT
- Alicense-qualityBmaintenanceAn MCP server for API discovery and execution with a token-efficient search -> execute workflow over OpenAPI, Google Discovery, and optional native GraphQL and gRPC sources.Last updated10512Apache 2.0
Related MCP Connectors
APIs.guru MCP — keyless directory of 2,500+ public APIs and their OpenAPI specs.
MCP server for accessing curated awesome list documentation
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/koalyptus/ls-apis'
If you have feedback or need assistance with the MCP directory API, please join our Discord server