ncp-mcp-server
# NCP MCP Server
Naver Cloud Platform (NCP) Model Context Protocol (MCP) Server for Claude Desktop
## π νλ‘μ νΈ μκ°
Claude Desktopκ³Ό μ°λνμ¬ NCP(Naver Cloud Platform)μ μΈνλΌλ₯Ό λννμΌλ‘ κ΄λ¦¬ν μ μλ MCP μλ²μ
λλ€. Claude AIμ μμ°μ΄λ‘ λννλ©΄μ ν΄λΌμ°λ 리μμ€λ₯Ό μμ±, μ‘°ν, κ΄λ¦¬ν μ μμ΅λλ€.
## β¨ μ£Όμ κΈ°λ₯
### μλ² κ΄λ¦¬
- μλ² μΈμ€ν΄μ€ μμ±/μμ/μ€μ§/μμ
- μλ² λͺ©λ‘ μ‘°ν λ° μμΈ μ 보 νμΈ
### λ€νΈμν¬ κ΄λ¦¬
- VPC (Virtual Private Cloud) μμ±/μ‘°ν/μμ
- Subnet μμ±/μ‘°ν/μμ
- ACG (Access Control Group) μμ±/μ‘°ν/μμ
- 보μ κ·μΉ μΆκ°
### λ‘λ λ°Έλ°μ
- Load Balancer μμ±/μ‘°ν/μμ
- νκ² μλ² λ±λ‘ λ° κ΄λ¦¬
### λ°μ΄ν°λ² μ΄μ€
- Cloud DB μΈμ€ν΄μ€ μμ±/μ‘°ν/μμ
## π κΈ°μ μ€ν
- **Language**: TypeScript
- **Runtime**: Node.js
- **Framework**: Model Context Protocol (MCP) SDK
- **API**: Naver Cloud Platform REST API
- **Authentication**: NCP API Key (HMAC-SHA256 Signature)
## π¦ μ€μΉ λ°©λ²
### 1. μ μ₯μ ν΄λ‘
```bash
git clone https://github.com/YOUR_USERNAME/ncp-mcp-server.git
cd ncp-mcp-server
```
### 2. μμ‘΄μ± μ€μΉ
```bash
npm install
```
### 3. νκ²½ λ³μ μ€μ
`.env` νμΌμ μμ±νκ³ NCP API ν€λ₯Ό μ€μ ν©λλ€:
```bash
NCP_ACCESS_KEY=your_access_key_here
NCP_SECRET_KEY=your_secret_key_here
```
### 4. λΉλ
```bash
npm run build
```
## π μ¬μ© λ°©λ²
### Claude Desktop μ€μ
Claude Desktopμ μ€μ νμΌμ MCP μλ²λ₯Ό μΆκ°ν©λλ€:
**macOS/Linux**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"ncp-compute": {
"command": "node",
"args": ["/path/to/ncp-compute-mcp-server/dist/index.js"],
"env": {
"NCP_ACCESS_KEY": "your_access_key",
"NCP_SECRET_KEY": "your_secret_key"
}
}
}
}
```
### Claude Desktopμμ μ¬μ©
Claude Desktopμ μ¬μμν ν, λ€μκ³Ό κ°μ΄ μμ°μ΄λ‘ λͺ
λ Ήν μ μμ΅λλ€:
```
- "NCP μλ² λͺ©λ‘ 보μ¬μ€"
- "web-server-1 μ΄λ¦μΌλ‘ μλ² μμ±ν΄μ€"
- "μλ² μμν΄μ€"
- "λ‘λ λ°Έλ°μ μμ±ν΄μ€"
```
## π API λͺ©λ‘
### Server APIs
- `list_servers` - μλ² μΈμ€ν΄μ€ λͺ©λ‘ μ‘°ν
- `get_server_detail` - μλ² μμΈ μ 보 μ‘°ν
- `create_server` - μλ² μμ±
- `start_server` - μλ² μμ
- `stop_server` - μλ² μ€μ§
- `delete_server` - μλ² μμ
### VPC APIs
- `list_vpcs` - VPC λͺ©λ‘ μ‘°ν
- `create_vpc` - VPC μμ±
- `delete_vpc` - VPC μμ
### Subnet APIs
- `list_subnets` - Subnet λͺ©λ‘ μ‘°ν
- `create_subnet` - Subnet μμ±
- `delete_subnet` - Subnet μμ
### ACG APIs
- `list_acgs` - ACG λͺ©λ‘ μ‘°ν
- `create_acg` - ACG μμ±
- `delete_acg` - ACG μμ
- `add_acg_rule` - μΈλ°μ΄λ κ·μΉ μΆκ°
### Load Balancer APIs
- `list_load_balancers` - Load Balancer λͺ©λ‘ μ‘°ν
- `create_load_balancer` - Load Balancer μμ±
- `delete_load_balancer` - Load Balancer μμ
- `add_load_balancer_target` - νκ² μλ² μΆκ°
### Cloud DB APIs
- `list_cloud_dbs` - Cloud DB λͺ©λ‘ μ‘°ν
- `create_cloud_db` - Cloud DB μμ±
- `delete_cloud_db` - Cloud DB μμ
## π 보μ
- NCP API μΈμ¦μ HMAC-SHA256 μλͺ
λ°©μ μ¬μ©
- API ν€λ νκ²½ λ³μλ‘ κ΄λ¦¬
- `.env` νμΌμ `.gitignore`μ ν¬ν¨λμ΄ λ²μ κ΄λ¦¬μμ μ μΈ
## π νΈλ¬λΈμν
### 401 Unauthorized μ€λ₯
- API ν€κ° μ¬λ°λ₯Έμ§ νμΈ
- μλͺ
μμ± μ 쿼리 νλΌλ―Έν°κ° ν¬ν¨λλμ§ νμΈ
### 404 Not Found μ€λ₯
- API μλν¬μΈνΈ κ²½λ‘ νμΈ
- NCP API λ²μ νμΈ
### 400 Bad Request μ€λ₯
- νμ νλΌλ―Έν° λλ½ νμΈ (μ: serverCreateCount)
- νλΌλ―Έν° νμ νμΈ
## π μ°Έκ³ μλ£
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [NCP API Documentation](https://api.ncloud-docs.com/)
- [Claude Desktop](https://claude.ai/download)
## π― ν₯ν κ³ν
- [ ] Object Storage API μΆκ°
- [ ] Monitoring (Cloud Insight) API μΆκ°
- [ ] Auto Scaling API μΆκ°
- [ ] Block Storage κ΄λ¦¬ κΈ°λ₯
- [ ] μΈνλΌ μλ κ΅¬μΆ ν
νλ¦Ώ
- [ ] μλ¬ νΈλ€λ§ κ°μ
TDQS
Scored across 23 tools
Each tool name clearly identifies a specific resource and action (e.g., list_servers vs. create_server). No two tools overlap in purpose, and the verbs (list, get, create, delete, etc.) disambiguate operations within the same resource type.
All tools follow a consistent verb_noun pattern in snake_case (e.g., list_vpcs, create_subnet). There are no deviations in style or convention.
With 23 tools spanning six resource types, the count feels heavy but is reasonable for the scope. The number is on the high end of the acceptable range, but each tool serves a distinct purpose.
Core lifecycle operations (create, read/list, delete) exist for most resources, but update/modify operations are missing entirely. Additionally, there are no get_detail tools for VPCs, subnets, ACGs, load balancers, or Cloud DBs, and some specific actions like removing ACG rules or load balancer targets are absent.