Plugged.in MCP Server
공식여러 MCP 서버를 하나의 MCP로 결합하는 종합 프록시입니다. 서버 간 도구, 프롬프트, 리소스 및 템플릿의 검색 및 관리를 제공하며, MCP 서버 구축 시 디버깅을 위한 플레이그라운드도 포함합니다.
문서
plugged.in MCP 허브 — 프록시 · 지식 · 메모리 · 도구
AI 데이터 교환의 교차로
AI에 지식, 메모리, 도구를 제공하는 통합 MCP 허브 — 단순한 프록시가 아닙니다. 단일 연결로 모든 MCP 서버를 관리하고 테스트하는 동시에, 클라이언트 전반에서 문서 인식 및 메모리 강화 워크플로우를 지원합니다.
📋 개요
plugged.in MCP 프록시 서버는 여러 MCP(Model Context Protocol) 서버를 하나의 통합 인터페이스로 집계하는 강력한 미들웨어입니다. plugged.in 앱에서 도구, 프롬프트, 리소스 구성을 가져와 적절한 기본 MCP 서버로 요청을 지능적으로 라우팅합니다.
이 프록시는 모든 MCP 클라이언트(Claude, Cline, Cursor 등)와의 원활한 통합을 지원하며, plugged.in 생태계를 통해 고급 관리 기능을 제공합니다.
허브 핵심 요소: 지식 · 메모리 · 도구 · 프록시
지식 (RAG v2 / AI 문서 교환)
통합된 저작자 표시 인식 문서 검색으로 모델 출력을 검색하고 기반을 다집니다. MCP 서버는 버전 관리, 공개 범위 제어, 모델 저작자 표시를 통해 라이브러리에서 문서를 생성하고 관리할 수 있습니다. 내장된 RAG를 사용하여 연결된 모든 소스에서 검색하고 관련 스니펫과 메타데이터를 반환합니다.
메모리 (영구 AI 메모리)
세션 간에도 유지되는 장기 워크스페이스/프로필 범위의 메모리입니다. 허브는 plugged.in 앱의 영구 메모리와 통합되어 에이전트 작업과 인사이트를 작업 간에 저장하고 불러올 수 있습니다. 내장 메모리 도구는 동일한 인증 모델 하에 낮은 마찰의 get/put/search 패턴을 노출하도록 로드맵에 있습니다.
도구
내장 기능을 다운스트림 MCP 서버(STDIO, SSE, 스트리밍 가능 HTTP)와 집계합니다. 도구 검색은 캐시되며 필요 시 새로 고칠 수 있습니다. 허브 수준 검색은 모든 MCP 클라이언트에 통합 카탈로그를 반환합니다. 허브는 도구, 리소스, 리소스 템플릿, 프롬프트를 지원합니다.
프록시
모든 클라이언트를 위한 하나의 연결. STDIO(기본값) 또는 선택적 API 인증 및 상태 비저장 모드를 갖춘 스트리밍 가능 HTTP로 실행합니다. Claude Desktop, Cline, Cursor, MCP Inspector 등과 함께 작동하며, 정책과 원격 측정을 중앙 집중화하면서 기존 클라이언트 구성을 유지합니다.
⭐ 이 프로젝트가 유용하다고 생각되면 GitHub에서 별표를 눌러 주세요! 더 많은 개발자에게 도달하고 지속적인 개선에 동기부여가 됩니다.
✨ 주요 기능
🚀 핵심 기능
- 내장 AI 플레이그라운드: 클라이언트 설정 없이 Claude, Gemini, OpenAI, xAI로 MCP를 즉시 테스트
- 범용 MCP 호환성: Claude Desktop, Cline, Cursor 등 모든 MCP 클라이언트와 작동
- 다중 서버 지원: STDIO, SSE, 스트리밍 가능 HTTP MCP 서버에 연결
- 이중 전송 모드: 프록시를 STDIO(기본값) 또는 스트리밍 가능 HTTP 서버로 실행
- 통합 문서 검색: 내장 RAG 기능으로 연결된 모든 서버에서 검색
- AI 문서 교환 (RAG v2): MCP 서버가 전체 저작자 표시와 함께 라이브러리에서 문서를 생성 및 관리
- 모든 모델의 알림: 선택적 이메일 전송으로 실시간 알림 수신
- 다중 워크스페이스 계층: 한 번의 클릭으로 다양한 MCP 구성 세트 간 전환
- API 기반 프록시: 직접 검색 대신 plugged.in 앱 API에서 기능을 가져옴
- 완전한 MCP 지원: 도구, 리소스, 리소스 템플릿, 프롬프트 처리
- 사용자 지정 지침: MCP 프롬프트로 형식화된 서버별 지침 지원
🎯 v1.5.0의 새로운 기능 (RAG v2 - AI 문서 교환)
- AI 문서 생성: 이제 MCP 서버가 라이브러리에 직접 문서를 생성할 수 있습니다
- 전체 모델 저작자 추적 (어떤 AI가 문서를 생성/업데이트했는지)
- 변경 추적이 포함된 버전 기록
- SHA-256 해싱을 통한 콘텐츠 중복 제거
- MD, TXT, JSON, HTML, PDF 등 다양한 형식 지원
- 고급 문서 검색: AI 필터링으로 강화된 RAG 쿼리
- AI 모델, 제공자, 날짜 범위, 태그, 소스 유형별 필터링
- 관련성 점수가 포함된 시맨틱 검색
- 키워드 강조 표시가 포함된 자동 스니펫 생성
- 필터링 지원:
ai_generated,upload, 또는api소스
- MCP를 통한 문서 관리:
- 문서 공개 범위 설정: 비공개, 워크스페이스, 또는 공개
- 문서 버전에 대한 부모-자식 관계
- 프로젝트 기반 범위 지정과 함께 프로필 기반 구성
- 문서 처리에 대한 실시간 진행 상황 추적
🎯 v1.4.0의 기능 (레지스트리 v2 지원)
- OAuth 토큰 관리: 스트리밍 가능 HTTP MCP 서버를 위한 원활한 OAuth 인증 처리
- plugged.in 앱에서 자동 토큰 검색
- 안전한 토큰 저장 및 새로 고침 메커니즘
- 클라이언트 측 인증 불필요
- 향상된 알림 시스템: 양방향 알림 지원
- plugged.in 앱으로 알림 전송
- MCP 서버에서 알림 수신
- 알림을 읽음/읽지 않음으로 표시
- 프로그래밍 방식으로 알림 삭제
- 트렌드 분석: 실시간 활동 추적
- 모든 도구 호출이 기록 및 추적됨
- 트렌드 서버 계산에 기여
- 사용량 지표 및 인기도 인사이트
- 레지스트리 통합: 레지스트리 v2 기능 완전 지원
- 레지스트리에서 자동 서버 검색
- 설치 추적 및 지표
- 커뮤니티 서버 지원
📦 v1.1.0의 기능
- 스트리밍 가능 HTTP 지원: 스트리밍 가능 HTTP 전송을 사용하는 다운스트림 MCP 서버 완전 지원
- HTTP 서버 모드: 구성 가능한 포트로 프록시를 HTTP 서버로 실행
- 유연한 인증: HTTP 엔드포인트에 대한 선택적 Bearer 토큰 인증
- 세션 관리: 상태 저장(세션 기반) 또는 상태 비저장 작업 모드 중 선택
🎯 v1.0.0의 핵심 기능
- 실시간 알림: 포괄적인 알림 지원으로 모든 MCP 활동 추적
- RAG 통합: plugged.in 앱을 통한 문서 강화 쿼리 지원
- 인스펙터 스크립트: 디버깅 및 개발을 위한 자동화된 테스트 도구
- 상태 모니터링: 연결 모니터링을 위한 내장 ping 엔드포인트
🔧 도구 카테고리
프록시는 두 가지 뚜렷한 도구 카테고리를 제공합니다:
🔧 정적 내장 도구 (항상 사용 가능)
이 도구들은 프록시에 내장되어 있으며 서버 구성 없이 작동합니다:
pluggedin_discover_tools- 즉각적인 결과를 위한 캐싱을 통한 스마트 검색pluggedin_ask_knowledge_base- AI 필터링 기능으로 문서 전체에서 RAG 검색pluggedin_send_notification- 선택적 이메일 전송으로 알림 보내기pluggedin_create_document- 라이브러리에 AI 생성 문서 만들기pluggedin_list_documents- 필터링 옵션으로 문서 나열pluggedin_search_documents- 쿼리로 특정 문서 검색pluggedin_get_document- ID로 특정 문서의 전체 콘텐츠 검색pluggedin_update_document- 기존 문서 업데이트 또는 추가
📋 클립보드 도구 (메모리 시스템)
pluggedin_clipboard_set- 이름(의미 키) 또는 인덱스로 클립보드 항목 설정pluggedin_clipboard_get- 이름, 인덱스로 클립보드 항목 가져오기 또는 모두 나열pluggedin_clipboard_delete- 이름, 인덱스로 클립보드 항목 삭제 또는 모두 지우기pluggedin_clipboard_list- 메타데이터와 함께 모든 클립보드 항목 나열pluggedin_clipboard_push- 자동 증가 인덱스로 값 푸시 (스택 푸시)pluggedin_clipboard_pop- 가장 높은 인덱스 항목 팝 (LIFO 동작)
⚡ 동적 MCP 도구 (연결된 서버에서)
이 도구들은 구성된 MCP 서버에서 제공되며 켜거나 끌 수 있습니다:
- 데이터베이스 도구 (PostgreSQL, SQLite 등)
- 파일 시스템 도구
- API 통합 도구
- 모든 MCP 서버의 사용자 지정 도구
검색 도구는 두 카테고리를 지능적으로 표시하여 AI 모델이 사용 가능한 모든 기능에 즉시 액세스할 수 있도록 합니다.
🚀 검색 도구 사용법
# Quick discovery - returns cached data instantly
pluggedin_discover_tools()
# Force refresh - shows current tools + runs background discovery
pluggedin_discover_tools({"force_refresh": true})
# Discover specific server
pluggedin_discover_tools({"server_uuid": "uuid-here"})
응답 예시:
## 🔧 Static Built-in Tools (Always Available):
1. **pluggedin_discover_tools** - Smart discovery with caching
2. **pluggedin_rag_query** - RAG v2 search across documents with AI filtering
3. **pluggedin_send_notification** - Send notifications
4. **pluggedin_create_document** - (Coming Soon) Create AI-generated documents
## ⚡ Dynamic MCP Tools (8) - From Connected Servers:
1. **query** - Run read-only SQL queries
2. **generate_random_integer** - Generate secure random integers
...
📋 클립보드 사용 예시
클립보드 시스템은 AI 워크플로우에 영구 메모리를 제공합니다:
# Store a named entry (upserts if exists)
pluggedin_clipboard_set({
"name": "customer_context",
"value": "{\"name\": \"John Doe\", \"account_id\": \"12345\"}",
"contentType": "application/json"
})
# Store an indexed entry for ordered pipelines
pluggedin_clipboard_set({
"idx": 0,
"value": "First pipeline step result",
"createdByTool": "data_processor"
})
# Push to stack (auto-incrementing index)
pluggedin_clipboard_push({
"value": "Analysis result from step 1",
"contentType": "text/plain"
})
# Get a specific entry by name
pluggedin_clipboard_get({"name": "customer_context"})
# Pop from stack (LIFO - returns and removes highest index)
pluggedin_clipboard_pop()
# List all entries with metadata
pluggedin_clipboard_list({"limit": 20})
# Delete specific entry
pluggedin_clipboard_delete({"name": "customer_context"})
# Clear all clipboard entries
pluggedin_clipboard_delete({"clearAll": true})
📚 RAG v2 사용 예시
향상된 RAG v2 시스템을 통해 MCP 서버는 전체 AI 저작자 표시와 함께 문서를 생성하고 검색할 수 있습니다:
# Search for documents created by specific AI models
pluggedin_rag_query({
"query": "system architecture",
"filters": {
"modelName": "Claude 3 Opus",
"source": "ai_generated",
"tags": ["technical"]
}
})
# Search across all document sources
pluggedin_rag_query({
"query": "deployment guide",
"filters": {
"dateFrom": "2024-01-01",
"visibility": "workspace"
}
})
# Future: Create AI-generated documents (Coming Soon)
pluggedin_create_document({
"title": "Analysis Report",
"content": "# Market Analysis\n\nDetailed findings...",
"format": "md",
"tags": ["analysis", "market"],
"metadata": {
"model": {
"name": "Claude 3 Opus",
"provider": "Anthropic"
}
}
})
🚀 빠른 시작
사전 요구 사항
- Node.js 18+ (v20+ 권장)
- plugged.in 앱의 API 키 (plugged.in/api-keys에서 획득)
설치
# Install and run with npx (latest v1.0.0)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY
🔄 v1.0.0으로 업그레이드
기존 설치의 경우 자세한 업그레이드 지침은 마이그레이션 가이드를 참조하세요.
# Quick upgrade
npx -y @pluggedin/[email protected] --pluggedin-api-key YOUR_API_KEY
MCP 클라이언트 구성
Claude Desktop
Claude Desktop 구성에 다음을 추가하세요:
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
"env": {
"PLUGGEDIN_API_KEY": "YOUR_API_KEY"
}
}
}
}
Cline
Cline 구성에 다음을 추가하세요:
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
"env": {
"PLUGGEDIN_API_KEY": "YOUR_API_KEY"
}
}
}
}
Cursor
Cursor의 경우 환경 변수 대신 명령줄 인수를 사용할 수 있습니다:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY
⚙️ 구성 옵션
환경 변수
| 변수 | 설명 | 필수 | 기본값 |
|---|---|---|---|
PLUGGEDIN_API_KEY | plugged.in 앱의 API 키 | 예 | - |
PLUGGEDIN_API_BASE_URL | plugged.in 앱의 기본 URL | 아니요 | https://plugged.in |
명령줄 인수
명령줄 인수가 환경 변수보다 우선합니다:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY --pluggedin-api-base-url https://your-custom-url.com
전송 옵션
| 옵션 | 설명 | 기본값 |
|---|---|---|
--transport <type> | 전송 유형: stdio 또는 streamable-http | stdio |
--port <number> | 스트리밍 가능 HTTP 서버의 포트 | 12006 |
--stateless | 스트리밍 가능 HTTP에 상태 비저장 모드 활성화 | false |
--require-api-auth | 스트리밍 가능 HTTP 요청에 API 키 요구 | false |
전체 옵션 목록:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --help
🌐 스트리밍 가능 HTTP 모드
프록시를 STDIO 대신 HTTP 서버로 실행하여 웹 기반 액세스 및 원격 연결을 활성화할 수 있습니다.
기본 사용법
# Run as HTTP server on default port (12006)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --pluggedin-api-key YOUR_API_KEY
# Custom port
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --port 8080 --pluggedin-api-key YOUR_API_KEY
# With authentication required
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --require-api-auth --pluggedin-api-key YOUR_API_KEY
# Stateless mode (new session per request)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --stateless --pluggedin-api-key YOUR_API_KEY
HTTP 엔드포인트
POST /mcp- MCP 메시지 전송GET /mcp- 서버 전송 이벤트 스트림 (선택 사항)DELETE /mcp- 세션 종료GET /health- 상태 확인 엔드포인트
세션 관리
상태 저장 모드(기본값)에서는 mcp-session-id 헤더를 사용하여 세션을 유지합니다:
# First request creates a session
curl -X POST http://localhost:12006/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# Subsequent requests use the same session
curl -X POST http://localhost:12006/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"tool_name"},"id":2}'
인증
--require-api-auth 사용 시 API 키를 Bearer 토큰으로 포함하세요:
curl -X POST http://localhost:12006/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"ping","id":1}'
🐳 Docker 사용법
Docker를 사용하여 프록시 서버를 빌드하고 실행할 수도 있습니다.
이미지 빌드
Docker가 설치되어 실행 중인지 확인하세요. pluggedin-mcp 디렉토리로 이동하여 실행하세요:
docker build -t pluggedin-mcp-proxy:latest .
빌드 컨텍스트를 최적화하기 위해 .dockerignore 파일이 포함되어 있습니다.
컨테이너 실행
STDIO 모드 (기본값)
MCP Inspector 테스트를 위해 STDIO 모드로 컨테이너를 실행합니다:
docker run -it --rm \
-e PLUGGEDIN_API_KEY="YOUR_API_KEY" \
-e PLUGGEDIN_API_BASE_URL="YOUR_API_BASE_URL" \
--name pluggedin-mcp-container \
pluggedin-mcp-proxy:latest
스트리밍 가능 HTTP 모드
컨테이너를 HTTP 서버로 실행합니다:
docker run -d --rm \
-e PLUGGEDIN_API_KEY="YOUR_API_KEY" \
-e PLUGGEDIN_API_BASE_URL="YOUR_API_BASE_URL" \
-p 12006:12006 \
--name pluggedin-mcp-http \
pluggedin-mcp-proxy:latest \
--transport streamable-http --port 12006
YOUR_API_KEY 및 YOUR_API_BASE_URL를 교체하세요 (기본 https://plugged.in을 사용하지 않는 경우).
MCP Inspector로 테스트
컨테이너가 실행 중인 동안 MCP Inspector를 사용하여 연결할 수 있습니다:
npx @modelcontextprotocol/inspector docker://pluggedin-mcp-container
이렇게 하면 실행 중인 컨테이너의 표준 입력/출력에 연결됩니다.
컨테이너 중지
docker run이(가) 실행 중인 터미널에서 Ctrl+C을(를) 누르세요. --rm 플래그는 중지 시 컨테이너가 자동으로 제거되도록 합니다.
☁️ Smithery 클라우드 배포
plugged.in MCP 프록시를 Smithery Cloud에 배포하여 호스팅된 상시 액세스 가능한 MCP 서버를 이용하세요.
빠른 시작
- smithery.ai에 방문하여 로그인합니다
- GitHub 계정을 연결하고
pluggedin-mcp저장소를 선택합니다 - Smithery UI에서 Plugged.in API 키를 구성합니다
- 배포하고 HTTPS 엔드포인트를 얻습니다
장점
- 24/7 가용성: 프록시가 항상 실행됩니다
- 제로 구성: Smithery가
smithery.yaml에서 설정을 자동 감지합니다 - 자동 확장: 여러 동시 연결을 처리합니다
- 웹 접근: 웹 애플리케이션과 원격 클라이언트에 완벽합니다
문서
전체 배포 지침, 구성 옵션, 문제 해결 및 기술 세부 사항은 다음을 참조하세요:
자율 에이전트 (미리보기)
허브는 에이전트 루프를 엔드투엔드로 지원하도록 설계되었습니다:
MCP Client → plugged.in MCP Hub → (Plan → Act → Reflect)
↘ Knowledge ↘ Memory ↘ Tools
- 계획 — 목표와 제약 조건을 도출하고 작업 그래프를 형성합니다.
- 행동 — 통합 카탈로그에서 도구를 호출하고 STDIO/SSE/HTTP 서버 간에 안전하게 라우팅합니다.
- 성찰 — 결과를 메모리와 지식(문서, 노트, 아티팩트)에 지속시켜 후속 단계를 개선합니다.
안전 및 운영
스트리밍 가능 HTTP 모드에서 --require-api-auth를 활성화하고 명령, 인수 및 환경 변수에 대해 허용 목록을 사용합니다. 서버 수준 유효성 검사와 프롬프트 주입에 대해 강화된 클라이언트 측 프롬프트를 결합합니다. 기존 로깅/원격 측정을 활용하여 도구 사용 및 문서 변형을 추적합니다.
🏗️ 시스템 아키텍처
plugged.in MCP 프록시 서버는 MCP 클라이언트와 여러 기본 MCP 서버 간의 브리지 역할을 합니다:
sequenceDiagram
participant MCPClient as MCP Client (e.g. Claude Desktop)
participant PluggedinMCP as plugged.in MCP Proxy
participant PluggedinApp as plugged.in App
participant MCPServers as Underlying MCP Servers
MCPClient ->> PluggedinMCP: Request list tools/resources/prompts
PluggedinMCP ->> PluggedinApp: Get capabilities via API
PluggedinApp ->> PluggedinMCP: Return capabilities (prefixed)
MCPClient ->> PluggedinMCP: Call tool/read resource/get prompt
alt Standard capability
PluggedinMCP ->> PluggedinApp: Resolve capability to server
PluggedinApp ->> PluggedinMCP: Return server details
PluggedinMCP ->> MCPServers: Forward request to target server
MCPServers ->> PluggedinMCP: Return response
else Custom instruction
PluggedinMCP ->> PluggedinApp: Get custom instruction
PluggedinApp ->> PluggedinMCP: Return formatted messages
end
PluggedinMCP ->> MCPClient: Return response
alt Discovery tool (Smart Caching)
MCPClient ->> PluggedinMCP: Call pluggedin_discover_tools
alt Cached data available
PluggedinMCP ->> PluggedinApp: Check cached capabilities
PluggedinApp ->> PluggedinMCP: Return cached tools/resources/prompts
PluggedinMCP ->> MCPClient: Return instant results (static + dynamic)
else Force refresh or no cache
PluggedinMCP ->> PluggedinApp: Trigger background discovery
PluggedinMCP ->> MCPClient: Return current tools + "discovery running"
PluggedinApp ->> MCPServers: Connect and discover capabilities (background)
MCPServers ->> PluggedinApp: Return fresh capabilities
end
end
🔄 워크플로우
- 구성: 프록시가 plugged.in 앱에서 서버 구성을 가져옵니다
- 스마트 검색 (
pluggedin_discover_tools):- 캐시 확인: 먼저 기존 캐시 데이터를 확인합니다 (1초 미만)
- 즉시 응답: 정적 도구 + 캐시된 동적 도구를 즉시 반환합니다
- 백그라운드 새로 고침:
force_refresh=true의 경우 현재 도구를 표시하면서 백그라운드에서 검색을 실행합니다 - 새 검색: 캐시된 데이터가 없는 경우에만 전체 검색을 실행합니다
- 기능 목록: 프록시가 plugged.in 앱 API에서 검색된 기능을 가져옵니다
tools/list:/api/tools에서 가져옵니다 (정적 + 동적 도구 포함)resources/list:/api/resources에서 가져옵니다resource-templates/list:/api/resource-templates에서 가져옵니다prompts/list:/api/prompts및/api/custom-instructions에서 가져와 결과를 병합합니다
- 기능 해결: 프록시가 기능을 대상 서버로 해결합니다
tools/call: 도구 이름에서 접두사를 구문 분석하고 내부 맵에서 서버를 조회합니다resources/read:/api/resolve/resource?uri=...을 호출하여 서버 세부 정보를 가져옵니다prompts/get: 사용자 지정 명령 접두사를 확인하거나/api/resolve/prompt?name=...을 호출합니다
- 요청 라우팅: 요청이 적절한 기본 MCP 서버로 라우팅됩니다
- 응답 처리: 기본 서버의 응답이 클라이언트에 반환됩니다
🔒 보안 기능
plugged.in MCP 프록시는 시스템과 데이터를 보호하기 위해 포괄적인 보안 조치를 구현합니다:
입력 유효성 검사 및 살균
- 명령 주입 방지: 모든 명령과 인수는 실행 전에 허용 목록에 대해 유효성이 검사됩니다
- 환경 변수 보안: 따옴표와 여러 줄 값의 적절한 처리를 통해
.env파일의 안전한 구문 분석 - 토큰 유효성 검사: API 키 및 인증 토큰에 대한 강력한 정규식 패턴 (32-64자 16진수)
네트워크 보안
- SSRF 보호: URL 유효성 검사로 다음에 대한 접근을 차단합니다:
- 로컬호스트 및 루프백 주소 (127.0.0.1, ::1)
- 사설 IP 범위 (10.x, 172.16-31.x, 192.168.x)
- 링크-로컬 주소 (169.254.x)
- 멀티캐스트 및 예약된 범위
- 일반적인 내부 서비스 포트 (SSH, 데이터베이스 등)
- 헤더 유효성 검사: 다음을 통한 헤더 주입 방지:
- 위험한 헤더 차단
- RFC 7230 준수 헤더 이름 유효성 검사
- 제어 문자 감지
- 헤더 크기 제한 (최대 8KB)
- 속도 제한:
- 도구 호출: 분당 60회 요청
- API 호출: 분당 100회 요청
- 오류 살균: 오류 메시지를 살균하여 정보 노출을 방지합니다
프로세스 보안
- 안전한 명령 실행: 셸 주입을 방지하기 위해
exec()대신execFile()을 사용합니다 - 명령 허용 목록: 다음의 실행만 허용합니다:
node,npx- Node.js 명령python,python3- Python 명령uv,uvx,uvenv- UV Python 도구
- 인수 살균: 모든 인수에서 셸 메타 문자와 제어 문자를 제거합니다
- 환경 변수 유효성 검사: 밑줄이 있는 영숫자 키만 허용합니다
스트리밍 가능 HTTP 보안
- 지연 인증: 도구 검색에 인증이 필요하지 않아 호환성이 향상됩니다
- 세션 보안: 암호학적으로 안전한 세션 ID 생성
- CORS 보호: 웹 접근을 위한 구성 가능한 CORS 헤더
- 요청 크기 제한: 대용량 페이로드를 통한 DoS 방지
보안 유틸리티
전용 security-utils.ts 모듈이 제공하는 기능:
- Bearer 토큰 유효성 검사
- SSRF 보호가 포함된 URL 유효성 검사
- 명령 인수 살균
- 환경 변수 유효성 검사
- 속도 제한 구현
- 오류 메시지 살균
자세한 보안 구현은 SECURITY.md를 참조하세요.
🧩 plugged.in 앱과의 통합
plugged.in MCP 프록시 서버는 plugged.in 앱과 원활하게 작동하도록 설계되었으며, 이 앱은 다음을 제공합니다:
- MCP 서버 구성을 관리하기 위한 웹 기반 인터페이스
- 중앙 집중식 기능 검색 (도구, 리소스, 템플릿, 프롬프트)
- RAG v2 문서 라이브러리: 문서를 업로드하고 전체 저작자 표시와 함께 AI 생성 콘텐츠를 활성화합니다
- 사용자 지정 지침 관리
- 다양한 구성 세트를 위한 다중 워크스페이스 지원
- 모든 AI 모델로 MCP 도구를 테스트하기 위한 대화형 플레이그라운드
- 사용자 인증 및 API 키 관리
- AI 문서 교환: 모델 저작자 추적을 통해 문서 생성, 검색 및 관리
📚 관련 리소스
🤝 기여
기여를 환영합니다! Pull Request를 자유롭게 제출해 주세요.
📝 최근 업데이트
버전 1.9.0 (2025년 9월) - 보안 강화
🔒 향상된 HTML 살균
- 업계 표준 살균: 사용자 지정 정규식 기반 HTML 살균을
sanitize-html라이브러리로 교체했습니다 - XSS 방지: 크로스 사이트 스크립팅 공격에 대한 포괄적인 보호
- HTML 속성 보안: HTML 속성 컨텍스트(따옴표, 앰퍼샌드)에 대한 향상된 살균
- 형식 문자열 주입: 로깅에서 형식 문자열 주입 취약점 수정
- 보안 테스트: 모든 살균 기능에 대한 포괄적인 테스트 범위
🛡️ 보안 개선
- CodeQL 준수: GitHub CodeQL 분석으로 식별된 모든 보안 취약점 해결
- 입력 유효성 검사: 모든 기능에서 입력 유효성 검사 및 살균 강화
- 종속성 업데이트: 강력한 HTML 콘텐츠 필터링을 위해
sanitize-html추가 - 테스트 범위: XSS 공격 방지 검증으로 보안 테스트 스위트 강화
버전 1.5.0 (2025년 1월) - RAG v2
🤖 AI 문서 교환
- AI 생성 문서: 이제 MCP 서버가 전체 AI 저작자 표시와 함께 라이브러리에 문서를 생성할 수 있습니다
- 모델 저작자 추적: 각 문서를 생성하거나 업데이트한 AI 모델의 전체 이력
- 고급 문서 검색: AI 모델, 제공자, 날짜, 태그 및 소스 유형별로 필터링
- 문서 버전 관리: AI 생성 콘텐츠의 변경 사항 추적 및 버전 이력 유지
- 다중 소스 지원: 업로드, AI 생성 또는 API 통합을 통한 문서
🔍 향상된 RAG 기능
- 의미론적 검색: PostgreSQL 전체 텍스트 검색으로 향상된 관련성 점수
- 스마트 필터링: 가시성, 모델 저작자 및 문서 소스별로 결과 필터링
- 스니펫 생성: 키워드 강조 표시와 함께 자동 스니펫 추출
- 성능 최적화: 최적화된 인덱싱으로 더 빠른 쿼리
버전 1.2.0 (2025년 1월)
🔒 보안 강화
- URL 유효성 검사: 사설 IP, 로컬호스트 및 위험한 포트를 차단하는 포괄적인 SSRF 보호
- 명령 허용 목록: 승인된 명령(node, npx, python 등)만 실행 가능
- 헤더 살균: 헤더 주입 공격에 대한 보호
- 지연 인증: 인증 없는 도구 검색으로 Smithery 호환성 향상
🚀 성능 개선
- 최적화된 Docker 빌드: 최소 컨테이너 공간을 위한 다단계 빌드
- 프로덕션 종속성만: 테스트 파일 및 개발 종속성이 Docker 이미지에서 제외됨
- 리소스 효율성: 리소스가 제한된 환경에서의 배포를 위해 설계됨
🔧 기술적 개선
- 스트리밍 가능 HTTP 전송에서 향상된 오류 처리
- 더 나은 세션 정리 및 메모리 관리
- 개선된 TypeScript 유형 및 코드 구성
버전 1.1.0 (2024년 12월)
🚀 새로운 기능
- 스트리밍 가능 HTTP 지원: 최신 스트리밍 가능 HTTP 전송을 사용하여 다운스트림 MCP 서버에 연결
- HTTP 서버 모드: 웹 기반 접근을 위해 프록시를 HTTP 서버로 실행
- 유연한 세션 관리: 상태 비저장 또는 상태 저장 모드 중 선택
- 인증 옵션: HTTP 엔드포인트에 대한 선택적 Bearer 토큰 인증
- 상태 모니터링: 서비스 모니터링을 위한
/health엔드포인트
🔧 기술적 개선
- 최신 프로토콜 지원을 위해 MCP SDK를 v1.13.1로 업데이트
- HTTP 서버 기능을 위한 Express.js 통합 추가
- 더 나은 개발자 경험을 위한 향상된 TypeScript 유형
버전 1.0.0 (2025년 6월)
🎯 주요 기능
- 실시간 알림 시스템: 포괄적인 알림 지원으로 모든 MCP 활동 추적
- RAG 통합: plugged.in 앱을 통한 문서 강화 쿼리 지원
- 검사기 스크립트: 디버깅 및 개발을 위한 새로운 자동화된 테스트 도구
- 상태 모니터링: 연결 모니터링을 위한 내장 ping 엔드포인트
🔒 보안 강화
- 입력 유효성 검사: 모든 입력에 대한 업계 표준 유효성 검사 및 살균
- URL 보안: SSRF 보호가 포함된 향상된 URL 유효성 검사
- 환경 보안: dotenv를 사용한 환경 변수의 안전한 구문 분석
- 오류 살균: 오류 응답에서 정보 노출 방지
🐛 버그 수정
- JSON-RPC 프로토콜 간섭 수정 (stdout 대 stderr 분리)
- 개발 환경을 위한 로컬호스트 URL 유효성 검사 해결
- 검사기 스크립트에서 API 키 처리 수정
- 연결 안정성 및 메모리 관리 개선
🔧 개발자 도구
- 자동화된 테스트를 위한 새로운 검사기 스크립트
- 개선된 오류 메시지 및 디버깅 기능
- 적절한 stderr 사용을 통한 구조화된 로깅
- 향상된 TypeScript 유형 안전성
전체 세부 사항은 릴리스 노트를 참조하세요.
🧪 테스트 및 개발
로컬 개발
테스트는 개발 목적으로 포함되지만 컨테이너 공간을 최소화하기 위해 Docker 빌드에서 제외됩니다.
# Run tests locally
npm test
# or
./scripts/test-local.sh
# Run tests in watch mode
npm run test:watch
# Run tests with UI
npm run test:ui
경량 Docker 빌드
Docker 이미지는 최소 공간에 최적화되어 있습니다:
- 다단계 빌드 프로세스
- 최종 이미지에 프로덕션 종속성만 포함
- 테스트 파일 및 개발 종속성 제외
- 리소스가 제한된 환경에 최적화됨
# Build optimized Docker image
docker build -t pluggedin-mcp .
# Check image size
docker images pluggedin-mcp
📄 라이선스
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.
🙏 감사의 말
- MCP 프록시 서버에서 영감을 받음
- 모델 컨텍스트 프로토콜을 기반으로 구축됨