sufetch
MCP server that enables AI assistants to explore and generate code for type-safe OpenAPI clients from various cloud APIs like DigitalOcean, Hetzner Cloud, and Ory.
README
SuFetch
<p> <a href="https://www.npmjs.com/package/sufetch"><img src="https://img.shields.io/npm/v/sufetch.svg?style=flat&colorA=18181B&colorB=28CF8D" alt="Version"></a> <a href="https://www.npmjs.com/package/sufetch"><img src="https://img.shields.io/npm/dm/sufetch.svg?style=flat&colorA=18181B&colorB=28CF8D" alt="Downloads"></a> <a href="https://github.com/productdevbook/sufetch/blob/main/LICENSE"><img src="https://img.shields.io/github/license/productdevbook/sufetch.svg?style=flat&colorA=18181B&colorB=28CF8D" alt="License"></a> <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.7-18181B?style=flat&logo=typescript&colorB=3178C6" alt="TypeScript"></a> <a href="https://github.com/productdevbook/sufetch"><img src="https://img.shields.io/badge/MCP%20Server-18181B?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIgMkw0IDdWMTdMMTIgMjJMMjAgMTdWN0wxMiAyWiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=&colorB=28CF8D" alt="MCP Server"></a> </p>
Type-safe OpenAPI clients with MCP server for AI-driven API exploration
Table of Contents
What is SuFetch?
SuFetch combines two powerful tools:
- Type-Safe API Clients - Generate fully-typed TypeScript clients from OpenAPI specifications
- MCP Server - Let AI assistants (like Claude) explore your APIs and generate code
Built with apiful for type-safe OpenAPI clients.
Features
- ✨ Fully Type-Safe - Autocomplete and type checking for all API calls
- 🤖 MCP Integration - AI assistants can explore and generate code for your APIs
- 🔄 Auto-Discovery - Automatic service detection and type generation
- 🛠️ Modern Stack - TypeScript 5.7, ESNext, strict mode
- 🧪 Well-Tested - 76+ tests with >60% coverage
Installation
For Using the API Client
# npm
npm install sufetch
# pnpm
pnpm add sufetch
# yarn
yarn add sufetch
For MCP Server (Global)
# Install globally
npm install -g sufetch
# Verify installation
sufetch-mcp --version
For Development
git clone https://github.com/productdevbook/sufetch.git
cd sufetch
pnpm install
pnpm build
Quick Start
Using the Type-Safe API Client
import { createClient, cloud } from 'sufetch/hetzner'
// Create a typed client
const client = createClient({
baseURL: 'https://api.hetzner.cloud/v1',
headers: {
'Authorization': 'Bearer your-api-token'
}
}).with(cloud)
// Fully typed requests and responses
const servers = await client('/servers', {
method: 'GET' // ✅ Type-checked
})
// TypeScript knows the response type
console.log(servers.servers) // ✅ Autocomplete works
See Supported APIs for all available services.
Type Helpers for Advanced Type Safety
Extract specific types from endpoints for maximum type safety:
import type { HetznerCloud } from 'sufetch/hetzner'
// Extract request body type
type CreateServerBody = HetznerCloud<'/servers', 'post'>['request']
// Extract response type
type GetServerResponse = HetznerCloud<'/servers/{id}', 'get'>['response']
// Extract query parameters
type ListServersQuery = HetznerCloud<'/servers', 'get'>['query']
// Extract path parameters
type ServerPathParams = HetznerCloud<'/servers/{id}', 'get'>['path']
// Use in functions for type safety
function processServer(server: GetServerResponse) {
console.log(server.server.id) // ✅ Full autocomplete
console.log(server.server.name) // ✅ Type-checked
}
function createServer(body: CreateServerBody) {
// TypeScript enforces correct structure
return client('/servers', {
method: 'POST',
body // ✅ Type-safe
})
}
Available properties:
['request']- Request body type['response']- Success response (200/201)['query']- Query parameters['path']- Path parameters['responses'][status]- Specific status code response
Works with all APIs: HetznerCloud, DigitalOcean, OryKaratos, OryHydra.
Using with AI Assistants (MCP)
See the MCP Server Setup section below.
Supported APIs
SuFetch currently includes:
| API | Description | Endpoints | Import |
|---|---|---|---|
| DigitalOcean | Complete cloud platform API | 200+ | sufetch/digitalocean |
| Hetzner Cloud | Cloud infrastructure management | 100+ | sufetch/hetzner |
| Ory Kratos | Identity & user management | 50+ | sufetch/ory |
| Ory Hydra | OAuth 2.0 & OpenID Connect | 40+ | sufetch/ory |
Want to add more? See Adding New APIs.
MCP Server Setup
Quick Setup
1. Install (choose one):
npm install -g sufetch # Global
npx sufetch-mcp # No install
2. Configure:
<details> <summary><b>Claude Desktop</b> (click to expand)</summary>
Edit config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"sufetch": {
"command": "sufetch-mcp"
}
}
}
Restart Claude Desktop. </details>
<details> <summary><b>Claude Code CLI</b> (click to expand)</summary>
claude mcp add --transport stdio --scope project sufetch -- sufetch-mcp
Or create .mcp.json:
{
"mcpServers": {
"sufetch": {
"command": "sufetch-mcp"
}
}
}
</details>
3. Test: Ask Claude: "List available APIs using sufetch"
Available MCP Tools
| Tool | Description |
|---|---|
list_apis |
List all available APIs |
get_api_info |
Get API metadata |
search_endpoints |
Search by path/method/description |
get_endpoint_details |
Get full endpoint specs |
get_schema_details |
Get data schemas |
generate_code_example |
Generate TypeScript code |
get_quickstart |
Get API quickstart guide |
Adding New APIs
<details> <summary>Click to see how to add your own OpenAPI specs</summary>
- Create directory:
mkdir -p openapi-specs/myapi - Add your
myapi.jsonOpenAPI spec - Copy
apiful.config.tsandindex.tsfromopenapi-specs/ory/as template - Run
pnpm build
Done! Your API is now available as sufetch/myapi and in the MCP server.
See CLAUDE.md for detailed instructions. </details>
Development
pnpm install # Install
pnpm build # Build
pnpm test # Test
pnpm lint:fix # Lint
See CLAUDE.md for architecture, build pipeline, and contribution guide.
Troubleshooting
<details> <summary>MCP Server not showing?</summary>
# Test server works
sufetch-mcp # Should output: "SuFetch MCP server running on stdio"
# Check config
claude mcp list # For Claude Code
cat .mcp.json # Check file exists
# Restart Claude Desktop (if using Desktop)
</details>
<details> <summary>Build issues?</summary>
rm -rf node_modules pnpm-lock.yaml dist
pnpm install && pnpm build
</details>
Still stuck? Open an issue with your Node version and error message.
Contributing
Contributions welcome! See CONTRIBUTING.md.
git clone https://github.com/productdevbook/sufetch.git
cd sufetch
pnpm install && pnpm build
# Make changes, run `pnpm test && pnpm lint:fix`
Links
- CLAUDE.md - Architecture & development guide
- Model Context Protocol - MCP docs
License
MIT © 2025
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.