MCP 코드 분석
AI 지원 코드 이해 및 변환을 위해 모델 컨텍스트 프로토콜(MCP)을 활용하는 강력한 코드베이스 분석 툴킷입니다.
특징
코드 분석 : 추상 구문 트리를 사용하여 코드베이스를 구문 분석하고 분석합니다.
컨텍스트 생성 : AI 모델을 위한 풍부한 컨텍스트 정보 생성
도구 통합 : 원활한 AI 도구 통합을 위한 MCP SDK 기반
확장 가능한 아키텍처 : 사용자 정의 분석기를 위한 플러그인 기반 시스템
Related MCP server: MCP Codebase Insight
요구 사항
노드.js 18+
NPM 9+
Redis(선택 사항, 프로덕션 환경에만 필요)
설치
지엑스피1
Redis 구성(선택 사항)
Redis는 운영 환경에서 세션 저장소로 사용됩니다. 개발 및 테스트 환경에서 Redis를 사용할 수 없는 경우 시스템은 자동으로 메모리 내 세션 저장소로 폴백합니다.
참고 : Redis 연결에는 Redis가 실행 중일 때에도 작업이 실패할 수 있는 알려진 문제가 있습니다. 자세한 내용은
plan.md의 "기술 부채" 섹션을 참조하세요. 현재로서는./use-memory-session.sh스크립트를 사용하여 메모리 세션 저장소를 사용하여 서버를 실행할 수 있습니다. 자세한 내용은 Redis 문제 해결 가이드를 참조하세요.
Redis를 설치하려면:
# Ubuntu/Debian
sudo apt-get install redis-server
# macOS
brew install redis
# Windows (using WSL is recommended)
# For native Windows, download from https://redis.io/download기본적으로 애플리케이션은 redis://localhost:6379 에서 Redis에 연결을 시도합니다. 환경 변수를 사용하여 Redis 연결을 구성할 수 있습니다.
# Set custom Redis URL
export REDIS_URL=redis://custom-host:6379
# Force memory session store even if Redis is available
export FORCE_MEMORY_SESSION=true개발
# Run in development mode
npm run dev
# Run tests
npm test
# Run linting
npm run lint용법
# Start the MCP server
npm start
# Run CLI tool
node ./tools/mcp-stdio-client.js --task "Analyze dependencies" --files "src/*.ts"선적 서류 비치
특허
MIT
CodeAnalysis MCP 서버
확장 가능한 아키텍처를 통해 도구와 통찰력을 제공하는 고급 코드 분석을 위한 포괄적인 MCP(Model Context Protocol) 서버입니다.
🚀 특징
기본 코드 분석 : 구문 및 구조 분석
코드 메트릭 : 복잡성, 줄 수 및 코드 품질 메트릭
종속성 분석 : 패키지 및 가져오기 관계 시각화
지식 그래프 : 코드 관계 시각화 및 쿼리
메모리 시스템 : 코드베이스에 대한 통찰력을 저장하고 검색합니다.
시각화 : 다양한 형식(Mermaid, DOT, ASCII)으로 다이어그램 생성
사회기술 분석 : 팀과 코드 관계 이해
다중 저장소 분석 : 교차 저장소 관계 분석
진화 계획 : 코드 개선 권장 사항
실시간 감시 : 실시간으로 코드 변경 사항을 모니터링합니다.
IDE 통합 : 편집기 통합 도구
개발자 도구 : 향상된 AI 지원 개발 워크플로 지원
📋 필수 조건
노드.js 18+
npm 또는 yarn
Redis(개발에는 선택 사항이지만 프로덕션에는 권장됨)
🛠️ 설치
# Clone the repository
git clone https://github.com/your-username/codeanalysis-mcp.git
cd codeanalysis-mcp
# Install dependencies
pnpm install
# Build the project
pnpm build🖥️ 사용법
CodeAnalysis MCP 서버는 두 가지 방법으로 사용할 수 있습니다.
1. MCP 서버로서
# Start the MCP server
pnpm start이렇게 하면 Claude Desktop, Cursor 또는 기타 MCP 클라이언트가 연결할 수 있는 MCP 서버가 시작됩니다.
2. CLI 사용
이 프로젝트에는 직접적인 상호작용을 위한 포괄적인 CLI가 포함되어 있습니다.
# Get help
pnpm run cli --help
# Analyze a repository or directory
pnpm run cli analyze repo ./src
# Check code quality
pnpm run cli quality analyze ./src3. AI 지원 개발을 위한 개발자 도구 사용
이 프로젝트에는 AI 지원 개발을 향상시키도록 설계된 특수 도구가 포함되어 있습니다.
# Generate code context for AI assistants
node tools/ai-dev-helper.js --task="Implement new feature" --search="related functionality"
# Run example client
node examples/dev-tools-client.js자세한 내용은 개발자 도구 가이드를 참조하세요.
📊 예제 명령
기본 분석
# Analyze a local directory
pnpm run cli analyze repo ./src
# Analyze a specific file
pnpm run cli analyze file ./src/server.ts코드 메트릭
# Get code metrics with function details
pnpm run cli metrics analyze ./src --functions
# Save metrics to a file
pnpm run cli metrics analyze ./src -o metrics-report.json종속성 분석
# Analyze dependencies in Mermaid format
pnpm run cli dependencies analyze ./src -f mermaid -o deps.mmd
# Visualize dependencies
pnpm run cli visualize dependencies -p ./src --format mermaid코드 품질
# Run quality analysis
pnpm run cli quality analyze ./src
# Generate HTML report
pnpm run cli quality analyze ./src --html -o quality-report.html지식 그래프
# Build knowledge graph
pnpm run cli knowledge build ./src
# Query the knowledge graph
pnpm run cli knowledge query ./src "type:function AND complexity>5"
# Export as diagram
pnpm run cli knowledge export ./src -f mermaid통찰력과 기억
# Store an insight
pnpm run cli insights store -r ./src -t code-pattern -c "Refactoring opportunity"
# Retrieve insights
pnpm run cli insights retrieve -r ./src개발자 도구
# Prepare context for AI interactions
node tools/ai-dev-helper.js --task="Fix authentication bug" --files="src/auth/*.ts" --search="login"
# Use with AI prompts
# Copy content from the generated ai-context.json file into your AI assistant prompt
# or use the template in templates/ai-prompt-template.md🏗️ 건축
이 프로젝트는 다음 구성 요소를 갖춘 MCP 아키텍처를 따릅니다.
MCP 서버 : MCP 프로토콜을 사용한 핵심 서버 구현
분석 기능 : 모듈식 코드 분석 기능
CLI : 직접 상호 작용을 위한 명령줄 인터페이스
전송 계층 : 통신 메커니즘(기본적으로 stdio)
🔌 MCP 클라이언트와의 통합
이 서버는 다음을 포함한 모든 MCP 호환 클라이언트와 호환됩니다.
클로드 데스크톱 앱
커서 편집기
계속하다
기타 MCP 호환 도구
📝 경로 지정
명령은 다양한 형식의 경로를 허용합니다.
로컬 디렉토리:
./src또는/absolute/path/to/dir로컬 파일:
./src/file.ts또는/path/to/file.ts저장소 URL:
https://github.com/username/repo
🤝 기여하기
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.
📄 라이센스
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
MCP SDK 상태 관리 아키텍처
이 프로젝트는 MCP(Model Context Protocol) SDK에 대한 상태 저장 도구를 구현하여 호출 간에 컨텍스트를 유지하는 도구를 구축하기 위한 프레임워크를 제공합니다.
아키텍처 개요
상태 관리 아키텍처는 여러 모듈식 구성 요소로 구성됩니다.
src/state/
├── helpers/
│ └── statefulTool.ts # Main entry point for stateful tool creation
├── machines/
│ └── toolMachine.ts # XState machine for tool execution flow
├── services/
│ ├── toolService.ts # Core execution service for tools
│ ├── redisToolExecutionService.ts # Distributed execution service
│ ├── redisSessionStore.ts # Redis-based session persistence
│ └── types.ts # Shared type definitions핵심 구성 요소
상태 저장 도구 도우미( statefulTool.ts )
MCP SDK와의 중앙 통합 지점으로 다음을 제공합니다.
세션 관리를 통한 도구 등록
MCP 호환 응답 형식
메모리 내 세션 관리
세션 접근 및 조작을 위한 도우미 기능
// Creating a stateful tool with state persistence
createStatefulTool(server, "my-tool", schema, handler);
// With description
createStatefulTool(server, "my-tool", "My stateful tool", schema, handler);도구 기계( toolMachine.ts )
도구의 실행 흐름을 정의하는 XState 기반 상태 머신:
상태 전환(유휴, 도구 선택, 매개변수 설정, 실행 중 등)
매개변수, 결과 및 기록에 대한 컨텍스트 관리
오류 처리 및 복구 경로
이 구성 요소는 세션 관리를 statefulTool 구현에 위임합니다.
도구 서비스( toolService.ts )
도구 상태 전환을 조정하는 핵심 실행 서비스:
도구 선택, 매개변수 검증 및 실행을 관리합니다.
실행 내역 추적
실행 결과 및 오류를 처리합니다.
유형( types.ts )
상태 관리 시스템 전반에서 일관성을 보장하는 공유 유형 정의:
SessionData: 도구 상태를 저장하기 위한 구조
SessionStore: 세션 저장 구현을 위한 인터페이스
ExecutionResult: 도구에 대한 표준 응답 형식
MCP SDK와의 통합
이 아키텍처는 다음을 통해 MCP SDK와 통합됩니다.
상태 관리를 통한 도구 등록 패턴 확장
MCP 응답 형식과의 호환성 유지
상태 저장 작업에 대한 세션 및 컨텍스트 추적 제공
사용 예
import { createServer } from "@modelcontextprotocol/sdk";
import { createStatefulTool } from "./state/helpers/statefulTool";
import { z } from "zod";
const server = createServer();
// Register a stateful tool
createStatefulTool(
server,
"counter",
"A tool that maintains a count between invocations",
{
action: z.enum(["increment", "decrement", "reset"]),
},
async (params) => {
// Get session ID from params (or a new one will be created)
const sessionId = params.sessionId;
// Process the action
let count = 0;
// Tool logic with state manipulation...
return { count };
}
);
server.listen(3000);분산 상태 관리
분산 환경의 경우 Redis 기반 구현은 다음을 제공합니다.
서버 재시작 시 세션 지속성
동시 액세스를 위한 분산 잠금
TTL 기반 세션 정리
네트워크/연결 문제에 대한 오류 처리
테스트
구성 요소에는 다음을 검증하기 위한 포괄적인 테스트 모음이 포함되어 있습니다.
도구 상태 전환
세션 관리
오류 처리 및 복구
응답 형식
분산 작업(Redis 사용)
AI 개발 도구
CodeAnalysis MCP 서버는 AI 지원 개발을 위한 전문 도구를 제공합니다. 이러한 도구는 코드 컨텍스트를 수집하여 AI 시스템에 제공하여 더욱 효과적인 지원을 제공할 수 있도록 지원합니다.
클라이언트 스크립트
저장소에는 tools/ 디렉토리에 여러 클라이언트 스크립트가 포함되어 있습니다.
HTTP 클라이언트 (
tools/http-client.js): HTTP 전송을 통해 MCP 서버에 연결합니다(기본값).node tools/http-client.js --task "Your task description" --files "src/features/*.ts" --search "session"Raw Client (
tools/mcp-raw-client.js): 서버 정보만 캡처하는 더 간단한 클라이언트입니다.node tools/mcp-raw-client.js --task "Your task description"Simple Client (
tools/simple-client.js): stdio를 통해 서버와 통신합니다.node tools/simple-client.js --task "Your task description" --files "src/features/*.ts"
모든 클라이언트 스크립트는 프로젝트 루트에 ai-context.json 파일을 생성합니다. 이 파일에는 코드베이스에 대한 귀중한 컨텍스트가 포함되어 있으며, 이를 AI 어시스턴트와 공유하여 더욱 정확한 응답을 제공할 수 있습니다.
프롬프트 템플릿
AI 어시스턴트용 프롬프트 템플릿은 templates/ai-prompt-template.md 에서 제공됩니다. 이 템플릿은 MCP 도구의 적절한 맥락을 활용하여 AI 어시스턴트에 대한 요청을 구성하는 데 도움이 됩니다.
서버 전송 모드
MCP 서버는 두 가지 전송 모드를 지원합니다.
HTTP 전송 (기본값): 기본적으로 3000번 포트에서 실행됩니다. 클라이언트-서버 아키텍처에 가장 적합합니다.
Stdio Transport : 프로세스 직접 통신을 위한 기능입니다.
STDIO_TRANSPORT=true환경 변수를 활성화하세요.
세션 스토리지 아키텍처
MCP 코드 분석은 이제 자동 백엔드 감지 기능을 갖춘 모듈식 세션 저장소 아키텍처를 제공합니다.
유연한 스토리지 : Redis와 인메모리 스토리지 간 자동 전환
개발 친화적 : 개발 중 Redis 없이 실행
프로덕션 준비 완료 : 프로덕션 환경에서 지속성을 위해 Redis를 사용하세요
자동 폴백 : Redis를 사용할 수 없을 때 메모리 저장소로 우아하게 폴백합니다.
자세한 내용은 세션 저장소 아키텍처 문서를 참조하세요.
요구 사항
노드.js 18+
npm 또는 yarn
Redis(개발에는 선택 사항이지만 프로덕션에는 권장됨)