as950118/apidocs-mcp-server
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 νμ΄μ§
- μΈμ¦μ΄ νμν λ¬Έμ: μΏ ν€ κΈ°λ° μΈμ¦ μ§μ
π οΈ μ€μΉ λ° μ€ν
λ‘컬 κ°λ° νκ²½
-
μμ‘΄μ± μ€μΉ
pip install -e .
-
μλ² μ€ν
mcp run api_docs_mcp_server:server
Dockerλ₯Ό μ¬μ©ν μ€ν
-
μ΄λ―Έμ§ λΉλ
docker build -t api-docs-mcp-server .
-
컨ν μ΄λ μ€ν
docker run -p 8080:8080 api-docs-mcp-server
Smithery λ°°ν¬
μ΄ νλ‘μ νΈλ Smithery νλ«νΌμ λ°°ν¬ν μ μλλ‘ κ΅¬μ±λμ΄ μμ΅λλ€:
-
Smithery CLI μ€μΉ
npm install -g @smithery/cli
-
λ°°ν¬
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 λ¬Έμμ URLcookies
(μ ν): μΈμ¦μ νμν μΏ ν€ λμ λ리
2. get_api_endpoints
API λ¬Έμμμ λͺ¨λ μλν¬μΈνΈ λͺ©λ‘μ κ°μ Έμ΅λλ€.
νλΌλ―Έν°:
url
(νμ): λΆμν API λ¬Έμμ URLcookies
(μ ν): μΈμ¦μ νμν μΏ ν€ λμ λ리
3. health_check_api
API μλν¬μΈνΈλ€μ μνλ₯Ό νμΈν©λλ€.
νλΌλ―Έν°:
url
(νμ): API λ¬Έμμ URLcookies
(μ ν): μΈμ¦μ νμν μΏ ν€ λμ λ리max_endpoints
(μ ν): ν μ€νΈν μ΅λ μλν¬μΈνΈ μ (κΈ°λ³Έκ°: 10)
4. generate_code_examples
νΉμ API μλν¬μΈνΈμ λν μ½λ μμλ₯Ό μμ±ν©λλ€.
νλΌλ―Έν°:
url
(νμ): API λ¬Έμμ URLendpoint_path
(νμ): μ½λ μμλ₯Ό μμ±ν μλν¬μΈνΈ κ²½λ‘cookies
(μ ν): μΈμ¦μ νμν μΏ ν€ λμ λ리
5. search_endpoints
API μλν¬μΈνΈμμ νΉμ ν€μλλ₯Ό κ²μν©λλ€.
νλΌλ―Έν°:
url
(νμ): API λ¬Έμμ URLsearch_term
(νμ): κ²μν ν€μλcookies
(μ ν): μΈμ¦μ νμν μΏ ν€ λμ λ리
6. get_api_info
API λ¬Έμμ κΈ°λ³Έ μ 보λ₯Ό κ°μ Έμ΅λλ€.
νλΌλ―Έν°:
url
(νμ): API λ¬Έμμ URLcookies
(μ ν): μΈμ¦μ νμν μΏ ν€ λμ λ리
7. export_api_docs
API λ¬Έμλ₯Ό λ€μν νμμΌλ‘ λ΄λ³΄λ λλ€.
νλΌλ―Έν°:
url
(νμ): API λ¬Έμμ URLformat
(μ ν): λ΄λ³΄λΌ νμ (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
π€ κΈ°μ¬νκΈ°
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
π μ§μ
λ¬Έμ κ° λ°μνκ±°λ μ§λ¬Έμ΄ μμΌμλ©΄ μ΄μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ°Έκ³ : μ΄ μλ²λ FastMCP κ·κ²©μ μ¬μ©νμ¬ κ΅¬νλμμΌλ©°, Smithery νλ«νΌκ³Ό νΈνλ©λλ€.