Skip to main content
Glama
swayyaam

blobfish-mcp

by swayyaam

Blobfish MCP

npm version CI license node

라지 api. Zero 구성. Claude에서 즉시 사용 가능.

Blobfish는 모든 REST API를 Claude가 호출할 수 있는 도구로 바꿔주는 MCP 서버입니다 — 어댑터를 수동으로 작성할 필요 없이, 런타임에 즉시 동작합니다.

OpenAPI/Swagger URL이나 Postman 컬렉션을 지정하세요. Blobfish는 모든 엔드포인트를 파싱하여 이름, 설명, 입력 스키마를 갖춘 타입 정의 MCP 도구를 생성합니다. Claude는 인증·파라미터·라이브 상태의 모든 엔드포인트를 즉시 발견하고, 이해하고, 호출할 수 있습니다.


데모

"도메인 이름만 가리켰습니다. 스펙을 스스로 찾아 20개 도구를 로드했고, Claude가 10초 만에 라이브 API를 조회했습니다."

Blobfish demo


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.json

Node.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.jsonmcpServers 아래에 추가

  • Cline / Roo Cline — Cline의 MCP 설정 패널에서 추가

  • Zed — so Zed's MCP settings to...

  • Smitherysmithery.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개의 메타 도구로 시작합니다:

도구

설명

list_reg

사전 구성된 모든 API 나열 — 이름만으로 즉시 로드

discover_api

도메인만으로 스펙 자동 탐색 — 공통 경로 25개를 프로브

load_pi

URL, 레지스트리 이름, 로컬 파일로 로드. include_tags, (tags, shallow, mock) 지원

set_api_auth

로드된 API의 자격 증명을 대화 중에 갱신

fetch_all

모든 엔드포인트 자동 페이지네이션 — Link 헤더, cursor, offset

save_workflow

run_workflow(name: "...")로 다시 실행할 수 있도록 이름으로 워크플로 저장

list_workflows

저장된 모든 워크플로와 각 단계 수 목록

run_workflow

{{ template }} 구문, foreach, run_if를 지원하는 다단계 파이프라인

get_last_request_log

최근 N개 요청의 정확한 URL/본문 확인 — 400 오류 디버깅에 유용

rate_limit_status

어떤 API가 요청 제한 중이고 언제 초기화되는지 표시

cache_stats

캐시 적중률, 크기, 항목 수

clear_cache

캐시된 응답 지우기

test_connection

로드된 API에 핑을 보내 상태와 응답 시간 확인

api_summary

로드된 API의 요약을 역량 그룹별로 설명

list_apis

로드된 API와 도구 수 목록

unload_api

로드된 API와 그 모든 도구 제거

Claudeload_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

Anthropic API

ANTHROPIC_API_KEY

coingecko

CoinGecko API

(없음 — 공개)

datadog

Datadog API

DATADOG_API_KEY

discord

Discord API

DISCORD_BOT_TOKEN

github

GitHub REST API

GITHUB_TOKEN

hubspot

HubSpot CRM API

HUBSPOT_ACCESS_TOKEN

jira

Jira Cloud API

JIRA_EMAIL, JIRA_API_TOKEN

linear

Linear API

LINEAR_API_KEY

notion

Notion API

NOTION_TOKEN

openai

OpenAI API

OPENAI_API_KEY

openmeteo

Open-Meteo Weather API

(없음 — 공개)

openweathermap

OpenWeatherMap API

OPENWEATHERMAP_API_KEY

pagerduty

PagerDuty API

PAGERDUTY_API_KEY

petstore

Swagger Petstore

(없음 — 데모)

resend

Resend API

RESEND_API_KEY

shopify

Shopify Admin API

SHOPIFY_ACCESS_TOKEN

slack

Slack Web API

SLACK_BOT_TOKEN

spotify

Spotify Web API

SPOTIFY_ACCESS_TOKEN

stripe

Stripe API

STRIPE_SECRET_KEY

twilio

Twilio API

TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN

vercel

Vercel API

VERCEL_TOKEN


인증

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_KEY

모든 API에 대한 전역 Bearer 토큰

BLOBFISH_AUTO_LOAD

true

false로 설정하면 .env에서 레지스트리 API 자동 로드 비활성화

BLOBFISH_TIMEOUT

30000

요청 타임아웃(ms)

BLOBFISH_RETRIES

3

5xx 오류 시 재시도 수

BLOBFISH_CACHE_TTL

60

응답 캐시 TTL(초)

BLOBFISH_LOG

로그 파일 경로 또는 true./blobfish.log

BLOBFISH_PORT

3000

--http / --sse 전송 시 포트

BLOBFISH_PROFILE

--profile과 동일한 환경 프로필(예: staging)

BLOBFISH_ALLOW_LOCAL

false

true로 설정하면 로컬 파일 스펙 로드 허용(개발 전용)


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로 해석됩니다. 이는 보안을 위한 의도된 동작입니다.

  • 개발 중 로컬 스펙을 로딩하는 경우: .envBLOBFISH_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/sdk

  • swagger-parser@apidevtools/swagger-parser

  • Node.js 18+ 내장 fetch

  • Node.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:

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    D
    maintenance
    A service that dynamically generates MCP tools from Swagger/OpenAPI documentation, allowing Claude Desktop to directly invoke REST APIs through natural language.
    5
    15
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    8
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    25
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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