Skip to main content
Glama

ArchiveBox API - A2A | AG-UI | MCP

PyPI - Version MCP Server PyPI - Downloads GitHub Repo stars GitHub forks GitHub contributors PyPI - License GitHub

GitHub last commit (by committer) GitHub pull requests GitHub closed pull requests GitHub issues

GitHub top language GitHub language count GitHub repo size GitHub repo file count (file type) PyPI - Wheel PyPI - Implementation

버전: 0.1.53

개요

ArchiveBox API 파이썬 래퍼 & Fast MCP 서버!

이 저장소는 ArchiveBox API와 상호작용하기 위한 파이썬 래퍼를 제공하여 웹 아카이빙 기능에 대한 프로그래밍 방식의 액세스를 가능하게 합니다. 에이전트 AI를 위한 MCP(Model Context Protocol) 서버가 포함되어 있으며, 다양한 인증 메커니즘, 관찰 가능성 및 제어를 위한 미들웨어, 그리고 정책 기반 액세스 제어를 위한 선택적 Eunomia 권한 부여 기능으로 강화되었습니다.

기여를 환영합니다!

모든 API 응답 객체는 응답 호출에 맞게 사용자 정의됩니다. parent.value.nested_value 형식으로 반환 값에 액세스하거나 parent.json()을 사용하여 응답을 딕셔너리로 가져올 수 있습니다.

기능:

  • 인증: 인증 없음(비활성화), 정적(내부 토큰), JWT, OAuth 프록시, OIDC 프록시, 외부 ID 공급자를 위한 원격 OAuth 등 다중 인증 유형을 지원합니다.

  • 미들웨어: 강력한 서버 운영을 위한 로깅, 타이밍, 속도 제한 및 오류 처리가 포함되어 있습니다.

  • Eunomia 권한 부여: 내장 또는 원격 Eunomia 서버 통합을 통한 선택적 정책 기반 권한 부여를 지원합니다.

  • 리소스: ArchiveBox 구성을 위한 instance_config를 제공합니다.

  • 프롬프트: AI 기반 상호작용을 위한 cli_add_prompt가 포함되어 있습니다.

API

API 호출:

  • 인증

  • 핵심 모델 (스냅샷, 아카이브 결과, 태그)

  • CLI 명령 (추가, 업데이트, 예약, 목록, 제거)

지원되지 않는 API 호출의 경우, 사용자 정의 엔드포인트를 추가하거나 기존 래퍼를 수정하여 기능을 확장할 수 있습니다.

현재 지원되는 API 엔드포인트는 여기에서 확인하세요

MCP

위의 모든 사용 가능한 API 호출은 MCP 도구로 래핑되어 있습니다. 아래에서 도구 설명 및 관련 태그와 함께 확인할 수 있습니다.

MCP 도구

함수 이름

설명

태그

get_api_token

주어진 사용자 이름과 비밀번호에 대한 API 토큰을 생성합니다.

authentication

check_api_token

API 토큰이 유효하고 만료되지 않았는지 확인합니다.

authentication

get_snapshots

스냅샷 목록을 검색합니다.

core

get_snapshot

abid 또는 id로 특정 스냅샷을 가져옵니다.

core

get_archiveresults

이러한 필터와 일치하는 모든 ArchiveResult 항목을 나열합니다.

core

get_tag

id 또는 abid로 특정 태그를 가져옵니다.

core

get_any

abid로 특정 스냅샷, ArchiveResult 또는 태그를 가져옵니다.

core

cli_add

archivebox add 명령을 실행합니다.

cli

cli_update

archivebox update 명령을 실행합니다.

cli

cli_schedule

archivebox schedule 명령을 실행합니다.

cli

cli_list

archivebox list 명령을 실행합니다.

cli

cli_remove

archivebox remove 명령을 실행합니다.

cli

A2A 에이전트

아키텍처:

---
config:
  layout: dagre
---
flowchart TB
 subgraph subGraph0["Agent Capabilities"]
        C["Agent"]
        B["A2A Server - Uvicorn/FastAPI"]
        D["MCP Tools"]
        F["Agent Skills"]
  end
    C --> D & F
    A["User Query"] --> B
    B --> C
    D --> E["Platform API"]

     C:::agent
     B:::server
     A:::server
    classDef server fill:#f9f,stroke:#333
    classDef agent fill:#bbf,stroke:#333,stroke-width:2px
    style B stroke:#000000,fill:#FFD600
    style D stroke:#000000,fill:#BBDEFB
    style F fill:#BBDEFB
    style A fill:#C8E6C9
    style subGraph0 fill:#FFF9C4

구성 요소 상호작용 다이어그램

sequenceDiagram
    participant User
    participant Server as A2A Server
    participant Agent as Agent
    participant Skill as Agent Skills
    participant MCP as MCP Tools

    User->>Server: Send Query
    Server->>Agent: Invoke Agent
    Agent->>Skill: Analyze Skills Available
    Skill->>Agent: Provide Guidance on Next Steps
    Agent->>MCP: Invoke Tool
    MCP-->>Agent: Tool Response Returned
    Agent-->>Agent: Return Results Summarized
    Agent-->>Server: Final Response
    Server-->>User: Output

그래프 아키텍처

이 에이전트는 지능형 라우팅 및 최적의 컨텍스트 관리를 위해 pydantic-graph 오케스트레이션을 사용합니다.

---
title: Archivebox API Graph Agent
---
stateDiagram-v2
  [*] --> RouterNode: User Query
  RouterNode --> DomainNode: Classified Domain
  RouterNode --> [*]: Low confidence / Error
  DomainNode --> [*]: Domain Result
  • RouterNode: 사용자의 쿼리를 전문 도메인 중 하나로 분류하는 빠르고 가벼운 LLM(예: nvidia/nemotron-3-super)입니다.

  • DomainNode: 실행기 노드입니다. 선택된 도메인에 대해 해당 도메인과 관련된 도구만 일시적으로 활성화하도록 환경 변수를 동적으로 설정하여, 요청을 완료하기 위한 고도로 집중된 하위 에이전트(예: gpt-4o)를 생성합니다. 이는 LLM 컨텍스트를 보존하고 도구 환각을 방지합니다.

사용법

MCP

MCP CLI

짧은 플래그

긴 플래그

설명

-h

--help

도움말 정보 표시

-t

--transport

전송 방식: 'stdio', 'http', 또는 'sse' [레거시] (기본값: stdio)

-s

--host

HTTP 전송을 위한 호스트 주소 (기본값: 0.0.0.0)

-p

--port

HTTP 전송을 위한 포트 번호 (기본값: 8000)

--auth-type

인증 유형: 'none', 'static', 'jwt', 'oauth-proxy', 'oidc-proxy', 'remote-oauth' (기본값: none)

--token-jwks-uri

JWT 검증을 위한 JWKS URI

--token-issuer

JWT 검증을 위한 발급자

--token-audience

JWT 검증을 위한 대상

--oauth-upstream-auth-endpoint

OAuth 프록시를 위한 업스트림 권한 부여 엔드포인트

--oauth-upstream-token-endpoint

OAuth 프록시를 위한 업스트림 토큰 엔드포인트

--oauth-upstream-client-id

OAuth 프록시를 위한 업스트림 클라이언트 ID

--oauth-upstream-client-secret

OAuth 프록시를 위한 업스트림 클라이언트 비밀번호

--oauth-base-url

OAuth 프록시를 위한 기본 URL

--oidc-config-url

OIDC 구성 URL

--oidc-client-id

OIDC 클라이언트 ID

--oidc-client-secret

OIDC 클라이언트 비밀번호

--oidc-base-url

OIDC 프록시를 위한 기본 URL

--remote-auth-servers

원격 OAuth를 위한 권한 부여 서버의 쉼표로 구분된 목록

--remote-base-url

원격 OAuth를 위한 기본 URL

--allowed-client-redirect-uris

허용된 클라이언트 리디렉션 URI의 쉼표로 구분된 목록

--eunomia-type

Eunomia 권한 부여 유형: 'none', 'embedded', 'remote' (기본값: none)

--eunomia-policy-file

내장 Eunomia를 위한 정책 파일 (기본값: mcp_policies.json)

--eunomia-remote-url

원격 Eunomia 서버를 위한 URL

MCP 서버로 사용하기

MCP 서버는 stdio (로컬 테스트용) 또는 http (네트워크 액세스용) 두 가지 모드로 실행할 수 있습니다. 서버를 시작하려면 다음 명령을 사용하세요:

stdio 모드로 실행 (기본값):

archivebox-mcp --transport "stdio"

HTTP 모드로 실행:

archivebox-mcp --transport "http" --host "0.0.0.0" --port "8000"

기본 API 사용법

토큰 인증

#!/usr/bin/python
# coding: utf-8
import archivebox_api

archivebox_url = "<ARCHIVEBOX_URL>"
token = "<ARCHIVEBOX_TOKEN>"

client = archivebox_api.Api(
    url=archivebox_url,
    token=token
)

snapshots = client.get_snapshots()
print(f"Snapshots: {snapshots.json()}")

기본 인증

#!/usr/bin/python
# coding: utf-8
import archivebox_api

username = "<ARCHIVEBOX_USERNAME>"
password = "<ARCHIVEBOX_PASSWORD>"
archivebox_url = "<ARCHIVEBOX_URL>"

client = archivebox_api.Api(
    url=archivebox_url,
    username=username,
    password=password
)

snapshots = client.get_snapshots()
print(f"Snapshots: {snapshots.json()}")

API 키 인증

#!/usr/bin/python
# coding: utf-8
import archivebox_api

archivebox_url = "<ARCHIVEBOX_URL>"
api_key = "<ARCHIVEBOX_API_KEY>"

client = archivebox_api.Api(
    url=archivebox_url,
    api_key=api_key
)

snapshots = client.get_snapshots()
print(f"Snapshots: {snapshots.json()}")

SSL 검증

#!/usr/bin/python
# coding: utf-8
import archivebox_api

username = "<ARCHIVEBOX_USERNAME>"
password = "<ARCHIVEBOX_PASSWORD>"
archivebox_url = "<ARCHIVEBOX_URL>"

client = archivebox_api.Api(
    url=archivebox_url,
    username=username,
    password=password,
    verify=False
)

snapshots = client.get_snapshots()
print(f"Snapshots: {snapshots.json()}")

MCP 서버를 서비스로 배포

ArchiveBox MCP 서버는 구성 가능한 인증, 미들웨어 및 Eunomia 권한 부여를 사용하여 Docker로 배포할 수 있습니다.

Docker Run 사용

docker pull archivebox/archivebox:latest

docker run -d \
  --name archivebox-mcp \
  -p 8004:8004 \
  -e HOST=0.0.0.0 \
  -e PORT=8004 \
  -e TRANSPORT=http \
  -e AUTH_TYPE=none \
  -e EUNOMIA_TYPE=none \
  -e ARCHIVEBOX_URL=https://yourinstance.archivebox.com \
  -e ARCHIVEBOX_USERNAME=user \
  -e ARCHIVEBOX_PASSWORD=pass \
  -e ARCHIVEBOX_TOKEN=token \
  -e ARCHIVEBOX_API_KEY=api_key \
  -e ARCHIVEBOX_SSL_VERIFY=False \
  archivebox/archivebox:latest

고급 인증(예: JWT, OAuth 프록시, OIDC 프록시, 원격 OAuth) 또는 Eunomia의 경우 관련 환경 변수를 추가하세요:

docker run -d \
  --name archivebox-mcp \
  -p 8004:8004 \
  -e HOST=0.0.0.0 \
  -e PORT=8004 \
  -e TRANSPORT=http \
  -e AUTH_TYPE=oidc-proxy \
  -e OIDC_CONFIG_URL=https://provider.com/.well-known/openid-configuration \
  -e OIDC_CLIENT_ID=your-client-id \
  -e OIDC_CLIENT_SECRET=your-client-secret \
  -e OIDC_BASE_URL=https://your-server.com \
  -e ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,https://*.example.com/* \
  -e EUNOMIA_TYPE=embedded \
  -e EUNOMIA_POLICY_FILE=/app/mcp_policies.json \
  -e ARCHIVEBOX_URL=https://yourinstance.archivebox.com \
  -e ARCHIVEBOX_USERNAME=user \
  -e ARCHIVEBOX_PASSWORD=pass \
  -e ARCHIVEBOX_TOKEN=token \
  -e ARCHIVEBOX_API_KEY=api_key \
  -e ARCHIVEBOX_SSL_VERIFY=False \
  archivebox/archivebox:latest

Docker Compose 사용

docker-compose.yml 파일을 생성합니다:

services:
  archivebox-mcp:
    image: archivebox/archivebox:latest
    environment:
      - HOST=0.0.0.0
      - PORT=8004
      - TRANSPORT=http
      - AUTH_TYPE=none
      - EUNOMIA_TYPE=none
      - ARCHIVEBOX_URL=https://yourinstance.archivebox.com
      - ARCHIVEBOX_USERNAME=user
      - ARCHIVEBOX_PASSWORD=pass
      - ARCHIVEBOX_TOKEN=token
      - ARCHIVEBOX_API_KEY=api_key
      - ARCHIVEBOX_SSL_VERIFY=False
    ports:
      - 8004:8004

인증 및 Eunomia를 포함한 고급 설정의 경우:

services:
  archivebox-mcp:
    image: archivebox/archivebox:latest
    environment:
      - HOST=0.0.0.0
      - PORT=8004
      - TRANSPORT=http
      - AUTH_TYPE=oidc-proxy
      - OIDC_CONFIG_URL=https://provider.com/.well-known/openid-configuration
      - OIDC_CLIENT_ID=your-client-id
      - OIDC_CLIENT_SECRET=your-client-secret
      - OIDC_BASE_URL=https://your-server.com
      - ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,https://*.example.com/*
      - EUNOMIA_TYPE=embedded
      - EUNOMIA_POLICY_FILE=/app/mcp_policies.json
      - ARCHIVEBOX_URL=https://yourinstance.archivebox.com
      - ARCHIVEBOX_USERNAME=user
      - ARCHIVEBOX_PASSWORD=pass
      - ARCHIVEBOX_TOKEN=token
      - ARCHIVEBOX_API_KEY=api_key
      - ARCHIVEBOX_SSL_VERIFY=False
    ports:
      - 8004:8004
    volumes:
      - ./mcp_policies.json:/app/mcp_policies.json

서비스 실행:

docker-compose up -d

AI 통합을 위한 mcp.json 구성

권장 사항: 비밀 정보를 환경 변수에 저장하고 JSON 파일에서 조회하세요.

테스트 전용: 일반 텍스트 저장도 작동하지만 권장하지 않습니다.

{
  "mcpServers": {
    "archivebox": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "archivebox-api",
        "archivebox-mcp",
        "--transport",
        "${TRANSPORT}",
        "--host",
        "${HOST}",
        "--port",
        "${PORT}",
        "--auth-type",
        "${AUTH_TYPE}",
        "--eunomia-type",
        "${EUNOMIA_TYPE}"
      ],
      "env": {
        "ARCHIVEBOX_URL": "https://yourinstance.archivebox.com",
        "ARCHIVEBOX_USERNAME": "user",
        "ARCHIVEBOX_PASSWORD": "pass",
        "ARCHIVEBOX_TOKEN": "token",
        "ARCHIVEBOX_API_KEY": "api_key",
        "ARCHIVEBOX_VERIFY": "False",
        "TOKEN_JWKS_URI": "${TOKEN_JWKS_URI}",
        "TOKEN_ISSUER": "${TOKEN_ISSUER}",
        "TOKEN_AUDIENCE": "${TOKEN_AUDIENCE}",
        "OAUTH_UPSTREAM_AUTH_ENDPOINT": "${OAUTH_UPSTREAM_AUTH_ENDPOINT}",
        "OAUTH_UPSTREAM_TOKEN_ENDPOINT": "${OAUTH_UPSTREAM_TOKEN_ENDPOINT}",
        "OAUTH_UPSTREAM_CLIENT_ID": "${OAUTH_UPSTREAM_CLIENT_ID}",
        "OAUTH_UPSTREAM_CLIENT_SECRET": "${OAUTH_UPSTREAM_CLIENT_SECRET}",
        "OAUTH_BASE_URL": "${OAUTH_BASE_URL}",
        "OIDC_CONFIG_URL": "${OIDC_CONFIG_URL}",
        "OIDC_CLIENT_ID": "${OIDC_CLIENT_ID}",
        "OIDC_CLIENT_SECRET": "${OIDC_CLIENT_SECRET}",
        "OIDC_BASE_URL": "${OIDC_BASE_URL}",
        "REMOTE_AUTH_SERVERS": "${REMOTE_AUTH_SERVERS}",
        "REMOTE_BASE_URL": "${REMOTE_BASE_URL}",
        "ALLOWED_CLIENT_REDIRECT_URIS": "${ALLOWED_CLIENT_REDIRECT_URIS}",
        "EUNOMIA_TYPE": "${EUNOMIA_TYPE}",
        "EUNOMIA_POLICY_FILE": "${EUNOMIA_POLICY_FILE}",
        "EUNOMIA_REMOTE_URL": "${EUNOMIA_REMOTE_URL}"
      },
      "timeout": 200000
    }
  }
}

CLI 매개변수

archivebox-mcp 명령은 구성을 위해 다음 CLI 옵션을 지원합니다:

  • --transport: 전송 방식 (stdio, http, sse) [기본값: http]

  • --host: HTTP 전송을 위한 호스트 주소 [기본값: 0.0.0.0]

  • --port: HTTP 전송을 위한 포트 번호 [기본값: 8000]

  • --auth-type: 인증 유형 (none, static, jwt, oauth-proxy, oidc-proxy, remote-oauth) [기본값: none]

  • --token-jwks-uri: JWT 검증을 위한 JWKS URI

  • --token-issuer: JWT 검증을 위한 발급자

  • --token-audience: JWT 검증을 위한 대상

  • --oauth-upstream-auth-endpoint: OAuth 프록시를 위한 업스트림 권한 부여 엔드포인트

  • --oauth-upstream-token-endpoint: OAuth 프록시를 위한 업스트림 토큰 엔드포인트

  • --oauth-upstream-client-id: OAuth 프록시를 위한 업스트림 클라이언트 ID

  • --oauth-upstream-client-secret: OAuth 프록시를 위한 업스트림 클라이언트 비밀번호

  • --oauth-base-url: OAuth 프록시를 위한 기본 URL

  • --oidc-config-url: OIDC 구성 URL

  • --oidc-client-id: OIDC 클라이언트 ID

  • --oidc-client-secret: OIDC 클라이언트 비밀번호

  • --oidc-base-url: OIDC 프록시를 위한 기본 URL

  • --remote-auth-servers: 원격 OAuth를 위한 권한 부여 서버의 쉼표로 구분된 목록

  • --remote-base-url: 원격 OAuth를 위한 기본 URL

  • --allowed-client-redirect-uris: 허용된 클라이언트 리디렉션 URI의 쉼표로 구분된 목록

  • --eunomia-type: Eunomia 권한 부여 유형 (none, embedded, remote) [기본값: none]

  • --eunomia-policy-file: 내장 Eunomia를 위한 정책 파일 [기본값: mcp_policies.json]

  • --eunomia-remote-url: 원격 Eunomia 서버를 위한 URL

미들웨어

MCP 서버에는 향상된 기능을 위해 다음과 같은 내장 미들웨어가 포함되어 있습니다:

  • ErrorHandlingMiddleware: 포괄적인 오류 로깅 및 변환을 제공합니다.

  • RateLimitingMiddleware: 토큰 버킷 알고리즘을 사용하여 요청 빈도를 제한합니다 (초당 10개 요청, 버스트 용량 20).

  • TimingMiddleware: 요청의 실행 시간을 추적합니다.

  • LoggingMiddleware: 관찰 가능성을 위해 모든 요청과 응답을 기록합니다.

Eunomia 권한 부여

서버는 정책 기반 액세스 제어를 위해 선택적 Eunomia 권한 부여를 지원합니다:

  • 비활성화 (none): 권한 부여 확인을 수행하지 않습니다.

  • 내장 (embedded): 로컬 정책 파일(mcp_policies.json 기본값)과 함께 내장 Eunomia 서버를 실행합니다.

  • 원격 (remote): 중앙 집중식 정책 결정을 위해 외부 Eunomia 서버에 연결합니다.

Eunomia 정책을 구성하려면:

# Initialize a default policy file
eunomia-mcp init

# Validate the policy file
eunomia-mcp validate mcp_policies.json

A2A CLI

엔드포인트

  • 웹 UI: http://localhost:8000/ (활성화된 경우)

  • A2A: http://localhost:8000/a2a (검색: /a2a/.well-known/agent.json)

  • AG-UI: http://localhost:8000/ag-ui (POST)

짧은 플래그

긴 플래그

설명

-h

--help

도움말 정보 표시

--host

서버를 바인딩할 호스트 (기본값: 0.0.0.0)

--port

서버를 바인딩할 포트 (기본값: 9000)

--reload

자동 재로드 활성화

--provider

LLM 공급자: 'openai', 'anthropic', 'google', 'huggingface'

--model-id

LLM 모델 ID (기본값: qwen3:4b)

--base-url

LL

Install Server
A
security – no known vulnerabilities
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/Knuckles-Team/archivebox-api'

If you have feedback or need assistance with the MCP directory API, please join our Discord server