Add Dockerfiles for the 17 sample MCP servers

* add Dockerfiles and update README.md definitions
This commit is contained in:
Jim Clark
2024-12-10 11:56:46 -08:00
parent ea35591902
commit 368e3b23ca
46 changed files with 913 additions and 43 deletions

22
package-lock.json generated
View File

@@ -5015,7 +5015,7 @@
"mcp-server-aws-kb-retrieval": "dist/index.js"
},
"devDependencies": {
"@types/node": "^20.10.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@@ -5040,7 +5040,7 @@
"mcp-server-brave-search": "dist/index.js"
},
"devDependencies": {
"@types/node": "^20.10.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@@ -5080,7 +5080,7 @@
},
"devDependencies": {
"@types/jsdom": "^21.1.6",
"@types/node": "^20.10.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@@ -5099,7 +5099,7 @@
"mcp-server-everart": "dist/index.js"
},
"devDependencies": {
"@types/node": "^20.11.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.3.3"
}
@@ -5201,7 +5201,7 @@
"devDependencies": {
"@types/diff": "^5.0.9",
"@types/minimatch": "^5.1.2",
"@types/node": "^20.11.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.3.3"
}
@@ -5298,7 +5298,7 @@
"mcp-server-gdrive": "dist/index.js"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@@ -5328,7 +5328,7 @@
"license": "MIT",
"dependencies": {
"@modelcontextprotocol/sdk": "1.0.1",
"@types/node": "^20.11.0",
"@types/node": "^22",
"@types/node-fetch": "^2.6.12",
"node-fetch": "^3.3.2",
"zod": "^3.22.4",
@@ -5501,7 +5501,7 @@
"mcp-server-memory": "dist/index.js"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@@ -5591,7 +5591,7 @@
"mcp-server-sequential-thinking": "dist/index.js"
},
"devDependencies": {
"@types/node": "^20.11.0",
"@types/node": "^22",
"@types/yargs": "^17.0.32",
"shx": "^0.3.4",
"typescript": "^5.3.3"
@@ -5617,7 +5617,7 @@
"mcp-server-slack": "dist/index.js"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@@ -5642,4 +5642,4 @@
}
}
}
}
}

View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
COPY src/aws-kb-retrieval-server /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -27,6 +27,24 @@ An MCP server implementation for retrieving information from the AWS Knowledge B
Add this to your `claude_desktop_config.json`:
#### Docker
```json
{
"mcpServers": {
"aws-kb-retrieval": {
"command": "docker",
"args": [ "run", "-i", "--rm", "-e", "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID", "-e", "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY", "-e", "AWS_REGION=$AWS_REGION", "ai/mcp-aws-kb-retrieval-server" ],
"env": {
"AWS_ACCESS_KEY_ID": "YOUR_ACCESS_KEY_HERE",
"AWS_SECRET_ACCESS_KEY": "YOUR_SECRET_ACCESS_KEY_HERE",
"AWS_REGION": "YOUR_AWS_REGION_HERE"
}
}
}
}
```
```json
{
"mcpServers": {
@@ -46,6 +64,14 @@ Add this to your `claude_desktop_config.json`:
}
```
## Building
Docker:
```sh
docker build -t ai/mcp-aws-kb-retrieval -f src/aws-kb-retrieval-server/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -23,8 +23,8 @@
"@aws-sdk/client-bedrock-agent-runtime": "^3.0.0"
},
"devDependencies": {
"@types/node": "^20.10.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
}
}

View File

@@ -0,0 +1,19 @@
FROM node:22.12-alpine as builder
# Must be entire project because `prepare` script is run during `npm install` and requires all files.
COPY src/brave-search /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -36,6 +36,31 @@ An MCP server implementation that integrates the Brave Search API, providing bot
### Usage with Claude Desktop
Add this to your `claude_desktop_config.json`:
### Docker
```json
{
"mcpServers": {
"brave-search": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"BRAVE_API_KEY=$BRAVE_API_KEY",
"ai/mcp-brave-search"
],
"env": {
"BRAVE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
```
### NPX
```json
{
"mcpServers": {
@@ -53,6 +78,15 @@ Add this to your `claude_desktop_config.json`:
}
```
## Build
Docker build:
```bash
docker build -t vonwig/brave-search:mcp -f src/brave-search/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -22,7 +22,7 @@
"@modelcontextprotocol/sdk": "1.0.1"
},
"devDependencies": {
"@types/node": "^20.10.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}

18
src/everart/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
COPY src/everart /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -10,6 +10,25 @@ export EVERART_API_KEY=your_key_here
## Config
Add to Claude Desktop config:
### Docker
```json
{
"mcpServers": {
"everart": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "EVERART_API_KEY=$EVERART_API_KEY", "ai/mcp-everart"],
"env": {
"EVERART_API_KEY": "your_key_here"
}
},
}
}
```
### NPX
```json
{
"mcpServers": {
@@ -71,3 +90,9 @@ Generation details:
You can also click the URL above to view the image again.
```
## Building w/ Docker
```sh
docker build -t ai/mcp-everart -f src/everart/Dockerfile .
```

View File

@@ -25,7 +25,7 @@
"open": "^9.1.0"
},
"devDependencies": {
"@types/node": "^20.11.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.3.3"
}

18
src/everything/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
COPY src/everything /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

29
src/fetch/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# Use a Python image with uv pre-installed
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
# 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
# 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
# Place executables in the environment at the front of the path
ENV PATH="/app/.venv/bin:$PATH"
# when running the container, add --db-path and a bind mount to the host's db file
ENTRYPOINT ["uvx" , "mcp-server-fetch"]

18
src/filesystem/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
WORKDIR /app
COPY src/filesystem /app
COPY tsconfig.json /tsconfig.json
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -105,6 +105,32 @@ Node.js server implementing Model Context Protocol (MCP) for filesystem operatio
## Usage with Claude Desktop
Add this to your `claude_desktop_config.json`:
Note: you can provide sandboxed directories to the server by mounting them to `/projects`. Adding the `ro` flag will make the directory readonly by the server.
### Docker
```json
{
"mcpServers": {
"filesystem": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
"--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
"--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
"ai/mcp-filesystem"
]
}
}
}
```
### NPX
```json
{
"mcpServers": {
@@ -121,6 +147,14 @@ Add this to your `claude_desktop_config.json`:
}
```
## Build
Docker build:
```bash
docker build -t ai/mcp-filesystem -f src/filesystem/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -28,8 +28,8 @@
"devDependencies": {
"@types/diff": "^5.0.9",
"@types/minimatch": "^5.1.2",
"@types/node": "^20.11.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.3.3"
}
}
}

18
src/gdrive/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
COPY src/gdrive /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -49,6 +49,21 @@ To authenticate and save credentials:
To integrate this server with the desktop app, add the following to your app's server configuration:
#### Docker
```json
{
"mcpServers": {
"gdrive": {
"command": "docker",
"args": ["run", "-i", "--rm", "ai/mcp-gdrive"]
}
}
}
```
#### NPX
```json
{
"mcpServers": {

View File

@@ -24,7 +24,7 @@
"googleapis": "^144.0.0"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}

31
src/git/Dockerfile Normal file
View File

@@ -0,0 +1,31 @@
# Use a Python image with uv pre-installed
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
# 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
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
# 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
# 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
# Place executables in the environment at the front of the path
ENV PATH="/app/.venv/bin:$PATH"
# when running the container, add --db-path and a bind mount to the host's db file
ENTRYPOINT ["uv" , "run" , "--directory", ".", "mcp-server-git"]

View File

@@ -193,18 +193,52 @@ If you are doing local development, there are two ways to test your changes:
2. Test using the Claude desktop app. Add the following to your `claude_desktop_config.json`:
### Docker
```json
"git": {
"command": "uv",
"args": [
"--directory",
"/<path to mcp-servers>/mcp-servers/src/git",
"run",
"mcp-server-git"
]
{
"mcpServers": {
"brave-search": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
"--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
"--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
"ai/mcp-git"
]
}
}
}
```
### UVX
```json
{
"mcpServers": {
"git": {
"command": "uv",
"args": [
"--directory",
"/<path to mcp-servers>/mcp-servers/src/git",
"run",
"mcp-server-git"
]
}
}
```
## Build
Docker build:
```bash
cd src/git
docker build -t ai/mcp-git .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

19
src/github/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM node:22.12-alpine as builder
# Must be entire project because `prepare` script is run during `npm install` and requires all files.
COPY src/github /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -225,14 +225,19 @@ For detailed search syntax, see [GitHub's searching documentation](https://docs.
### Usage with Claude Desktop
To use this with Claude Desktop, add the following to your `claude_desktop_config.json`:
#### Docker
```json
{
"mcpServers": {
"github": {
"command": "npx",
"command": "docker",
"args": [
"-y",
"@modelcontextprotocol/server-github"
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN",
"ai/mcp-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
@@ -242,6 +247,33 @@ To use this with Claude Desktop, add the following to your `claude_desktop_confi
}
```
### NPX
```json
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
]
},
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
```
## Build
Docker build:
```bash
docker build -t ai/mcp-github -f src/github/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -20,7 +20,7 @@
},
"dependencies": {
"@modelcontextprotocol/sdk": "1.0.1",
"@types/node": "^20.11.0",
"@types/node": "^22",
"@types/node-fetch": "^2.6.12",
"node-fetch": "^3.3.2",
"zod": "^3.22.4",

18
src/gitlab/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
COPY src/gitlab /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -109,19 +109,57 @@ MCP Server for the GitLab API, enabling project management, file operations, and
### Usage with Claude Desktop
Add the following to your `claude_desktop_config.json`:
#### Docker
```json
{
"gitlab": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-gitlab"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
"GITLAB_API_URL": "https://gitlab.com/api/v4" // Optional, for self-hosted instances
"mcpServers": {
"gitlab": {
"command": "docker",
"args": [
"run",
"-e",
"GITLAB_PERSONAL_ACCESS_TOKEN=$GITLAB_PERSONAL_ACCESS_TOKEN",
"-e",
"GITLAB_API_URL=$GITLAB_API_URL",
"ai/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
"GITLAB_API_URL": "https://gitlab.com/api/v4" // Optional, for self-hosted instances
}
}
}
}
```
### NPX
```json
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
"GITLAB_API_URL": "https://gitlab.com/api/v4" // Optional, for self-hosted instances
}
}
}
}
```
## Build
Docker build:
```bash
docker build -t vonwig/gitlab:mcp -f src/gitlab/Dockerfile .
```
## Environment Variables
- `GITLAB_PERSONAL_ACCESS_TOKEN`: Your GitLab personal access token (required)

View File

@@ -0,0 +1,19 @@
FROM node:22.12-alpine as builder
# Must be entire project because `prepare` script is run during `npm install` and requires all files.
COPY src/google-maps /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -59,6 +59,31 @@ Get a Google Maps API key by following the instructions [here](https://developer
Add the following to your `claude_desktop_config.json`:
#### Docker
```json
{
"mcpServers": {
"google-maps": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GOOGLE_MAPS_API_KEY=$GOOGLE_MAPS_API_KEY",
"ai/mcp-google-maps"
],
"env": {
"GOOGLE_MAPS_API_KEY": "<YOUR_API_KEY>"
}
}
}
}
```
### NPX
```json
{
"mcpServers": {
@@ -76,6 +101,14 @@ Add the following to your `claude_desktop_config.json`:
}
```
## Build
Docker build:
```bash
docker build -t vonwig/google-maps:mcp -f src/google-maps/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

18
src/memory/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
COPY src/memory /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -127,7 +127,23 @@ Example:
# Usage with Claude Desktop
### Setup
Add this to your claude_desktop_config.json:
#### Docker
```json
{
"mcpServers": {
"memory": {
"command": "docker",
"args": ["run", "-i", "--rm", "ai/mcp-memory"]
}
}
}
```
#### NPX
```json
{
"mcpServers": {
@@ -174,6 +190,14 @@ Follow these steps for each interaction:
b) Store facts about them as observations
```
## Building
Docker:
```sh
docker build -t ai/mcp-memory -f src/memory/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -22,7 +22,7 @@
"@modelcontextprotocol/sdk": "1.0.1"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}

18
src/postgres/Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
COPY src/postgres /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -24,6 +24,21 @@ The server provides schema information for each table in the database:
To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your `claude_desktop_config.json`:
### Docker
```json
{
"mcpServers": {
"postgres": {
"command": "docker",
"args": ["run", "-i", "--rm", "ai/mcp-postgres", "host.docker.internal:5432/mydb"]
}
}
}
```
### NPX
```json
{
"mcpServers": {
@@ -41,6 +56,14 @@ To use this server with the Claude Desktop app, add the following configuration
Replace `/mydb` with your database name.
## Building
Docker:
```sh
docker build -t ai/mcp-postgres -f src/postgres/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

27
src/puppeteer/Dockerfile Normal file
View File

@@ -0,0 +1,27 @@
FROM node:22-bullseye-slim
ENV DEBIAN_FRONTEND noninteractive
# for arm64 support we need to install chromium provided by debian
# npm ERR! The chromium binary is not available for arm64.
# https://github.com/puppeteer/puppeteer/issues/7740
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
RUN apt-get update && \
apt-get install -y wget gnupg && \
apt-get install -y fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
libgtk2.0-0 libnss3 libatk-bridge2.0-0 libdrm2 libxkbcommon0 libgbm1 libasound2 && \
apt-get install -y chromium && \
apt-get clean
COPY src/puppeteer /project
COPY tsconfig.json /tsconfig.json
WORKDIR /project
RUN npm install
CMD ["node", "dist/index.js"]

View File

@@ -65,6 +65,21 @@ The server provides access to two types of resources:
## Configuration to use Puppeteer Server
Here's the Claude Desktop configuration to use the Puppeter server:
### Docker
```json
{
"mcpServers": {
"puppeteer": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "ai/mcp-puppeteer"]
}
}
}
```
### NPX
```json
{
"mcpServers": {
@@ -76,6 +91,14 @@ Here's the Claude Desktop configuration to use the Puppeter server:
}
```
## Build
Docker build:
```bash
docker build -t ai/mcp-puppeteer -f src/puppeteer/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -108,7 +108,7 @@ const screenshots = new Map<string, string>();
async function ensureBrowser() {
if (!browser) {
browser = await puppeteer.launch({ headless: false });
browser = await puppeteer.launch({ headless: true, args: ["--no-sandbox"] });
const pages = await browser.pages();
page = pages[0];

29
src/sentry/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# Use a Python image with uv pre-installed
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
# 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
# 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
# Place executables in the environment at the front of the path
ENV PATH="/app/.venv/bin:$PATH"
# when running the container, add --db-path and a bind mount to the host's db file
ENTRYPOINT ["uv" , "run" , "--directory", ".", "mcp-server-sentry"]

View File

@@ -0,0 +1,18 @@
FROM node:22.12-alpine as builder
COPY src/sequentialthinking /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -44,6 +44,8 @@ The Sequential Thinking tool is designed for:
Add this to your `claude_desktop_config.json`:
#### npx
```json
{
"mcpServers": {
@@ -58,6 +60,32 @@ Add this to your `claude_desktop_config.json`:
}
```
#### docker
```json
{
"mcpServers": {
"sequentialthinking": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ai/mcp-sequentialthinking"
]
}
}
}
```
## Building
Docker:
```bash
docker build -t ai/mcp-sequentialthinking -f sequentialthinking/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -24,7 +24,7 @@
"yargs": "^17.7.2"
},
"devDependencies": {
"@types/node": "^20.11.0",
"@types/node": "^22",
"@types/yargs": "^17.0.32",
"shx": "^0.3.4",
"typescript": "^5.3.3"

19
src/slack/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM node:22.12-alpine as builder
# Must be entire project because `prepare` script is run during `npm install` and requires all files.
COPY src/slack /app
COPY tsconfig.json /tsconfig.json
WORKDIR /app
RUN --mount=type=cache,target=/root/.npm npm install
FROM node:22-alpine AS release
COPY --from=builder /app/dist /app
ENV NODE_ENV=production
WORKDIR /app
CMD ["node", "dist/index.js"]

View File

@@ -89,6 +89,8 @@ MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
Add the following to your `claude_desktop_config.json`:
#### npx
```json
{
"mcpServers": {
@@ -107,6 +109,32 @@ Add the following to your `claude_desktop_config.json`:
}
```
#### docker
```json
{
"mcpServers": {
"slack": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN",
"-e",
"SLACK_TEAM_ID=$SLACK_TEAM_ID",
"ai/mcp-slack"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
```
### Troubleshooting
If you encounter permission errors, verify that:
@@ -115,6 +143,14 @@ If you encounter permission errors, verify that:
3. The tokens and workspace ID are correctly copied to your configuration
4. The app has been added to the channels it needs to access
## Build
Docker build:
```bash
docker build -t ai/mcp-slack -f src/slack/Dockerfile .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -22,7 +22,7 @@
"@modelcontextprotocol/sdk": "1.0.1"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}

29
src/sqlite/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# Use a Python image with uv pre-installed
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
# 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
# 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
# Place executables in the environment at the front of the path
ENV PATH="/app/.venv/bin:$PATH"
# when running the container, add --db-path and a bind mount to the host's db file
ENTRYPOINT ["uv" , "run" , "--directory", ".", "mcp-server-sqlite"]

View File

@@ -63,6 +63,8 @@ The server offers six core tools:
## Usage with Claude Desktop
### uv
```bash
# Add the server to your claude_desktop_config.json
"mcpServers": {
@@ -80,6 +82,35 @@ The server offers six core tools:
}
```
### Docker
```json
# Add the server to your claude_desktop_config.json
"mcpServers": {
"sqlite": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"mcp-test:/mcp",
"ai/mcp-sqlite",
"--db-path",
"/mcp/test.db"
]
}
}
```
## Building
Docker:
```bash
docker build -t ai/mcp-sqlite .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

29
src/time/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# Use a Python image with uv pre-installed
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
# 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
# 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
# Place executables in the environment at the front of the path
ENV PATH="/app/.venv/bin:$PATH"
# when running the container, add --db-path and a bind mount to the host's db file
ENTRYPOINT ["uv" , "run" , "--directory", ".", "mcp-server-time"]

View File

@@ -54,6 +54,19 @@ Add to your Claude settings:
```
</details>
<details>
<summary>Using docker</summary>
```json
"mcpServers": {
"time": {
"command": "docker",
"args": ["run", "-i", "--rm", "ai/mcp-time"]
}
}
```
</details>
<details>
<summary>Using pip installation</summary>
@@ -179,6 +192,15 @@ npx @modelcontextprotocol/inspector uv run mcp-server-time
3. "When it's 4 PM in New York, what time is it in London?"
4. "Convert 9:30 AM Tokyo time to New York time"
## Build
Docker build:
```bash
cd src/time
docker build -t ai/mcp-time .
```
## Contributing
We encourage contributions to help expand and improve mcp-server-time. Whether you want to add new time-related tools, enhance existing functionality, or improve documentation, your input is valuable.