eks-maturity-advisor MCP Server

eks-maturity-advisor MCP Server

Enables scanning of EKS cluster maturity and repository configuration through MCP tools, providing diagnostic reports as markdown.

Category
访问服务器

README

eks-maturity-advisor MCP Server

skills/eks-maturity-advisor의 스캐너 로직을 MCP(Model Context Protocol) 서버로 노출합니다. 기존 Codex Skill(SKILL.md + 로컬 스크립트 실행)과 달리, 이 서버는 MCP를 지원하는 어떤 클라이언트(Claude Desktop, Claude Code, Cursor 등)에서도 원격 URL로 접속해서 같은 진단 기능을 도구(tool)로 호출할 수 있게 해줍니다.

server.mjs 구조

buildServer()          MCP 서버 인스턴스를 만들고 tool 2개를 등록
  ├─ scan_repo         scanRepository() 호출 → renderMarkdown()으로 변환해 반환
  └─ scan_live_cluster scanLiveCluster()  호출 → renderMarkdown()으로 변환해 반환

runStdio()              로컬 테스트용. node server.mjs --stdio
runHttp()                실제 배포용. Streamable HTTP 트랜스포트 + Express
  ├─ (선택) x-api-key 헤더 검증 미들웨어
  ├─ transports{}        mcp-session-id별로 StreamableHTTPServerTransport 보관
  ├─ POST /mcp           세션 초기화(initialize) 또는 기존 세션으로 요청 처리
  ├─ GET  /mcp           서버→클라이언트 스트림(SSE) 유지
  └─ DELETE /mcp         세션 종료

buildServer()가 요청마다(정확히는 세션마다) 새 인스턴스를 만드는 게 핵심

로컬에서 돌려보기

cd mcp-server
npm install

# 방법 1: stdio (Claude Desktop 로컬 설정에 등록해서 테스트)
node server.mjs --stdio

# 방법 2: HTTP (아래 curl로 직접 확인 가능)
node server.mjs

HTTP 모드로 띄운 뒤 MCP 핸드셰이크를 직접 확인하려면:

# 1) initialize — mcp-session-id를 응답 헤더에서 받음
curl -i -X POST http://127.0.0.1:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

# 2) tools/list, tools/call — 위에서 받은 세션 ID를 mcp-session-id 헤더로 전달
curl -X POST http://127.0.0.1:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: <위에서 받은 값>" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"scan_repo","arguments":{"repoRoot":"/absolute/path/to/repo"}}}'

실제로 eks-secure-infra 레포를 대상으로 위 방식대로 검증했고, 정상적으로 Quick Wins 위반 항목(예: default ServiceAccount, Ingress TLS 누락)이 markdown으로 반환되는 것을 확인했습니다.

MCP Inspector로 테스트하기

Claude Desktop 같은 실제 AI 클라이언트에 연동하지 않고, MCP 서버 자체만 확인하고 싶을 때 쓰는 공식 도구입니다. curl로 직접 JSON-RPC를 치는 것보다 훨씬 편합니다.

cd mcp-server
npx @modelcontextprotocol/inspector node server.mjs --stdio

실행하면 터미널에 이렇게 뜹니다:

⚙️ Proxy server listening on localhost:6277
🔑 Session token: <토큰>

🚀 MCP Inspector is up and running at:
   http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=<토큰>

이 URL을 브라우저로 열면(토큰이 쿼리스트링에 포함돼 있어 바로 인증됨):

  1. Transport Type: STDIO, Command: node, Arguments: server.mjs --stdio가 이미 채워져 있음 (npx 실행할 때 넘긴 값 그대로 반영된 것)
  2. Connect 클릭
  3. 상단 Tools 탭 → scan_repo, scan_live_cluster 목록 확인
  4. scan_repo 선택 → repoRoot에 스캔할 레포의 절대경로 입력 → Run Tool
  5. 아래에 실제 스캔 결과(markdown)가 그대로 출력됨

중간에 ECONNREFUSED ... /.well-known/oauth-protected-resource 류 에러 로그가 찍혀도 무시해도 됩니다 — Inspector UI가 기본값으로 다른 포트(원격 SSE 서버용 기본 URL)를 한 번 찔러보고 실패하는 것뿐이고, 우리가 쓰는 stdio 연결과는 무관합니다.

HTTP 모드(node server.mjs, 세션 기반 Streamable HTTP)를 Inspector로 붙이고 싶으면 Transport Type을 Streamable HTTP로 바꾸고 URL에 http://localhost:3000/mcp를 넣으면 됩니다.

원격 배포 후 클라이언트 연결

서버를 아무 Node 호스트(EC2, 컨테이너 등)에 올리고 포트를 열어둔 다음, 클라이언트 설정에 URL만 등록하면 됩니다.

{
  "mcpServers": {
    "eks-maturity-advisor": {
      "url": "https://<배포한-호스트>/mcp",
      "headers": { "x-api-key": "<MCP_API_KEY와 동일한 값>" }
    }
  }
}

보안

  • MCP_API_KEY 환경변수를 설정하지 않으면 URL을 아는 누구나 scan_live_cluster로 실제 AWS/kubectl 명령을 실행시킬 수 있습니다. 배포 전에 반드시 설정하세요.
    MCP_API_KEY=<임의의-긴-문자열> node server.mjs
    
  • scan_live_cluster는 코드상으로는 read-only(kubectl get, aws describe/list/get)만 실행하도록 만들어져 있지만, 서버를 실행하는 자격증명(AWS 프로필/kubeconfig) 자체의 권한 범위는 별개로 최소화해두는 게 안전합니다.

참고 자료

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选