MCP Public APIs
# MCP Public APIs
An MCP server that indexes the [public-apis](https://github.com/public-apis/public-apis) catalogue and lets an LLM query it by category, auth type, HTTPS support, CORS, and keyword — without browsing the README manually.
## Why
Without this MCP, an LLM recommending a public API has to guess or ask the user to check manually. With it, the LLM can say:
> "I need a Books API, HTTPS, no auth, CORS-enabled for your React app."
> → `query_apis(category="Books", no_auth=True, https=True, cors="yes")`
## Tools
| Tool | Description |
|---|---|
| `list_categories` | Returns all available API categories (Animals, Finance, …) |
| `query_apis` | Filters the index by keyword, category, auth, HTTPS, CORS |
| `update_index` | Re-downloads the README and rebuilds the index |
### `query_apis` parameters
| Parameter | Type | Description |
|---|---|---|
| `keyword` | `str` | Substring match on name or description |
| `category` | `str` | Exact category (case-insensitive) |
| `auth` | `str` | `"apiKey"`, `"OAuth"`, `""` (none), etc. |
| `no_auth` | `bool` | Shortcut: APIs that need no authentication |
| `https` | `bool` | `True` = HTTPS only, `False` = HTTP only |
| `cors` | `str` | `"yes"`, `"no"`, `"unknown"` |
## Installation
```bash
cd MCP_PUBLIC_APIS
pip install -e .
```
## Running
```bash
mcp-public-apis
```
Or add it to your MCP client config:
```json
{
"mcpServers": {
"public-apis": {
"command": "mcp-public-apis"
}
}
}
```
## Development
```bash
pip install -e ".[dev]"
pytest
```
## Data Source
The index is built from the raw `README.md` of [public-apis/public-apis](https://github.com/public-apis/public-apis) on GitHub, which lists ~1400 public APIs organised into ~80 categories. The schema mirrors the README table exactly:
`name · url · description · auth · https · cors · category`
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: one lists existing data (list_categories) and one updates the underlying data source (update_index). There is no overlap in functionality or ambiguity about when to use each tool.
Both tools follow a consistent verb_noun naming pattern (list_categories, update_index) with clear, descriptive names that indicate their actions and targets. The naming style is uniform throughout.
With only 2 tools, the server feels severely under-scoped for a 'Public APIs' domain. This minimal set lacks essential operations like searching APIs, getting API details, or filtering categories, which are core expectations for such a service.
The tool surface is significantly incomplete for a public APIs index. While it covers index maintenance (update_index) and basic listing (list_categories), it misses fundamental operations like retrieving specific API information, searching APIs by criteria, or accessing API endpoints, leaving agents unable to perform typical API discovery tasks.