Skip to main content
Glama
RinardNick

MCP Terminal Server

by RinardNick

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 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

Install Server
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