ci: add Dockerfile and Smithery config (#21)
This pull request introduces the following updates: - **Dockerfile**: Introduces a Dockerfile to package the MCP for deployment across various environments. - **Smithery Configuration**: Adds a Smithery YAML file, which specifies how to start the MCP and the configuration options it supports. It allows you to [deploy](https://smithery.ai/docs/deployments) your MCP to [Smithery](https://smithery.ai?utm_campaign=pr), serving it over SSE so end-users do not need to install additional dependencies. To deploy, merge this PR, then visit your [server page](https://smithery.ai/server/mcp-proxy?utm_campaign=pr&modal=claim) and click "Deploy" under the deployments page. Please review these updates to verify their accuracy for your server and feel free to customize it to your needs. Let me know if you have any questions. 🙂 --------- Co-authored-by: Sergey Parfenyuk <myseverality@gmail.com>
This commit is contained in:
33
Dockerfile
Normal file
33
Dockerfile
Normal file
@@ -0,0 +1,33 @@
|
||||
# Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile
|
||||
# Use a Python image with uv pre-installed
|
||||
FROM ghcr.io/astral-sh/uv:python3.12-alpine AS uv
|
||||
|
||||
# Install the project into /app
|
||||
WORKDIR /app
|
||||
|
||||
# Enable bytecode compilation
|
||||
ENV UV_COMPILE_BYTECODE=1
|
||||
|
||||
# Copy from the cache instead of linking since it's a mounted volume
|
||||
ENV UV_LINK_MODE=copy
|
||||
|
||||
# Install the project's dependencies using the lockfile and settings
|
||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||
uv sync --frozen --no-install-project --no-dev --no-editable
|
||||
|
||||
# Then, add the rest of the project source code and install it
|
||||
# Installing separately from its dependencies allows optimal layer caching
|
||||
ADD . /app
|
||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
uv sync --frozen --no-dev --no-editable
|
||||
|
||||
FROM python:3.12-alpine
|
||||
|
||||
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"
|
||||
|
||||
ENTRYPOINT ["mcp-proxy"]
|
||||
30
smithery.yaml
Normal file
30
smithery.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
# 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:
|
||||
- commandOrUrl
|
||||
properties:
|
||||
commandOrUrl:
|
||||
type: string
|
||||
description: The MCP server SSE endpoint URL or the command to start the local
|
||||
stdio server.
|
||||
apiAccessToken:
|
||||
type: string
|
||||
description: Optional access token for Authorization header.
|
||||
ssePort:
|
||||
type: number
|
||||
description: Optional port for SSE server. Defaults to a random port.
|
||||
sseHost:
|
||||
type: string
|
||||
description: Optional host for SSE server. Defaults to 127.0.0.1.
|
||||
env:
|
||||
type: object
|
||||
description: Additional environment variables for the stdio server.
|
||||
commandFunction:
|
||||
# A function that produces the CLI command to start the MCP on stdio.
|
||||
|-
|
||||
(config) => { let command = ['mcp-proxy', config.commandOrUrl]; if (config.ssePort) command.push('--sse-port=' + config.ssePort); if (config.sseHost) command.push('--sse-host=' + config.sseHost); return { command: 'mcp-proxy', args: command, env: config.apiAccessToken ? { API_ACCESS_TOKEN: config.apiAccessToken, ...config.env } : config.env }; }
|
||||
Reference in New Issue
Block a user