mcp-public-apis
by josephsenior
README.md
<div align="center">
# mcp-public-apis
**Give your AI coding agent the ability to find, test, and integrate any of 1,500+ free public APIs — instantly.**
[](LICENSE)
[](https://modelcontextprotocol.io)
[](https://claude.ai)
[](https://cursor.sh)
[](https://codeium.com/windsurf)
[](https://github.com/cline/cline)
Data sourced from the community-maintained [public-apis](https://github.com/public-apis/public-apis) list · synced daily
</div>
---
## What is this?
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that gives AI coding agents real-time access to the public-apis dataset. Instead of copy-pasting API documentation, your agent can search, probe, and generate working code — all in one conversation.
```
You: "Find me a free weather API with no auth that supports HTTPS"
Agent: [calls search_apis] → returns top matches with auth/HTTPS/CORS details
You: "Test the first one — show me what the response looks like"
Agent: [calls probe_api] → live GET request, returns status + response shape
You: "Generate an axios snippet for it"
Agent: [calls generate_snippet] → ready-to-paste curl, fetch, and axios code
```
---
## Installation
Pick the config for your client and paste it in. No build step required — `npx` handles everything.
<details>
<summary><strong>Claude Desktop</strong></summary>
File: `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
File: `%APPDATA%\Claude\claude_desktop_config.json` (Windows)
```json
{
"mcpServers": {
"public-apis": {
"command": "npx",
"args": ["mcp-public-apis"]
}
}
}
```
</details>
<details>
<summary><strong>Cursor</strong></summary>
File: `.cursor/mcp.json` in your project root (or `~/.cursor/mcp.json` globally)
```json
{
"mcpServers": {
"public-apis": {
"command": "npx",
"args": ["mcp-public-apis"]
}
}
}
```
</details>
<details>
<summary><strong>Windsurf</strong></summary>
File: `~/.codeium/windsurf/mcp_config.json`
```json
{
"mcpServers": {
"public-apis": {
"command": "npx",
"args": ["mcp-public-apis"]
}
}
}
```
</details>
<details>
<summary><strong>Cline (VS Code)</strong></summary>
Open VS Code → Cline sidebar → **MCP Servers** tab → **Add Server** → paste:
```json
{
"public-apis": {
"command": "npx",
"args": ["mcp-public-apis"]
}
}
```
</details>
<details>
<summary><strong>Local build</strong></summary>
```bash
git clone https://github.com/josephsenior/pblic-apis-mcp-server
cd pblic-apis-mcp-server
npm install
npm run build
node dist/index.js
```
</details>
---
## Tools
| Tool | What it does | Key parameters |
|---|---|---|
| `search_apis` | Fuzzy-search 1,500+ APIs by keyword, category, auth type, and HTTPS | `query`, `category`, `auth`, `httpsOnly`, `limit` |
| `get_categories` | List every category with its API count | — |
| `get_api_detail` | Full record for one API by name | `name` |
| `probe_api` | Live HTTP GET to any endpoint — returns status, latency, and response preview | `url`, `apiKey`, `timeoutMs` |
| `compare_apis` | Side-by-side view of all APIs in a category | `category`, `limit` |
| `find_no_auth_apis` | Only APIs that need zero authentication | `category`, `httpsOnly`, `limit` |
| `generate_snippet` | Paste-ready `curl`, `fetch`, and `axios` snippets | `url`, `apiKey`, `headers` |
### `search_apis` parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| `query` | string | — | Fuzzy-match against API name and description |
| `category` | string | — | Exact category name (use `get_categories` to browse) |
| `auth` | `"No"` \| `"apiKey"` \| `"OAuth"` | — | Filter by auth requirement |
| `httpsOnly` | boolean | `true` | Exclude non-HTTPS APIs |
| `limit` | number | `5` | Max results (1–20) |
---
## How it works
```
MCP Client (Claude / Cursor / etc.)
│ JSON-RPC over stdio
▼
mcp-public-apis server
│
├─ In-memory cache (24 h TTL)
│
└─ GitHub raw · public-apis/public-apis README.md
```
1. On first use the server fetches the public-apis README from GitHub, parses every Markdown table row into structured `PublicAPI` objects, and stores them in a 24-hour in-memory cache.
2. All search and filter operations run locally against that cache — no external call per query.
3. `probe_api` is the only tool that makes a request to a third-party endpoint (the one you explicitly pass in).
---
## Data source
All API records come from [public-apis/public-apis](https://github.com/public-apis/public-apis) — a community-maintained list of 1,500+ free APIs across 60+ categories. The data is fetched fresh every 24 hours.
---
## License
[MIT](LICENSE)
TDQS
A3.9/5.0
Scored across 7 tools
Disambiguation5/5
Each tool has a clear, distinct purpose: comparing APIs, finding auth-free ones, generating code snippets, getting details, listing categories, probing endpoints, and searching. No overlap.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern in snake_case (e.g., compare_apis, find_no_auth_apis, generate_snippet), making them predictable and easy to understand.
Tool Count5/5
With 7 tools, the set is well-scoped for browsing and testing public APIs. Each tool adds distinct value without redundancy or over-engineering.
Completeness5/5
The tool set covers the full workflow: discovery (search, categories, detail), analysis (compare, no-auth filter), testing (probe), and code generation (snippet). No obvious gaps for a read-only API directory.
Maintenance
ActivityInactive
ResponsivenessNo issues