기판 MCP 서버
Rust로 작성된 Substrate 블록체인용 모델 컨텍스트 프로토콜 (MCP) 서버입니다. 이 프로젝트는 MCP 프로토콜을 통해 동적 Substrate 블록체인 작업(잔액, 블록, 팔레트, 스토리지, 이벤트 등)을 제공하며, 환경 변수를 통해 완벽하게 구성할 수 있습니다.
하위 상자와 인터페이스하도록 설계되었습니다.
✨ 특징
계정 잔액 및 저장 공간을 동적으로 쿼리합니다.
팔레트와 해당 항목 목록
이벤트 및 외부 이벤트 가져오기 및 필터링
동적으로 서명된 거래를 제출하고 감시합니다.
시스템 접근 및 정보 차단
Substrate 노드에 대한 사용자 정의 RPC 호출
Related MCP server: Official Substack MCP Server
🚀 잠재적 사용 사례
AI 기반 블록체인 운영
LLM(Cursor나 Claude 등)과 통합하여 사용자가 자연어로 질문할 수 있도록 합니다(예: "앨리스가 마지막으로 전송한 내용은 무엇이었나요?"). 질문은 MCP 도구 호출로 변환됩니다.
MCP 서버를 백엔드로 사용하여 질문에 답하고, 잔액을 가져오고, 체인 내 활동을 설명할 수 있는 챗봇을 구축하세요.
MCP 서버를 사용하면 잔액 변화나 거래 상태와 같은 체인 내 활동에 대한 실시간 업데이트를 VSCode, Cursor, Claude Code 등의 개발 도구에 제공할 수 있습니다.
사용자 정의 대시보드 및 모니터링
Substrate 블록체인을 위한 맞춤형 대시보드 및 모니터링 시스템을 만드세요
블록체인 운영에 대한 실시간 데이터와 분석을 표시합니다.
중요 이벤트에 대한 알림 및 경고 설정
AI 에이전트를 사용하여 이벤트와 외부 요인을 실시간으로 분석하여 의심스러운 활동을 감지합니다.
🛠️ 요구 사항
녹
Substrate 노드 엔드포인트(WebSocket)에 대한 액세스
유효한 서명 키 쌍(16진수)
대상 체인에 대한 런타임 메타데이터 파일(이름 지정 및 배치는 아래 참조)
📦 설치
저장소를 복제하고 빌드합니다.
지엑스피1
⚙️ 구성
프로젝트 루트에 다음 변수를 사용하여 .env 파일을 만듭니다.
서명 키 쌍 생성
subkey를 사용하여 키 쌍을 생성하고 16진수 형태의 비밀 시드를 얻을 수 있습니다.
SIGNING_KEYPAIR_HEX 에 secretSeed 필드를 사용합니다(0x 접두사가 있으면 제거).
런타임 메타데이터 획득 및 배치
노드에서 런타임 메타데이터를 내보내고 artifacts/metadata.scale 에 저장합니다.
중요: 빌드하기 전에 파일 이름을 metadata.scale 로 지정하고 artifacts/ 디렉터리에 저장해야 합니다. 이 파일이 없거나 이름이 잘못 지정되면 빌드가 실패합니다.
▶️ 사용법
MCP 서버를 시작하려면:
서버가 시작되어 stdio를 통해 MCP 요청을 수신합니다.
🖇️ 커서와 통합
이 MCP 서버를 Cursor 와 함께 사용하려면 Cursor MCP 구성에 추가해야 합니다. 이렇게 하면 Cursor가 Substrate MCP 서버를 검색하고 상호 작용할 수 있습니다.
릴리스 모드로 서버를 빌드하세요.
cargo build --release빌드된 바이너리(일반적으로
target/release/substrate-mcp-rs)의 경로를 찾습니다.프로젝트(또는 전역)
.cursor/mcp.json파일에 서버 항목을 추가하세요. 예:{ "mcpServers": { "substrate-mcp-rs": { "command": "$PROJECT_ROOT_ABSOLUTE_PATH/target/release/substrate-mcp-rs", "args": [] } } }빌드한 바이너리의 절대 경로와 다르다면
command경로를 해당 경로로 바꾸세요.
Cursor를 다시 시작하세요. 이제 Substrate MCP 서버를 감지하고 연결하여 Cursor 도구를 사용할 수 있게 됩니다.
자세한 내용은 커서 설명서 나 모델 컨텍스트 프로토콜 소개를 참조하세요.
🧰 사용 가능한 도구
서버는 다음을 포함하여 Substrate 블록체인과 상호 작용하기 위한 도구 세트를 제공합니다.
query_balance: 계정 잔액을 가져옵니다.list_pallets: 런타임에 모든 팔레트를 나열합니다.list_pallet_entries: 팔레트에 대한 모든 저장 항목을 나열합니다.dynamic_runtime_call: 런타임 API 호출을 실행합니다.send_dynamic_signed_transaction: 트랜잭션을 구성하고 서명하고 전송합니다.query_storage: 팔레트 및 항목별 저장소 쿼리get_latest_events: 최신 블록의 모든 이벤트를 가져옵니다.find_events: 팔레트 및 변형별로 특정 이벤트 찾기get_latest_block: 최신 블록에 대한 세부 정보를 가져옵니다.get_block_by_hash: 해시로 블록 세부 정보 가져오기find_extrinsics: 최신 블록에서 외부 항목을 찾습니다.get_system_info: RPC를 통해 시스템 정보를 가져옵니다.custom_rpc: 사용자 정의 RPC 호출을 만듭니다.
자세한 내용과 매개변수는 src/tooling/substrate.rs 참조하세요.
🗂️ 프로젝트 구조
src/main.rs: 진입점, 로깅 설정 및 MCP 서버 시작src/tooling/: 기판 도구 구현이 포함되어 있습니다.artifacts/: 런타임 메타데이터 파일을metadata.scale로 여기에 배치합니다(빌드 전에 필요함)
📈 다음 단계 및 목표
[ ] E2E 테스트 추가
[ ] 단위 테스트 추가
[ ] 도구 추가
🤝 기여하기
기여를 환영합니다! 이슈를 개설하거나 풀 리퀘스트를 보내주세요. 더 큰 변경 사항은 먼저 이슈를 개설하여 제안에 대해 논의해 주세요.
Rust 모범 사례를 따르고 코드가 문서화되도록 하세요.
제출하기 전에
cargo fmt및cargo clippy실행하세요.가능한 경우 테스트를 추가하세요
📄 라이센스
MIT