feat(desktop): embed BoosAPI Desktop client as a subproject

Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as
a monorepo subdirectory under desktop/. Source only — node_modules,
dist, Cargo target and the upstream .git history are excluded.

desktop/ keeps its own independent Cargo workspace (desktop/src-tauri
with crates/*); it is not part of the backend boosapi crate, so a
`cargo check` at the metapi root still compiles only the backend. Build
the desktop app from desktop/src-tauri per desktop/README.md.

Note: app icons are still placeholder assets pending the final BoosAPI
logo. The updater signing keys live outside the repo and are not
included.
This commit is contained in:
boos
2026-06-22 11:32:57 +08:00
parent d9c78ecc73
commit e0a5f57793
2305 changed files with 449355 additions and 0 deletions
+205
View File
@@ -0,0 +1,205 @@
# MCP 서버
## MCP란?
[Model Context Protocol(MCP)](https://modelcontextprotocol.io/)은 AI 모델이 외부 도구 및 데이터 소스와 상호 작용할 수 있게 하는 오픈 표준입니다. BoosApi은 MCP 클라이언트 역할을 합니다 — MCP 서버를 추가하면 AI가 대화 중에 해당 서버가 노출하는 도구를 호출할 수 있습니다.
---
## 전송 프로토콜
BoosApi은 MCP 서버와의 통신을 위해 3가지 전송 프로토콜을 지원합니다:
| 프로토콜 | 연결 | 사용 사례 | 구성 |
|---------|------|---------|------|
| **Stdio** | 로컬 프로세스 | `npx`, `uvx`, `python` 등으로 시작하는 머신에 설치된 도구 | `command` + `args` + 선택적 `env` |
| **SSE** | 원격 서버 | 원격 머신이나 클라우드 서비스에서 호스팅되는 Server-Sent Events 엔드포인트 | `url` |
| **StreamableHTTP** | 원격 서버 | HTTP 스트리밍 엔드포인트(SSE의 새로운 대안) | `url` |
---
## MCP 서버 추가
### 폼으로 만들기
1. **설정 → MCP 서버**로 이동합니다.
2. **MCP 서버 추가**를 클릭합니다.
3. 이름을 입력하고 전송 프로토콜을 선택합니다.
4. 선택한 프로토콜의 필드를 입력합니다:
- **Stdio** — 실행할 명령, 인수(JSON 배열), 환경 변수(JSON 객체), 타임아웃.
- **SSE** — 엔드포인트 URL, 타임아웃.
- **StreamableHTTP** — 엔드포인트 URL, 타임아웃.
5. **저장**을 클릭합니다.
### JSON 가져오기
**JSON 가져오기**를 클릭하고 구성 객체를 붙여넣습니다. BoosApi은 표준 MCP JSON 형식을 허용합니다:
#### Stdio 서버
```json
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}
```
#### SSE 서버
```json
{
"mcpServers": {
"remote-tools": {
"type": "sse",
"url": "https://example.com/sse"
}
}
}
```
#### StreamableHTTP 서버
```json
{
"mcpServers": {
"remote-http": {
"type": "streamablehttp",
"url": "https://example.com/mcp"
}
}
}
```
#### 여러 서버 한 번에
```json
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/projects"]
},
"remote": {
"type": "sse",
"url": "https://example.com/sse"
}
}
}
```
---
## 구성 예시
### 웹 가져오기 — `mcp-server-fetch`
웹 페이지를 가져와 AI를 위한 읽기 쉬운 텍스트로 변환합니다.
```json
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}
```
### 파일 작업 — `@modelcontextprotocol/server-filesystem`
AI에게 머신의 특정 디렉토리에 대한 읽기/쓰기 액세스를 제공합니다.
```json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/me/documents",
"/Users/me/projects"
]
}
}
}
```
### 원격 SSE 서버
Server-Sent Events를 통해 원격 도구 서버에 연결합니다.
```json
{
"mcpServers": {
"cloud-tools": {
"type": "sse",
"url": "https://mcp.example.com/sse"
}
}
}
```
### 환경 변수가 있는 Stdio
환경 변수를 통해 API 키나 구성을 서버 프로세스에 전달합니다.
```json
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["-m", "weather_server"],
"env": {
"WEATHER_API_KEY": "your-api-key"
}
}
}
}
```
---
## 내장 도구
BoosApi에는 외부 MCP 서버를 추가하지 않고도 사용 가능한 내장 도구가 포함되어 있습니다:
| 도구 | 설명 |
|------|------|
| **@boosapi/fetch** | 웹 페이지 및 HTTP 리소스 가져오기 |
| **@boosapi/search-file** | 로컬 파일 시스템에서 파일 검색 |
내장 도구는 사용자 지정 서버와 함께 MCP 서버 설정에 나열되며 개별적으로 활성화 또는 비활성화할 수 있습니다.
---
## 도구 실행 패널
AI가 대화 중에 MCP 도구를 호출하면 BoosApi은 채팅에 인라인으로 **도구 실행 패널**을 표시합니다. 패널에는 다음이 표시됩니다:
- **도구 이름**과 해당 **서버**.
- 도구에 전송된 **입력 인수**.
- 도구에 의해 반환된 **출력**.
- 실행 상태(실행 중, 성공 또는 실패).
대화의 임의의 도구 호출을 클릭하여 세부 정보를 확장합니다. 이를 통해 AI가 무엇을 했는지 확인하고 예상치 못한 결과를 디버그하는 것이 쉬워집니다.
---
## 도구 루프 제한
Settings -> MCP에서 MCP-enabled response의 consecutive tool-call iterations 최대값을 설정할 수 있습니다. unknown servers를 테스트할 때는 낮추고, 여러 도구를 의도적으로 chaining하는 workflows에서는 높일 수 있습니다.
## 다음 단계
- [API 게이트웨이](./gateway) — 제공업체를 로컬 API 서버로 노출
- [빠른 시작](./getting-started) — 빠른 시작 가이드로 돌아가기