mcp-suite
mcp-suite
AI 에이전트(Claude Desktop, Cursor, Windsurf, 커스텀 에이전트)에게 금융 시장, Web3/DeFi, 개발자 도구, 의료(FHIR) 등 4개 도메인 전반의 실제 데이터에 대한 구조화된 액세스를 제공하는 프로덕션급 TypeScript MCP 서버입니다.
인증 우선 — 기본적으로 JWT 유효성 검사 활성화
도메인 격리 — API 키가 없으면 전체 서버가 아닌 해당 도메인만 비활성화
도메인별 응답 캐시(LRU + TTL) 및 토큰 버킷 속도 제한
모든 도구 입력 및 출력에 대한 타입 지정 스키마(Zod)
두 가지 전송 방식: stdio(로컬) 및 HTTP + SSE(원격/호스팅)
빠른 시작
# Run directly (no global install required)
npx mcp-suite
# Or install globally
npm install -g mcp-suite
mcp-suite요구 사항: Node.js ≥ 20, npm ≥ 10
설치
1. 환경 변수 설정
.env.example을 .env로 복사하고 활성화하려는 도메인의 키를 입력하세요:
cp .env.example .env# Authentication (required in production)
MCP_JWT_SECRET=your-secret-here
# Financial Markets (Alpha Vantage + CoinGecko)
ALPHA_VANTAGE_API_KEY=
# Web3 / DeFi (Alchemy + OpenSea + Blur)
ALCHEMY_API_KEY=
OPENSEA_API_KEY=
# Developer Tools (GitHub)
GITHUB_TOKEN=
# Healthcare / FHIR (optional — defaults to public HAPI sandbox)
FHIR_BASE_URL=https://hapi.fhir.org/baseR4
# Server
LOG_LEVEL=info # debug | info | warn | error
MCP_PORT=3000 # HTTP transport only
AUTH_DISABLED=false # set true for local dev only사용하는 도메인에 대한 키만 있으면 됩니다. 키가 없는 도메인은 시작 시 자동으로 비활성화됩니다.
2. 개발용 토큰 생성
npx mcp-suite gen-token
# eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...3. Claude Desktop에 추가
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)에 추가하세요:
{
"mcpServers": {
"mcp-suite": {
"command": "npx",
"args": ["mcp-suite"],
"env": {
"MCP_JWT_SECRET": "your-secret-here",
"ALPHA_VANTAGE_API_KEY": "...",
"ALCHEMY_API_KEY": "...",
"OPENSEA_API_KEY": "...",
"GITHUB_TOKEN": "..."
}
}
}
}4. HTTP 서버로 시작(원격/호스팅 배포)
npx mcp-suite --transport http --port 3000이 명령은 원격 MCP 클라이언트를 위해 GET /health, GET /tools 및 SSE 엔드포인트를 노출합니다.
CLI 명령어
명령어 | 설명 |
| 서버 시작(stdio 전송, 기본값) |
| HTTP + SSE 서버 시작 |
| 개발용 JWT 생성 |
| 도메인별로 그룹화된 모든 활성 도구 출력 |
사용 가능한 도구
금융 시장
Alpha Vantage 및 CoinGecko 기반.
필수: ALPHA_VANTAGE_API_KEY
도구 | 설명 |
| 미국 주식 가격, 거래량, 변동 % |
| 통화 쌍 환율(ISO 4217) |
| 암호화폐 가격, 시가 총액, 24시간 변동 |
| 감정 점수가 포함된 금융 헤드라인 |
예시:
{ "tool": "get_stock_quote", "arguments": { "ticker": "NVDA" } }Web3 / DeFi
Alchemy, OpenSea, Blur 기반.
필수: ALCHEMY_API_KEY, OPENSEA_API_KEY
도구 | 설명 |
| OpenSea + Blur 전체 최저가(ETH, Base, Arbitrum) |
| 특성 및 마켓플레이스가 포함된 최근 N건의 판매 내역 |
| 멀티체인 토큰 + NFT 보유량, ENS 확인 |
| Uniswap V2/V3 풀 예치금 및 가격 비율 |
| 규모별 거래 슬리피지 추정치 |
예시:
{ "tool": "get_nft_floor", "arguments": { "collection_slug": "boredapeyachtclub" } }개발자 도구
GitHub API 기반.
필수: GITHUB_TOKEN
도구 | 설명 |
| 스타, 포크, 이슈, 언어, 마지막 커밋 |
| PR diff 요약, 리뷰어, CI 확인, 병합 상태 |
| 브랜치별 최신 GitHub Actions 실행 내역 |
| 활성 배포 URL 및 상태 |
예시:
{ "tool": "get_pipeline_status", "arguments": { "repo": "vercel/next.js", "branch": "canary" } }의료 (FHIR)
HAPI FHIR R4 기반.
필수: 없음(기본적으로 공개 샌드박스 사용) 또는 커스텀 엔드포인트용 FHIR_BASE_URL.
HIPAA 주의사항: 모든 의료 도구는 합성 데이터만 포함된 공개 샌드박스에 연결됩니다. 실제 환자 건강 정보(PHI)에는 액세스하지 않습니다. 프로덕션 환경에서 사용하려면
FHIR_BASE_URL을 HIPAA 준수 EHR 엔드포인트로 교체하고 적절한 SMART on FHIR OAuth 2.0 자격 증명을 구성하십시오.
도구 | 설명 |
| 인구 통계학적 환자 검색 |
| 환자별 활력 징후 및 검사 결과 |
| 환자별 활성 약물 목록 |
예시:
{ "tool": "lookup_patient", "arguments": { "name": "Smith", "birth_date": "1980-01-15" } }인증
인증은 기본적으로 활성화되어 있습니다. 모든 도구 호출에는 유효한 JWT가 포함되어야 합니다.
프로덕션
MCP_JWT_SECRET을 강력한 비밀 키로 설정하세요. 프로덕션 모드에서는 이 키 없이는 서버가 시작되지 않습니다.
개발
옵션 A — 인증 완전히 비활성화(로컬 전용):
AUTH_DISABLED=true옵션 B — 개발용 JWT 사용:
npx mcp-suite gen-token생성된 토큰을 MCP 요청의 _meta 필드(stdio) 또는 Authorization: Bearer 헤더(HTTP)에 전달하세요.
JWT 구조
{
"sub": "your-client-id",
"scope": "mcp:tools",
"iat": 1713484800,
"exp": 1716076800
}아키텍처
MCP Clients (Claude Desktop · Cursor · Windsurf · Custom Agents)
│ MCP Protocol
┌───────▼────────────────────────────────────────┐
│ Transport Layer (stdio | HTTP + SSE) │
├────────────────────────────────────────────────┤
│ Auth Middleware (JWT validation / bypass) │
├────────────────────────────────────────────────┤
│ Tool Registry (register · list · route) │
├──────────┬──────────┬──────────┬───────────────┤
│Financial │ Web3 │ DevTools │ Healthcare │
├──────────┴──────────┴──────────┴───────────────┤
│ Shared: Rate Limiter · Cache · Logger · Errors │
└─────────────────────────────────────────────────┘
│ │ │ │
Alpha Vantage Alchemy GitHub API HAPI FHIR
CoinGecko OpenSea
Blur캐싱: 프로세스 내 LRU + TTL 캐시(node-cache). TTL은 도메인에 적합하게 설정됨(암호화폐 15초, GitHub 저장소 통계 300초).
속도 제한: 도메인별 토큰 버킷으로 무료 티어 API 할당량 보호.
오류 유형:
AuthError,ValidationError,DomainUnavailableError,UpstreamError,RateLimitError— 모두 구조화된 MCP 오류 응답을 생성.로깅: 모든 도구 호출에 대한 구조화된 JSON: 도메인, 도구 이름, 지연 시간, 캐시 적중 여부, 상태.
도메인 추가
각 도메인은 동일한 패턴을 따릅니다. 새 도메인을 추가하려면:
src/domains/[name]/에index.ts,schemas.ts,client.ts및tools/를 생성합니다.Domain객체를 내보냅니다:
export const myDomain: Domain = {
name: 'my-domain',
isAvailable: () => !!config.MY_API_KEY,
registerTools: (server) => { /* server.tool(...) calls */ }
}src/server.ts에 등록합니다.docs/API.md에 도구를 문서화합니다.
전체 패턴은 docs/TDD.md §5 및 docs/CODING_STANDARDS.md를 참조하세요.
개발
git clone https://github.com/ayenisholah/mcp-suite.git
cd mcp-suite
npm install
cp .env.example .env # fill in your API keys
npm run build # compile TypeScript → dist/
npm run dev # watch mode
npm run typecheck # type check without emit
npm run lint # ESLint
npm test # unit tests (Vitest)
npm run test:coverage # tests + coverage report
# Integration tests — hits real APIs, requires .env keys
RUN_INTEGRATION=true npm testHTTP 전송 엔드포인트
--transport http로 실행할 때:
엔드포인트 | 인증 | 설명 |
| 아니오 | 도메인별 가용성 상태 |
| 예 | 도메인별로 그룹화된 모든 등록된 도구 |
| 예 | MCP 프로토콜 엔드포인트(SSE) |
오류 참조
코드 | 설명 |
| JWT 누락, 만료 또는 잘못된 서명 |
| 입력값이 Zod 스키마 유효성 검사 실패 |
| 시작 시 도메인 API 키가 구성되지 않음 |
| 도메인별 속도 제한 초과 |
| 외부 API가 오류를 반환하거나 시간 초과 발생 |
라이선스
MIT — LICENSE 참조
기여
이슈 및 PR을 환영합니다. 제출하기 전에 docs/CODING_STANDARDS.md를 읽어주세요.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcp-nexus/mcp-suite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server