use-mcp는 Model Context Protocol (MCP) 서버 연결을 위해 특별히 제작된 경량 React 훅 라이브러리입니다. 이 프로젝트는 AI 시스템에서 MCP 표준의 인증 및 도구 호출 과정을 간소화하여 개발자에게 사용하기 쉬운 프론트엔드 통합 솔루션을 제공합니다.
npm install use-mcp
# 또는
pnpm add use-mcp
# 또는
yarn add use-mcp
import { useMcp } from 'use-mcp/react'
function MyAIComponent() {
const {
state, // 연결 상태: 'discovering' | 'authenticating' | 'connecting' | 'loading' | 'ready' | 'failed'
tools, // MCP 서버에서 제공하는 사용 가능한 도구
error, // 연결 실패 시 오류 정보
callTool, // MCP 서버 도구를 호출하는 함수
retry, // 수동으로 연결 재시도
authenticate, // 수동으로 인증 트리거
clearStorage, // 저장된 토큰 및 자격 증명 지우기
} = useMcp({
url: 'https://your-mcp-server.com',
clientName: 'My App',
autoReconnect: true,
})
// 다양한 연결 상태 처리
if (state === 'failed') {
return (
<div>
<p>연결 실패: {error}</p>
<button onClick={retry}>재시도</button>
<button onClick={authenticate}>수동 인증</button>
</div>
)
}
if (state !== 'ready') {
return <div>AI 서비스에 연결 중...</div>
}
// 사용 가능한 도구 사용
const handleSearch = async () => {
try {
const result = await callTool('search', { query: 'example search' })
console.log('검색 결과:', result)
} catch (err) {
console.error('도구 호출 실패:', err)
}
}
return (
<div>
<h2>사용 가능한 도구 수: {tools.length}</h2>
<ul>
{tools.map(tool => (
<li key={tool.name}>{tool.name}</li>
))}
</ul>
<button onClick={handleSearch}>검색</button>
</div>
)
}
OAuth 인증 흐름을 처리하려면 애플리케이션에 콜백 엔드포인트를 설정해야 합니다.
// App.tsx with React Router
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
import { useEffect } from 'react'
import { onMcpAuthorization } from 'use-mcp'
function OAuthCallback() {
useEffect(() => {
onMcpAuthorization()
}, [])
return (
<div>
<h1>인증 중...</h1>
<p>이 창은 자동으로 닫혀야 합니다.</p>
</div>
)
}
function App() {
return (
<Router>
<Routes>
<Route path="/oauth/callback" element={<OAuthCallback />} />
<Route path="/" element={<YourMainComponent />} />
</Routes>
</Router>
)
}
// pages/oauth/callback.tsx
import { useEffect } from 'react'
import { onMcpAuthorization } from 'use-mcp'
export default function OAuthCallbackPage() {
useEffect(() => {
onMcpAuthorization()
}, [])
return (
<div>
<h1>인증 중...</h1>
<p>이 창은 자동으로 닫혀야 합니다.</p>
</div>
)
}
function useMcp(options: UseMcpOptions): UseMcpResult
옵션 | 타입 | 설명 |
---|---|---|
url |
string |
필수. MCP 서버의 URL |
clientName |
string |
OAuth 등록 시 클라이언트 이름 |
clientUri |
string |
OAuth 등록 시 클라이언트 URI |
callbackUrl |
string |
OAuth 리디렉션의 사용자 정의 콜백 URL (기본값: 현재 도메인의 /oauth/callback ) |
storageKeyPrefix |
string |
localStorage에서 OAuth 데이터의 저장 키 접두사 (기본값: "mcp:auth" ) |
clientConfig |
object |
MCP 클라이언트 ID의 사용자 정의 구성 |
debug |
boolean |
상세한 디버깅 로그 활성화 여부 |
autoRetry |
boolean | number |
초기 연결 실패 시 자동 재시도, 지연 시간(밀리초) 설정 가능 |
autoReconnect |
boolean | number |
이미 설정된 연결이 끊어졌을 때 자동 재연결, 지연 시간(밀리초) 설정 가능 (기본값: 3000) |
속성 | 타입 | 설명 |
---|---|---|
state |
string |
현재 연결 상태: 'discovering' , 'authenticating' , 'connecting' , 'loading' , 'ready' , 'failed' |
tools |
Tool[] |
MCP 서버에서 제공하는 사용 가능한 도구 |
error |
string | undefined |
연결 실패 시 오류 정보 |
authUrl |
string | undefined |
팝업이 차단되었을 때 수동 인증 URL |
log |
LogEntry[] |
로그 메시지 배열 |
callTool |
(name: string, args?: Record<string, unknown>) => Promise<any> |
MCP 서버 도구를 호출하는 함수 |
retry |
() => void |
수동으로 재연결 시도 |
disconnect |
() => void |
MCP 서버와의 연결 끊기 |
authenticate |
() => void |
수동으로 인증 트리거 |
clearStorage |
() => void |
저장된 모든 인증 데이터 지우기 |
use-mcp는 React 개발자에게 Model Context Protocol 서버 통합을 위한 강력하고 간결한 솔루션을 제공합니다. 직관적인 Hook 인터페이스, 완벽한 인증 흐름 처리 및 강력한 연결 관리 기능을 통해 개발자는 React 앱에서 AI 도구 통합을 쉽게 구현하여 MCP 표준 사용 장벽을 크게 낮출 수 있습니다.