forked from boos/BoosAPI
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:
@@ -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) — 빠른 시작 가이드로 돌아가기
|
||||
Reference in New Issue
Block a user