Skip to main content
Glama

mcp-shell

MIT License
30
  • Linux
  • Apple
Makefileβ€’4.02 kB
.PHONY: clean build install uninstall run run-secure fmt test lint help dev-tools docker-build docker-run docker-run-secure docker-shell release version BINARY_NAME=mcp-shell BUILD_DIR=bin IMAGE_NAME=mcp-shell VERSION?=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") COMMIT_HASH?=$(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") BUILD_TIME?=$(shell date -u '+%Y-%m-%d_%H:%M:%S') help: @echo "mcp-shell development commands:" @echo "Version: $(VERSION)" @echo @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " %-15s %s\n", $$1, $$2}' version: @echo "Version: $(VERSION)" @echo "Commit: $(COMMIT_HASH)" @echo "Build Time: $(BUILD_TIME)" build: deps @mkdir -p $(BUILD_DIR) CGO_ENABLED=0 go build \ -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT_HASH) -X main.buildTime=$(BUILD_TIME) -s -w -extldflags '-static'" \ -a -installsuffix cgo \ -o $(BUILD_DIR)/$(BINARY_NAME) . @echo "Built $(BUILD_DIR)/$(BINARY_NAME) ($(VERSION))" clean: rm -rf $(BUILD_DIR) go clean docker rmi $(IMAGE_NAME):$(VERSION) 2>/dev/null || true docker rmi $(IMAGE_NAME):latest 2>/dev/null || true @echo "Cleaned build artifacts and Docker images" deps: go mod tidy @echo "Dependencies installed" install: build install -c $(BUILD_DIR)/$(BINARY_NAME) /usr/local/bin/$(BINARY_NAME) @echo "Installed $(BINARY_NAME) to /usr/local/bin/" uninstall: rm -f /usr/local/bin/$(BINARY_NAME) @echo "Uninstalled $(BINARY_NAME) from /usr/local/bin/" run: CGO_ENABLED=0 go run -ldflags "-X main.version=$(VERSION) -s -w" . run-secure: @echo 'security:' > .temp-config.yaml @echo ' enabled: true' >> .temp-config.yaml @echo ' allowed_commands: [ls, cat, grep, find, echo, pwd]' >> .temp-config.yaml @echo ' blocked_commands: [rm -rf, sudo, chmod 777]' >> .temp-config.yaml @echo ' blocked_patterns: ["rm\\s+.*-rf.*", "sudo\\s+.*"]' >> .temp-config.yaml @echo ' max_execution_time: 30s' >> .temp-config.yaml @echo ' working_directory: /tmp/mcp-workspace' >> .temp-config.yaml @echo ' max_output_size: 1048576' >> .temp-config.yaml @echo ' audit_log: true' >> .temp-config.yaml CGO_ENABLED=0 MCP_SHELL_SEC_CONFIG_FILE=.temp-config.yaml go run -ldflags "-X main.version=$(VERSION) -s -w" . @rm -f .temp-config.yaml fmt: gofmt -w . @command -v goimports >/dev/null 2>&1 && goimports -w . || echo "goimports not found, install with: make dev-tools" @command -v golines >/dev/null 2>&1 && golines -w . || echo "golines not found, install with: make dev-tools" @echo "Code formatted" test: go test -v ./... lint: @command -v golangci-lint >/dev/null 2>&1 && golangci-lint run || echo "golangci-lint not found, install from https://golangci-lint.run/" dev-tools: go install golang.org/x/tools/cmd/goimports@latest go install github.com/segmentio/golines@latest @command -v jq >/dev/null 2>&1 || (echo "Installing jq..." && \ case "$$(uname -s)" in \ Linux*) sudo apt-get update && sudo apt-get install -y jq || sudo yum install -y jq ;; \ Darwin*) brew install jq ;; \ *) echo "Please install jq manually" ;; \ esac) @echo "Development tools installed" docker-build: docker build \ --build-arg VERSION=$(VERSION) \ --build-arg COMMIT_HASH=$(COMMIT_HASH) \ --build-arg BUILD_TIME=$(BUILD_TIME) \ -t $(IMAGE_NAME):$(VERSION) \ -t $(IMAGE_NAME):latest . @echo "Docker image built: $(IMAGE_NAME):$(VERSION)" docker-run: docker run -it --rm \ -v /tmp/mcp-workspace:/tmp/mcp-workspace \ $(IMAGE_NAME):$(VERSION) docker-run-secure: docker run -it --rm \ -v /tmp/mcp-workspace:/tmp/mcp-workspace \ -e MCP_SHELL_LOG_LEVEL=info \ $(IMAGE_NAME):$(VERSION) docker-shell: docker run -it --rm \ -v /tmp/mcp-workspace:/tmp/mcp-workspace \ --entrypoint /bin/bash \ $(IMAGE_NAME):$(VERSION) release: clean build docker-build @echo "Release build complete:" @echo " Binary: $(BUILD_DIR)/$(BINARY_NAME) ($(VERSION))" @echo " Docker: $(IMAGE_NAME):$(VERSION)"

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/sonirico/mcp-shell'

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