blobfish-mcp
Blobfish MCP
라지 api. Zero 구성. Claude에서 즉시 사용 가능.
Blobfish는 모든 REST API를 Claude가 호출할 수 있는 도구로 바꿔주는 MCP 서버입니다 — 어댑터를 수동으로 작성할 필요 없이, 런타임에 즉시 동작합니다.
OpenAPI/Swagger URL이나 Postman 컬렉션을 지정하세요. Blobfish는 모든 엔드포인트를 파싱하여 이름, 설명, 입력 스키마를 갖춘 타입 정의 MCP 도구를 생성합니다. Claude는 인증·파라미터·라이브 상태의 모든 엔드포인트를 즉시 발견하고, 이해하고, 호출할 수 있습니다.
데모
"도메인 이름만 가리켰습니다. 스펙을 스스로 찾아 20개 도구를 로드했고, Claude가 10초 만에 라이브 API를 조회했습니다."

Related MCP server: MCP OpenAPI Connector
1.3.0의 새 기능
OAuth 2.0 client_credentials — OAuth 인증이 필요한 API(Salesforce, HubSpot OAuth 앱, Auth0로 보호된 API, 대부분의 엔터프라이즈 게이트웨이)가 이제 토큰 관리 없이 동작합니다. Blobfish에 token_url, client_id, client_secret을 주면 bearer 토큰을 가져와 캐시하고, 만료 60초 전에 갱신하며, 401이 반환되면 새 토큰으로 한 번 더 재시도합니다. 이 모든 과정은 Claude에게 보이지 않습니다.
{ "type": "oauth2", "token_url": "https://login.example.com/oauth/token", "client_id": "${MY_CLIENT_ID}", "client_secret": "${MY_CLIENT_SECRET}" }환경 프로필 — npx blobfish-mcp --profile staging을 실행하거나(또는 BLOBFISH_PROFILE=staging 설정) blobfish.staging.json 파일이 있으면 로드하고, 각 API 항목에서 auth_profiles.staging 자격 증명을 선택합니다. 같은 API, 다른 키, 플래그 하나로 해결.
자동 .env 로드 — 레지스트리 API의 키가 .env 파일에 있으면 시작 시 자동으로 로드됩니다. blobfish.json이나 load_api 호출이 필요 없습니다.
STRIPE_SECRET_KEY=sk-live-... → Stripe tools appear in Claude on startup
GITHUB_TOKEN=ghp_... → GitHub tools appear in Claude on startup
OPENAI_API_KEY=sk-... → OpenAI tools appear in Claude on startup사전 빌드된 21개 레지스트리 항목 모두에 적용됩니다. 비활성화하려면 BLOBFISH_AUTO_LOAD=false도 설정하세요.
도구 주석 — 이제 생성되는 모든 도구는 HTTP 메서드에 따라 readOnlyHint, destructiveHint, idempotentHint을 선언합니다(GET = 활기전용, DELET = 파적적 등). Claude와 호환되는 클라이언트는 이 hint를 사용하하여 호출 전에 확인할지 잘정합니다.
워크프로 조건 연산자 — run_if는 이제 ==, != 외에 >, <, >=, <=도 지원합니다.
설치
# Run directly without installing
npx blobfish-mcp https://petstore.swagger.io/v2/swagger.json
# Configure Claude Desktop (no clone needed)
npx blobfish-mcp --setup
# Or install globally
npm install -g blobfish-mcp
blobfish https://petstore.swagger.io/v2/swagger.jsonNode.js 18+ 버전 이상이 필요합니다.
Claude Code 연결
가장 빠른 방법 — clone 없이:
npx blobfish-mcp --setup또는 저장소를 클론한 경우:
npm install
npm run setup # auto-detects config path and writes the entry그후 Claude Desktop에서 MCP 구성을 리로드하세요: Help → Reload MCP Configuration.
수동 설정
Claude Desktop 설정에 추가합니다 (Windows에서는 %APPDATA%\Claude\claude_desktop_config.json, Mac에서는 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"blobfish": {
"command": "node",
"args": ["/path/to/blobfish-mcp/server.js"],
"env": {
"API_KEY": "your-bearer-token-if-needed"
}
}
}
}호환 클라이언트
Any는 MCP 호환 클라이언트와 동작합니다:
Claude Desktop — 기본 대상이며
npx blobfish-mcp --setup으로 구성합니다Cursor — 같은 설정 형식으로
.cursor/mcp.json에 추가Windsurf —
~/.кuniform/windsurf/mcp_config.json에 추가Continue.dev —
.continue/config.json의mcpServers아래에 추가Cline / Roo Cline — Cline의 MCP 설정 패널에서 추가
Zed — so Zed's MCP settings to...
Smithery —
smithery.yaml로 한 번의 클릭 설치
stdio 대신 HTTP/SSE를 사용하는 클라이언트는 다음과 같이 시작하세요:
blobfish --http # Streamable HTTP on http://localhost:3000/mcp
blobfish --sse # SSE on http://localhost:3000/sse
BLOBFISH_PORT=8080 blobfish --http # custom port동작 방식
Blobfish는 Claude가 항상 호출할 수 있는 span 17개의 메타 도구로 시작합니다:
도구 | 설명 |
| 사전 구성된 모든 API 나열 — 이름만으로 즉시 로드 |
| 도메인만으로 스펙 자동 탐색 — 공통 경로 25개를 프로브 |
| URL, 레지스트리 이름, 로컬 파일로 로드. |
| 로드된 API의 자격 증명을 대화 중에 갱신 |
| 모든 엔드포인트 자동 페이지네이션 — |
|
|
| 저장된 모든 워크플로와 각 단계 수 목록 |
|
|
| 최근 N개 요청의 정확한 URL/본문 확인 — 400 오류 디버깅에 유용 |
| 어떤 API가 요청 제한 중이고 언제 초기화되는지 표시 |
| 캐시 적중률, 크기, 항목 수 |
| 캐시된 응답 지우기 |
| 로드된 API에 핑을 보내 상태와 응답 시간 확인 |
| 로드된 API의 요약을 역량 그룹별로 설명 |
| 로드된 API와 도구 수 목록 |
| 로드된 API와 그 모든 도구 제거 |
Claude가 load_api 또는 discover_api를 호출하면 Blobfish는 스펙을 파싱하고 tools/list_changed 알림을 보내며 — 새 도구가 즉시 나타납니다.
워크플로우
여러. can be applied to a single operation. Use the {{ steps.id.field }} template syntax to reference earlier steps results.
인라인 실행:
run_workflow(steps: [
{ id: "user", tool: "jph_get_users_id", args: { id: "1" } },
{ id: "posts", tool: "jph_get_posts", args: { userId: "{{ steps.user.data.id }}" } },
{ id: "first_comments", tool: "jph_get_posts_id_comments",
run_if: "{{ steps.posts.data.length }} != 0",
args: { id: "{{ steps.posts.data.0.id }}" } }
])저장 후 다시 실행:
save_workflow(name: "user-posts", steps: [...])
run_workflow(name: "user-posts", input: { userId: "42" })
list_workflows()blobfish.json에서 사전 로드:
{
"workflows": {
"crypto-report": {
"description": "BTC/ETH prices + trending coins",
"steps": [
{ "id": "price", "tool": "coingecko_get_simple_price", "args": { "ids": "{{ input.coins }}", "vs_currencies": "usd" } },
{ "id": "trending", "tool": "coingecko_get_search_trending", "args": {} }
]
}
}
}단계별 옵션: foreach (배열 반복), run_if (조건부 건너뛰기), on_error: "continue" (실패해도 중단하지 않음)
바로 사용 가능한 예제는 workflows/ 폴더에 있습니다.
blobfish.json 설정
시작과 동시에 로드할 API를 사전 구성합니다. 프로젝트 루트에 blobfish.md 만들기:
{
"timeout": 30000,
"retries": 3,
"apis": [
{
"url": "https://petstore.swagger.io/v2/swagger.json",
"name": "petstore"
},
{
"url": "https://api.example.com/openapi.json",
"name": "myapi",
"auth": {
"type": "bearer",
"key": "${MY_API_TOKEN}"
},
"timeout": 10000
},
{
"url": "./local-spec.json",
"name": "localapi",
"mock": true
}
]
}"${MY_API_TOKEN}"와 같은 값은 시작 시 환경 변수에서 이름으로 치환됩니다.
레지스트리
무료로 구동되는 21개의 사전 구축 레지스트리 항목 — spec URL이나 인증 설정이 필요 없습니다.
자동 .env 로드(1.2.0 기본값): .env 파일에 API키를 넣으면 도구가 자동으로 표시됩니다.
자동 .env 미사용: Claude에 이름으로 로드하도록 요청하세요:
load_api(spec_url: "stripe")
load_api(spec_url: "github")또는 list_registry로 탐색할 수 있습니다.
| Name | API | Required Environment Variable(s) |
| anthropic | Anthropic API | ANTHROPIC_API_KEY |
| coingecko | CoinGecko API | (none — public) |
| covverge | Coin... | Wait, I'll write the table exactly.
Name | API | Required Environment Variables(s) |
| Anthropic API |
|
| CoinGecko API | (없음 — 공개) |
| Datadog API |
|
| Discord API |
|
| GitHub REST API |
|
| HubSpot CRM API |
|
| Jira Cloud API |
|
| Linear API |
|
| Notion API |
|
| OpenAI API |
|
| Open-Meteo Weather API | (없음 — 공개) |
| OpenWeatherMap API |
|
| PagerDuty API |
|
| Swagger Petstore | (없음 — 데모) |
| Resend API |
|
| Shopify Admin API |
|
| Slack Web API |
|
| Spotify Web API |
|
| Stripe API |
|
| Twilio API |
|
| Vercel API |
|
인증
blobfish.json 또는 load_api를 통한 API별 인증
{ "type": "bearer", "key": "sk-..." }
{ "type": "apikey", "key": "abc123", "header": "X-Api-Key" }
{ "type": "basic", "username": "user", "password": "pass" }
{ "type": "oauth2", "token_url": "https://login.example.com/oauth/token", "client_id": "...", "client_secret": "...", "scope": "read write" }OAuth 2.0 (client_credentials)
oauth2의 경우 Blobfish는 token_url에서 클라이언트 자격 증명을 bearer token으로 교환하고, 메모리에 캐시한 뒤, 만료 60초 전에 갱신하며, API가 401을 반환하면 새 토큰으로 한 번 더 재시도합니다. 선택 필드:
scope— 공백으로 구분된 scope 목록audience— 일부 제공자(예: Auth0)에서 필요client_auth—"body"(기본값, 양식 본문에 자격 증명) 또는"basic"(HTTP Basic 헤더), 제공자가 요구하는 방식에 맞춰 선택
토큰은 디스크에 저장되지 않으며 로그에 기록되지 않습니다.
환경 프로필
auth_profiles를 사용하면 모든 API 항목에서 스테이징과 운영 키를 함께 보관할 수 있습니다:
{
"url": "https://api.example.com/openapi.json",
"name": "myapi",
"auth": { "type": "bearer", "key": "${PROD_API_TOKEN}" },
"auth_profiles": {
"staging": { "type": "bearer", "key": "${STAGING_API_TOKEN}" }
}
}그다음 --profile staging(또는 BLOBFISH_PROFILE=staging). blobfish.staging.json 파일이 존재하면 blobfish.json을 완전히 대신 로드됩니다. 프로필을 지정하지 않으면 auth를 그대로 사용합니다.
전역 대체
모든 API에 Bearer 토큰 인증을 적용하려면 환경 변수나 .env 파일에 API_KEY를 설정하세요.
페이지네이션
페이지네이션 엔드포인트의 모든 페이지를 자동으로 가져오려면 fetch_all을 사용하세요:
fetch_all(tool_name: "petstore_get_pets", args: { status: "available" }, max_pages: 5)Blobfish는 다음과 같은 규칙을 자동으로 감지하여 따릅니다:
Link: <url>; rel="next"헤더 (GitHub, Stripe 스타일){ next_cursor, cursor, after, next_page_token }필드{ has_more: true }+ offset/limit{ total, offset, limit }패턴
환경 변수
Variable | Default | Description |
| — | 모든 API에 대한 전역 Bearer 토큰 |
|
|
|
|
| 요청 타임아웃(ms) |
|
| 5xx 오류 시 재시도 수 |
|
| 응답 캐시 TTL(초) |
| — | 로그 파일 경로 또는 |
|
|
|
| — |
|
|
|
|
Mock mode
Mock모드로 API를 로드하면 실제 HTTP 호출 없이 예제 응답을 얻을 수 있습니다. API 키 없이 테스트하거나 데모를 보여줄 때 유용합니다:
load_api(spec_url: "https://...", mock: true)No, I'm messing up. I'm going to type carefully in the final answer, word by word, checking each. I'll do that now in my head, ignoring previous drafts.
The final should be:
[line]
응답은 OpenAPI 스펙의 example 필드에서 생성됩니다.
[empty]
[empty]
지원 형식
[empty]
OpenAPI 3.x (JSON + YAML)
Swagger 2.0 (JSON + YAML)
Postman Collections v2.1
로컬 파일 (
./path/to/spec.json) [empty]
[empty]
문제 해결
[empty] Blobfish가 Claude Desktop에 나타나지 않음 [empty]
창만 닫지 말고 Claude Desktop을 완전히 종료하세요 (트레이 아이콘 → 종료)
Windows Store 설치의 경우 구성 파일은
%LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude\claude_desktop_config.json에 있습니다 —npm run setup을 실행하면 올바른 경로를 자동으로 찾을 수 있습니다node가 PATH에 있는지 확인하세요: 터미널을 열고node --version을 실행해 보세요. 실패하면 구성의command필드에 전체 경로(C:/Program Files/nodejs/node.exe)를 사용하세요 [empty] 스펙 로딩 시SSRF blocked오류 발생 [empty]스펙 URL이 사설/내부 IP로 해석됩니다. 이는 보안을 위한 의도된 동작입니다.
개발 중 로컬 스펙을 로딩하는 경우:
.env에BLOBFISH_ALLOW_LOCAL=true를 설정하세요. [empty]Spec generates N tools (max 500)오류 [empty]include_tags로 필터링하세요:load_api(spec_url: "...", include_tags: ["repos", "issues"])사용 가능한 태그를 확인하려면 먼저
api_summary를 실행하세요 [empty] 도구는 나타나지만 호출은 오류를 반환합니다 [empty]실패한 호출 후
get_last_request_log를 호출하세요 — Claude가 전송된 정확한 URL과 본문을 확인하고 스스로 수정할 수 있습니다rate_limit_status를 확인하세요 — 요청 제한이 초기화되기를 기다려야 할 수도 있습니다 [empty]
[empty]
빌드에 사용된 것
[empty]
MCP SDK —
@modelcontextprotocol/sdkswagger-parser —
@apidevtools/swagger-parserNode.js 18+ 내장
fetchNode.js 20.6+ 내장
.env로딩 (--env-file)
Now, verify: "사설/내부" - private (사설) is fine. Also "로 해석됩니다" is good. Alternatively "로 확인됩니다" - "resolves to a private/internal IP" - "가 사설/내부 IP로 확인됩니다" or "매핑됩니다". I'll use "확인됩니다".
Also "이 동작은 보안상 의도된 것입니다." Good.
"Through the include_tags로 필터링하세요" - better: "include_tags를 사용하여 필터링하세요: ..." Yes.
"도구는 나타나지만 호출 시 오류가 반환됩니다" matches "Tools appear but calls return errors". Good.
"빌드에 사용된 것" - maybe "함께 빌드된" or "만드는 데 사용한 도구". "Built with" - better "사용된 기술" or "빌드 관련". I'll go with "빌드에 사용된 것".
Another check: "Node.js 18+ native fetch" - "native" = "내장" or "네이티브". I'll use "내장". "Node.js 18+ 내장 fetch".
Also correct: "BLOBFISH_ALLOW_LOCAL" - careful spell: B L O B F I S H underscore A L L O W underscore L O C A L. Good.
"%LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude\claude_desktop_config.json" - keep exactly. Note there's a * inside the path Claude_* - that's a wildcard, keep as is.
"Windows Store install" - "Windows Store 설치" - Should "Store 설치" maybe "스토어"? "installation on Windows Store" = "Windows Store에서 설치한 경우". I'll use "Windows Store 설치 환경에서는". It's fine.
Also the user's phrase "tray icon → Quit" - "트레이 아이콘 → 종료". Good.
Now: Should I translate "Quit" to "종료" or keep "Quit"? I decided "종료". Fine.
One more consideration: "the config goes into..." - "구성 파일" is "configuration file". In Claude's spec "claude_desktop_config.json" is a config file. Good.
"Make sure you fully quit Claude Desktop (tray icon → Quit)" based on instructions "Be sure to fully exit" - I translated.
Now, the overall formatting: The "message Separators" - In the source, before "## Trouble- shoting", there's a line "***" after the "## 질 support formats" section? Let me look at the input:
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceA service that dynamically generates MCP tools from Swagger/OpenAPI documentation, allowing Claude Desktop to directly invoke REST APIs through natural language.515MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude Desktop and other MCP clients to interact with any OAuth2-authenticated OpenAPI-based API through automatic tool generation from OpenAPI specifications, with built-in token management and authentication handling.83MIT
- AlicenseNot gradedqualityFmaintenanceProvides AI assistants with access to OpenAPI specifications, enabling API discovery, schema retrieval, and direct API execution with support for OAuth 2.0 and other authentication methods.91MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to discover, search, and call any REST API described by an OpenAPI or Swagger document. Supports multiple API endpoints with authentication and parameter handling.25MIT
Related MCP Connectors
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Stripe-native marketplace where AI agents discover and pay per call for API services.
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
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/swayyaam/blobfish-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server