Skip to main content
Glama

MCP 터미널 서버

모델 컨텍스트 프로토콜(MCP)을 구현하는 보안 터미널 실행 서버입니다. 이 서버는 보안 기능 및 리소스 제한을 갖춘 제어된 명령 실행 기능을 제공합니다.

특징

  • 명령 실행 : 출력 캡처 및 오류 처리를 통해 셸 명령을 실행합니다.

  • 보안 제어 : 허용된 명령을 제한하고 명령 주입을 방지합니다.

  • 리소스 제어 :

    • 명령 시간 초과

    • 최대 출력 크기 제한

  • MCP 프로토콜 지원 :

    • 표준 MCP 메시지 형식

    • 역량 광고

    • 스트리밍 출력 지원

Related MCP server: Terminal Controller for MCP

개발

로컬 설정

지엑스피1

PyPI에 게시

# Build the package uv pip install build python -m build # Upload to PyPI uv pip install twine python -m twine upload dist/*

MCP Inspector로 테스트

MCP Inspector 도구를 사용하면 서버 구현을 테스트할 수 있습니다.

# Install inspector npm install -g @modelcontextprotocol/inspector # Test server npx @modelcontextprotocol/inspector python3 src/mcp_terminal/server.py --allowed-commands "python,pip,git,ls,cd"

테스트 실행

# Run all tests pytest tests/ # Run specific test file pytest tests/test_terminal.py # Run with coverage pytest --cov=mcp_terminal tests/

Claude Desktop과 함께 사용

패키지가 PyPI에 게시되면:

  1. UV를 설치하세요 (아직 설치되지 않았다면):

    pip install uv
  2. UV를 사용하여 패키지 설치 :

    uv pip install mcp-terminal
  3. Claude Desktop 구성 : Claude Desktop 구성 파일을 편집합니다(일반적으로 macOS에서는 ~/Library/Application Support/Claude/claude_desktop_config.json 에 있음):

    { "mcpServers": { "terminal": { "command": "uv", "args": [ "pip", "run", "mcp-terminal", "--allowed-commands", "python,pip,git,ls,cd", "--timeout-ms", "30000", "--max-output-size", "1048576" ] } } }

프로토콜 구현

서버는 다음 기능을 갖춘 MCP(모델 컨텍스트 프로토콜)를 구현합니다.

기능 광고

{ "protocol": "1.0.0", "name": "terminal", "version": "1.1.0", "capabilities": { "execute": { "description": "Execute a terminal command", "parameters": { "command": { "type": "string", "description": "The command to execute" } }, "returns": { "type": "object", "properties": { "exitCode": { "type": "number" }, "stdout": { "type": "string" }, "stderr": { "type": "string" }, "startTime": { "type": "string" }, "endTime": { "type": "string" } } } } } }

메시지 형식

요구 :

{ "type": "execute", "data": { "command": "echo 'hello world'" } }

응답 :

{ "type": "result", "data": { "command": "echo 'hello world'", "exitCode": 0, "stdout": "hello world\n", "stderr": "", "startTime": "2024-01-20T12:34:56.789Z", "endTime": "2024-01-20T12:34:56.790Z" } }

오류 :

{ "type": "error", "data": { "message": "command not allowed" } }

보안 고려 사항

  1. 명령 검증 :

    • 허용된 명령만 실행할 수 있습니다.

    • Shell 운영자는 차단되었습니다.

    • 명령 주입 시도가 방지됩니다.

  2. 자원 보호 :

    • 명령 시간 초과로 인해 중단이 방지됩니다.

    • 출력 크기 제한으로 메모리 고갈 방지

    • 모든 실패 사례에 대한 오류 처리

  3. 모범 사례 :

    • 프로덕션에서는 항상 allowed-commands 설정하세요.

    • 보수적인 시간 제한 및 크기 제한을 사용하세요

    • 명령 실행 로그 모니터링

기여하다

  1. 저장소를 포크하세요

  2. 기능 브랜치를 생성합니다( git checkout -b feature/amazing-feature )

  3. 변경 사항을 커밋하세요( git commit -m 'Add some amazing feature' )

  4. 브랜치에 푸시( git push origin feature/amazing-feature )

  5. 풀 리퀘스트 열기

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

One-click Deploy
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

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/RinardNick/mcp-terminal'

If you have feedback or need assistance with the MCP directory API, please join our Discord server