From 2e7729367ff0bab41a67f81d7cb0afba5d8d90a3 Mon Sep 17 00:00:00 2001 From: Henry Mao <1828968+calclavia@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:02:07 +0800 Subject: [PATCH 1/3] Add Dockerfile --- Dockerfile | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..20c2340 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +# Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile +# Start from the official Python image with uv pre-installed +FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS uv + +# Set the working directory +WORKDIR /app + +# Copy the project descriptor files +COPY pyproject.toml /app +COPY uv.lock /app + +# Sync dependencies and set up the virtual environment +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen --no-install-project --no-dev --no-editable + +# Add the project source code +ADD . /app + +# Install the project +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen --no-dev --no-editable + +# Create the final runtime image +FROM python:3.12-slim-bookworm + +# Set the working directory +WORKDIR /app + +# Copy the installed application from the builder stage +COPY --from=uv /root/.local /root/.local +COPY --from=uv --chown=app:app /app/.venv /app/.venv + +# Place executables in the environment at the front of the path +ENV PATH="/app/.venv/bin:$PATH" + +# Define the entrypoint for the Docker container +ENTRYPOINT ["uv", "run", "brev-mcp"] \ No newline at end of file From 6d0601d3a012df4cab4f956041481b7bd1b02d21 Mon Sep 17 00:00:00 2001 From: Henry Mao <1828968+calclavia@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:02:08 +0800 Subject: [PATCH 2/3] Add Smithery configuration --- smithery.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 smithery.yaml diff --git a/smithery.yaml b/smithery.yaml new file mode 100644 index 0000000..87647fe --- /dev/null +++ b/smithery.yaml @@ -0,0 +1,17 @@ +# Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml + +startCommand: + type: stdio + configSchema: + # JSON Schema defining the configuration options for the MCP. + type: object + required: + - repoPath + properties: + repoPath: + type: string + description: The local path to the cloned brev-mcp repository. + commandFunction: + # A function that produces the CLI command to start the MCP on stdio. + |- + config => ({command: 'uv', args: ['--directory', config.repoPath, 'run', 'brev-mcp']}) \ No newline at end of file From 7d21851be0d428de682a2930e83e3f3c5ad98c90 Mon Sep 17 00:00:00 2001 From: Henry Mao <1828968+calclavia@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:02:08 +0800 Subject: [PATCH 3/3] Update README --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 8841b6c..5881264 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Brev MCP server +[![smithery badge](https://smithery.ai/badge/@brevdev/brev-mcp)](https://smithery.ai/server/@brevdev/brev-mcp) This is a MCP server implementation for Brev. @@ -47,6 +48,14 @@ Add the following to your `claude_desktop_config.json`: ``` +### Installing via Smithery + +To install Brev MCP server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@brevdev/brev-mcp): + +```bash +npx -y @smithery/cli install @brevdev/brev-mcp --client claude +``` + ## Development ### Building and Publishing