apidocs-mcp-server

as950118/apidocs-mcp-server

3.2

If you are the rightful owner of apidocs-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This document provides a structured summary of an MCP server designed to analyze API documentation and recommend frontend implementation methods.

API Docs MCP Server

API λ¬Έμ„œλ₯Ό λΆ„μ„ν•˜μ—¬ ν”„λ‘ νŠΈμ—”λ“œ κ΅¬ν˜„ 방법을 μΆ”μ²œν•΄μ£ΌλŠ” MCP (Model Context Protocol) μ„œλ²„μž…λ‹ˆλ‹€.

πŸš€ μ£Όμš” κΈ°λŠ₯

  • API λ¬Έμ„œ μžλ™ 뢄석: Swagger/OpenAPI JSON λ˜λŠ” HTML ν˜•νƒœμ˜ API λ¬Έμ„œλ₯Ό μžλ™μœΌλ‘œ 뢄석
  • ν”„λ‘ νŠΈμ—”λ“œ μΆ”μ²œ: λΆ„μ„λœ APIλ₯Ό 기반으둜 ν”„λ‘ νŠΈμ—”λ“œ νŽ˜μ΄μ§€ κ΅¬ν˜„ 방법을 μΆ”μ²œ
  • 인증 지원: μΏ ν‚€ 기반 인증이 ν•„μš”ν•œ API λ¬Έμ„œλ„ 뢄석 κ°€λŠ₯
  • API μƒνƒœ 확인: μ—”λ“œν¬μΈνŠΈμ˜ μƒνƒœμ™€ 응닡 μ‹œκ°„μ„ 확인
  • μ½”λ“œ μ˜ˆμ‹œ 생성: JavaScript/TypeScript, Python μ½”λ“œ μ˜ˆμ‹œ μžλ™ 생성
  • μ—”λ“œν¬μΈνŠΈ 검색: ν‚€μ›Œλ“œ 기반 API μ—”λ“œν¬μΈνŠΈ 검색
  • λ¬Έμ„œ 내보내기: JSON, Markdown ν˜•μ‹μœΌλ‘œ API λ¬Έμ„œ 내보내기
  • FastMCP 기반: μ΅œμ‹  FastMCP κ·œκ²©μ„ μ‚¬μš©ν•˜μ—¬ λΉ λ₯΄κ³  효율적인 μ„œλ²„ κ΅¬ν˜„

πŸ“‹ μ§€μ›ν•˜λŠ” API λ¬Έμ„œ ν˜•μ‹

  • Swagger/OpenAPI JSON: /swagger.json, /api-docs, /openapi.json λ“±
  • HTML λ¬Έμ„œ: Swagger UI 등이 ν¬ν•¨λœ HTML νŽ˜μ΄μ§€
  • 인증이 ν•„μš”ν•œ λ¬Έμ„œ: μΏ ν‚€ 기반 인증 지원

πŸ› οΈ μ„€μΉ˜ 및 μ‹€ν–‰

둜컬 개발 ν™˜κ²½

  1. μ˜μ‘΄μ„± μ„€μΉ˜

    pip install -e .
    
  2. μ„œλ²„ μ‹€ν–‰

    mcp run api_docs_mcp_server:server
    

Dockerλ₯Ό μ‚¬μš©ν•œ μ‹€ν–‰

  1. 이미지 λΉŒλ“œ

    docker build -t api-docs-mcp-server .
    
  2. μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰

    docker run -p 8080:8080 api-docs-mcp-server
    

Smithery 배포

이 ν”„λ‘œμ νŠΈλŠ” Smithery ν”Œλž«νΌμ— 배포할 수 μžˆλ„λ‘ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€:

  1. Smithery CLI μ„€μΉ˜

    npm install -g @smithery/cli
    
  2. 배포

    smithery deploy
    

πŸ”§ μ‚¬μš© 방법

MCP ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ‚¬μš©

# MCP ν΄λΌμ΄μ–ΈνŠΈ μ˜ˆμ‹œ
from mcp.client import ClientSession

async with ClientSession("http://localhost:8080") as session:
    # API λ¬Έμ„œ 뢄석
    result = await session.call_tool(
        "analyze_api_docs",
        {
            "url": "https://api.example.com/swagger.json",
            "cookies": {"_oauth2_proxy": "your-auth-token"}  # 선택사항
        }
    )
    print(result.content)
    
    # API μƒνƒœ 확인
    health_result = await session.call_tool(
        "health_check_api",
        {
            "url": "https://api.example.com/swagger.json",
            "max_endpoints": 5
        }
    )
    print(health_result.content)
    
    # μ½”λ“œ μ˜ˆμ‹œ 생성
    code_result = await session.call_tool(
        "generate_code_examples",
        {
            "url": "https://api.example.com/swagger.json",
            "endpoint_path": "/api/users"
        }
    )
    print(code_result.content)

πŸ› οΈ μ‚¬μš© κ°€λŠ₯ν•œ 도ꡬ듀

1. analyze_api_docs

API λ¬Έμ„œλ₯Ό λΆ„μ„ν•˜μ—¬ ν”„λ‘ νŠΈμ—”λ“œ νŽ˜μ΄μ§€ κ΅¬ν˜„ 방법을 μΆ”μ²œν•©λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°:

  • url (ν•„μˆ˜): 뢄석할 API λ¬Έμ„œμ˜ URL
  • cookies (선택): 인증에 ν•„μš”ν•œ μΏ ν‚€ λ”•μ…”λ„ˆλ¦¬

2. get_api_endpoints

API λ¬Έμ„œμ—μ„œ λͺ¨λ“  μ—”λ“œν¬μΈνŠΈ λͺ©λ‘μ„ κ°€μ Έμ˜΅λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°:

  • url (ν•„μˆ˜): 뢄석할 API λ¬Έμ„œμ˜ URL
  • cookies (선택): 인증에 ν•„μš”ν•œ μΏ ν‚€ λ”•μ…”λ„ˆλ¦¬

3. health_check_api

API μ—”λ“œν¬μΈνŠΈλ“€μ˜ μƒνƒœλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°:

  • url (ν•„μˆ˜): API λ¬Έμ„œμ˜ URL
  • cookies (선택): 인증에 ν•„μš”ν•œ μΏ ν‚€ λ”•μ…”λ„ˆλ¦¬
  • max_endpoints (선택): ν…ŒμŠ€νŠΈν•  μ΅œλŒ€ μ—”λ“œν¬μΈνŠΈ 수 (κΈ°λ³Έκ°’: 10)

4. generate_code_examples

νŠΉμ • API μ—”λ“œν¬μΈνŠΈμ— λŒ€ν•œ μ½”λ“œ μ˜ˆμ‹œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°:

  • url (ν•„μˆ˜): API λ¬Έμ„œμ˜ URL
  • endpoint_path (ν•„μˆ˜): μ½”λ“œ μ˜ˆμ‹œλ₯Ό 생성할 μ—”λ“œν¬μΈνŠΈ 경둜
  • cookies (선택): 인증에 ν•„μš”ν•œ μΏ ν‚€ λ”•μ…”λ„ˆλ¦¬

5. search_endpoints

API μ—”λ“œν¬μΈνŠΈμ—μ„œ νŠΉμ • ν‚€μ›Œλ“œλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°:

  • url (ν•„μˆ˜): API λ¬Έμ„œμ˜ URL
  • search_term (ν•„μˆ˜): 검색할 ν‚€μ›Œλ“œ
  • cookies (선택): 인증에 ν•„μš”ν•œ μΏ ν‚€ λ”•μ…”λ„ˆλ¦¬

6. get_api_info

API λ¬Έμ„œμ˜ κΈ°λ³Έ 정보λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°:

  • url (ν•„μˆ˜): API λ¬Έμ„œμ˜ URL
  • cookies (선택): 인증에 ν•„μš”ν•œ μΏ ν‚€ λ”•μ…”λ„ˆλ¦¬

7. export_api_docs

API λ¬Έμ„œλ₯Ό λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λƒ…λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°:

  • url (ν•„μˆ˜): API λ¬Έμ„œμ˜ URL
  • format (선택): 내보낼 ν˜•μ‹ (json, markdown) (κΈ°λ³Έκ°’: json)
  • cookies (선택): 인증에 ν•„μš”ν•œ μΏ ν‚€ λ”•μ…”λ„ˆλ¦¬

πŸ“Š 뢄석 κ²°κ³Ό μ˜ˆμ‹œ

βœ… **API λ¬Έμ„œ 뢄석 μ™„λ£Œ: Example API (1.0.0)**

총 25개의 API μ—”λ“œν¬μΈνŠΈλ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

--- πŸ“„ ν”„λ‘ νŠΈμ—”λ“œ νŽ˜μ΄μ§€ κ΅¬ν˜„ μΆ”μ²œ ---

### πŸ’‘ μ‚¬μš©μž 관리 νŽ˜μ΄μ§€
_μ‚¬μš©μž 관리 κΈ°λŠ₯ κ΅¬ν˜„μ„ μœ„ν•œ APIλ“€_
- `GET` /api/users (μ‚¬μš©μž λͺ©λ‘ 쑰회)
- `POST` /api/users (μƒˆ μ‚¬μš©μž 생성)
- `PUT` /api/users/{id} (μ‚¬μš©μž 정보 μˆ˜μ •)
- `DELETE` /api/users/{id} (μ‚¬μš©μž μ‚­μ œ)

### πŸ’‘ 인증/둜그인 νŽ˜μ΄μ§€
_인증/둜그인 κΈ°λŠ₯ κ΅¬ν˜„μ„ μœ„ν•œ APIλ“€_
- `POST` /api/auth/login (둜그인)
- `POST` /api/auth/logout (λ‘œκ·Έμ•„μ›ƒ)
- `GET` /api/auth/me (ν˜„μž¬ μ‚¬μš©μž 정보)

### πŸ’‘ 결제/결제 νŽ˜μ΄μ§€
_결제/결제 κΈ°λŠ₯ κ΅¬ν˜„μ„ μœ„ν•œ APIλ“€_
- `POST` /api/payments (결제 생성)
- `GET` /api/payments/{id} (결제 정보 쑰회)
- `PUT` /api/payments/{id}/cancel (결제 μ·¨μ†Œ)

πŸ—οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

apidocs-mcp-server/
β”œβ”€β”€ src/
β”‚   └── api_docs_mcp_server/
β”‚       └── __init__.py
β”œβ”€β”€ server.py              # 메인 μ„œλ²„ 파일
β”œβ”€β”€ pyproject.toml         # ν”„λ‘œμ νŠΈ μ„€μ •
β”œβ”€β”€ Dockerfile            # Docker μ„€μ •
β”œβ”€β”€ smithery.yaml         # Smithery 배포 μ„€μ •
└── README.md             # 이 파일

πŸ” μ£Όμš” 클래슀 및 κΈ°λŠ₯

APIDocsAnalyzer

  • fetch_swagger_docs(): Swagger/OpenAPI JSON λ¬Έμ„œ κ°€μ Έμ˜€κΈ°
  • fetch_html_docs(): HTML ν˜•νƒœμ˜ API λ¬Έμ„œ κ°€μ Έμ˜€κΈ°
  • analyze_swagger_docs(): API λ¬Έμ„œ 뢄석 및 ꡬ쑰화
  • _generate_frontend_recommendations(): ν”„λ‘ νŠΈμ—”λ“œ μΆ”μ²œ 생성
  • health_check_endpoint(): κ°œλ³„ μ—”λ“œν¬μΈνŠΈ μƒνƒœ 확인
  • generate_code_examples(): μ½”λ“œ μ˜ˆμ‹œ 생성

뢄석 κ²°κ³Ό λͺ¨λΈ

  • APIEndpoint: κ°œλ³„ API μ—”λ“œν¬μΈνŠΈ 정보
  • FrontendRecommendation: νŽ˜μ΄μ§€λ³„ API μΆ”μ²œ
  • AnalysisResult: 전체 뢄석 κ²°κ³Ό
  • APIHealthCheck: API μƒνƒœ 확인 κ²°κ³Ό
  • CodeExample: μ½”λ“œ μ˜ˆμ‹œ λͺ¨λΈ

🎯 ν”„λ‘ νŠΈμ—”λ“œ μΆ”μ²œ 둜직

μ„œλ²„λŠ” λ‹€μŒκ³Ό 같은 κΈ°μ€€μœΌλ‘œ APIλ₯Ό κ·Έλ£Ήν™”ν•˜μ—¬ μΆ”μ²œν•©λ‹ˆλ‹€:

  • μ‚¬μš©μž 관리: user, member, customer ν‚€μ›Œλ“œ 포함
  • 인증/둜그인: auth, login, token, oauth ν‚€μ›Œλ“œ 포함
  • 결제/결제: payment, pay, billing, charge ν‚€μ›Œλ“œ 포함
  • 파일 μ—…λ‘œλ“œ: upload, file, image, media ν‚€μ›Œλ“œ 포함
  • 검색: search, find, query ν‚€μ›Œλ“œ 포함
  • 톡계/뢄석: stats, analytics, report, metric ν‚€μ›Œλ“œ 포함
  • μ•Œλ¦Ό/λ©”μ‹œμ§€: notification, message, alert, push ν‚€μ›Œλ“œ 포함
  • μ„€μ •/관리: config, setting, admin, management ν‚€μ›Œλ“œ 포함
  • 데이터 쑰회: GET λ©”μ„œλ“œ
  • 데이터 생성/μˆ˜μ •: POST, PUT, PATCH λ©”μ„œλ“œ

πŸ”§ 개발 ν™˜κ²½ μ„€μ •

ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­

  • Python 3.10 이상
  • pip

개발 μ˜μ‘΄μ„± μ„€μΉ˜

# κ°€μƒν™˜κ²½ 생성 (ꢌμž₯)
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# μ˜μ‘΄μ„± μ„€μΉ˜
pip install -e .

ν…ŒμŠ€νŠΈ

# μ„œλ²„ μ‹€ν–‰ ν…ŒμŠ€νŠΈ
mcp run api_docs_mcp_server:server --host 0.0.0.0 --port 8080

πŸ“ λΌμ΄μ„ μŠ€

MIT License

🀝 κΈ°μ—¬ν•˜κΈ°

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ž 지원

λ¬Έμ œκ°€ λ°œμƒν•˜κ±°λ‚˜ 질문이 μžˆμœΌμ‹œλ©΄ 이슈λ₯Ό μƒμ„±ν•΄μ£Όμ„Έμš”.


μ°Έκ³ : 이 μ„œλ²„λŠ” FastMCP κ·œκ²©μ„ μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„λ˜μ—ˆμœΌλ©°, Smithery ν”Œλž«νΌκ³Ό ν˜Έν™˜λ©λ‹ˆλ‹€.