Bruno API MCP Server

by djkz
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Exposes Bruno API collections as MCP tools, allowing interaction with APIs defined in Bruno collections through automatic conversion of requests to tools. Supports environment management, variable replacements, and custom request parameters.

브루노 API MCP 서버

Bruno API 컬렉션을 MCP 도구로 제공하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버를 사용하면 MCP 프로토콜을 통해 Bruno API 컬렉션과 상호작용할 수 있으며, 이를 통해 AI 에이전트 및 다른 MCP 클라이언트가 해당 API 컬렉션에 접근할 수 있습니다.

이것이 중요한 이유: 소스 코드와 데이터의 협력

개발자가 API를 통합해야 할 때 일반적으로 세 가지 핵심 과제에 직면합니다.

  1. 시스템 경계를 넘나드는 디버깅 : 별도의 코드와 데이터 환경에서 문제를 진단하려면 지속적인 컨텍스트 전환이 필요하므로 문제 해결이 비효율적입니다.
  2. 사용자 정의 툴 만들기 : 타사 API를 통합하려면 사용자 정의 툴을 구축하고 유지 관리해야 하므로 개발 오버헤드와 기술 부채가 발생합니다.
  3. 서비스 UI 구축 : 모든 백엔드 서비스에 대한 사용자 인터페이스를 개발하면 복잡성과 유지 관리 비용이 상당히 증가합니다.

이 서버는 소스 코드와 데이터를 함께 배치하여 이러한 문제를 해결합니다. Bruno API 컬렉션을 모델 컨텍스트 프로토콜 도구로 변환하여 다음과 같은 작업을 수행할 수 있습니다.

  • 이전에 분리된 환경에서 완전한 컨텍스트를 사용하여 디버깅
  • 추가적인 맞춤 개발 없이 모든 API를 에이전트 준비 도구로 전환
  • AI 인터페이스를 통해 제어할 수 있는 헤드리스 서비스를 구축하세요

유지 관리 오버헤드를 줄이는 동시에 API 통합을 가속화해야 하는 개발팀에게 이러한 접근 방식은 근본적으로 가능한 것을 바꾸어 이전에는 복잡했던 통합을 간단하고 접근하기 쉽게 만듭니다.

특징

  • Bruno API 컬렉션을 MCP 도구로 자동 변환
  • 다양한 API 구성을 위한 환경 관리
  • SSE 전송을 통한 HTTP
  • 교차 출처 지원
  • API 수집 관리를 위한 내장 도구

용법

  1. 종속성 설치:지엑스피1
  2. Bruno API 컬렉션으로 서버를 시작합니다.
    node --loader ts-node/esm src/index.ts --bruno-path /path/to/bruno/collection [--environment env_name] [--include-tools tool1,tool2,tool3] [--exclude-tools tool4,tool5]
    옵션:
    • --bruno-path 또는 -b : Bruno API 컬렉션 디렉토리 경로(필수)
    • --environment 또는 -e : 사용할 환경의 이름(선택 사항)
    • --include-tools : 포함할 도구 이름을 쉼표로 구분하여 나열한 목록(다른 모든 도구는 필터링)(선택 사항)
    • --exclude-tools : 제외할 도구 이름의 쉼표로 구분된 목록(선택 사항)

    두 가지 형식 모두 도구 필터링 옵션에 지원됩니다.

    --include-tools tool1,tool2,tool3 # Space-separated format --include-tools=tool1,tool2,tool3 # Equals-sign format
  3. 클라이언트에서 연결:
    • 로컬 연결: http://localhost:8000/sse
    • Windows에서 WSL로: http://<WSL_IP>:8000/sse
    • 다음을 사용하여 WSL IP를 얻으세요: hostname -I | awk '{print $1}'

미리 정의된 스크립트

저장소에는 일반적인 사용 사례에 대한 미리 정의된 npm 스크립트가 여러 개 포함되어 있습니다.

# Start the server with default settings npm start # Start with CFI API path npm run start:cfi # Start with local environment npm run start:local # Start with only specific tools included npm run start:include-tools # Start with specific tools excluded npm run start:exclude-tools

개발

테스트 실행

모든 테스트를 실행합니다.

npm test

특정 테스트 파일 실행:

npm test test/bruno-parser-auth.test.ts

디버깅

서버는 자세한 로깅을 위해 debug 라이브러리를 사용합니다. DEBUG 환경 변수를 설정하여 다양한 디버그 네임스페이스를 활성화할 수 있습니다.

# Debug everything DEBUG=* npm start # Debug specific components DEBUG=bruno-parser npm start # Debug Bruno parser operations DEBUG=bruno-request npm start # Debug request execution DEBUG=bruno-tools npm start # Debug tool creation and registration # Debug multiple specific components DEBUG=bruno-parser,bruno-request npm start # On Windows CMD: set DEBUG=bruno-parser,bruno-request && npm start # On Windows PowerShell: $env:DEBUG='bruno-parser,bruno-request'; npm start

사용 가능한 디버그 네임스페이스:

  • bruno-parser : Bruno API 컬렉션 파싱 및 환경 처리
  • bruno-request : 요청 실행 및 응답 처리
  • bruno-tools : MCP 서버에 도구 생성 및 등록

도구

환경 목록

Bruno API 컬렉션에서 사용 가능한 모든 환경을 나열합니다.

  • 매개변수가 필요하지 않습니다
  • 보고:
    • 사용 가능한 환경 목록
    • 현재 활성화된 환경

에코

보낸 메시지를 다시 에코합니다(테스트에 유용함):

  • 매개변수: message (문자열)

Bruno API 컬렉션 구조

Bruno API 컬렉션은 표준 Bruno 구조를 따라야 합니다.

collection/ ├── collection.bru # Collection settings ├── environments/ # Environment configurations │ ├── local.bru │ └── remote.bru └── requests/ # API requests ├── request1.bru └── request2.bru

컬렉션의 각 요청은 자동으로 MCP 도구로 변환되어 MCP 프로토콜을 통해 사용할 수 있습니다.

도구와 함께 사용자 정의 매개변수 사용

Bruno API 컬렉션에서 생성된 도구를 호출할 때 다음을 제공하여 요청을 사용자 정의할 수 있습니다.

환경 재정의

특정 요청에 대해 다른 환경을 지정할 수 있습니다.

{ "environment": "us-dev" }

이렇게 하면 기본 환경 대신 지정된 환경의 변수가 사용됩니다.

변수 교체

단일 요청에 대해 특정 변수를 재정의할 수 있습니다.

{ "variables": { "dealId": "abc123", "customerId": "xyz789", "apiKey": "your-api-key" } }

이러한 변수는 URL, 헤더 및 요청 본문에 대체됩니다. 예를 들어, 요청 URL이 다음과 같은 경우:

{{baseUrl}}/api/deal/{{dealId}}

그리고 { "variables": { "dealId": "abc123" } } 제공하면 실제로 사용되는 URL은 다음과 같습니다.

https://api.example.com/api/deal/abc123

쿼리 매개변수

쿼리 매개변수를 직접 추가하거나 재정의할 수 있습니다.

{ "query": { "limit": "10", "offset": "20", "search": "keyword" } }

이렇게 하면 원래 요청에 정의되어 있는지 여부와 관계없이 이러한 쿼리 매개변수가 URL에 추가됩니다. 예를 들어, 요청 URL이 다음과 같은 경우:

{{baseUrl}}/api/deals

그리고 { "query": { "limit": "10", "search": "keyword" } } 제공하면 실제로 사용되는 URL은 다음과 같습니다.

https://api.example.com/api/deals?limit=10&search=keyword

이 방법은 변수를 사용하여 쿼리 매개변수를 재정의하는 것보다 더 깔끔하고 명확합니다.

사용자 정의 본문 매개변수

요청 본문에 사용자 정의 매개변수를 제공할 수도 있습니다.

{ "body": { "name": "John Doe", "email": "john@example.com" } }

완전한 예

다음은 네 가지 유형의 사용자 정의를 모두 결합한 완전한 예입니다.

{ "environment": "staging", "variables": { "dealId": "abc123", "apiKey": "test-key-staging" }, "query": { "limit": "5", "sort": "created_at" }, "body": { "status": "approved", "amount": 5000 } }

특허

MIT

-
security - not tested
F
license - not found
-
quality - not tested

Bruno API 컬렉션을 MCP(Model Context Protocol) 도구로 공개하여 AI 에이전트와 MCP 클라이언트가 API 컬렉션과 상호 작용할 수 있도록 합니다.

  1. Why This Matters: Source Code and Data Working Together
    1. Features
      1. Usage
        1. Predefined Scripts
          1. Development
            1. Running Tests
            2. Debugging
          2. Tools
            1. List Environments
            2. Echo
          3. Bruno API Collection Structure
            1. Using Custom Parameters with Tools
              1. Environment Override
              2. Variable Replacements
              3. Query Parameters
              4. Custom Body Parameters
              5. Complete Example
            2. License
              ID: ethgvmsqqz