diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-04-26 14:31:00 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-04-26 14:31:00 +0000 |
| commit | c239634dcc19a442ae154afbc07949c3cba8546e (patch) | |
| tree | 470a097a2ca5db97e53df19ea09542c52847a9f4 | |
| parent | 1880a59f2c17dad96962b4110a8544d7e5ed41ea (diff) | |
| download | karakeep-c239634dcc19a442ae154afbc07949c3cba8546e.tar.zst | |
build: Provide a docker container for the MCP server
| -rw-r--r-- | .github/workflows/docker.yml | 8 | ||||
| -rw-r--r-- | apps/mcp/README.md | 24 | ||||
| -rw-r--r-- | docker/Dockerfile | 15 |
3 files changed, 44 insertions, 3 deletions
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index f97b453a..50bd3262 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -25,10 +25,14 @@ jobs: target: cli tags_latest: ghcr.io/hoarder-app/hoarder-cli:latest,ghcr.io/mohamedbassem/hoarder-cli:latest,ghcr.io/karakeep-app/karakeep-cli:latest tags_release: ghcr.io/hoarder-app/hoarder-cli:${{ github.event.release.name }},ghcr.io/mohamedbassem/hoarder-cli:${{ github.event.release.name }},ghcr.io/karakeep-app/karakeep-cli:${{ github.event.release.name }},ghcr.io/hoarder-app/hoarder-cli:release,ghcr.io/mohamedbassem/hoarder-cli:release,ghcr.io/karakeep-app/karakeep-cli:release + - name: karakeep-mcp + target: mcp + tags_latest: ghcr.io/karakeep-app/karakeep-mcp:latest + tags_release: ghcr.io/karakeep-app/karakeep-mcp:${{ github.event.release.name }},ghcr.io/karakeep-app/karakeep-mcp:release - name: karakeep-aio target: aio - tags_latest: ghcr.io/hoarder-app/hoarder:latest,ghcr.io/mohamedbassem/hoarder:latest,ghcr.io/karakeep-app/karakeep:latest - tags_release: ghcr.io/hoarder-app/hoarder:${{ github.event.release.name }},ghcr.io/mohamedbassem/hoarder:${{ github.event.release.name }},ghcr.io/karakeep-app/karakeep:${{ github.event.release.name }},ghcr.io/hoarder-app/hoarder:release,ghcr.io/mohamedbassem/hoarder:release,ghcr.io/karakeep-app/karakeep:release + tags_latest: ghcr.io/hoarder-app/hoarder:latest,ghcr.io/karakeep-app/karakeep:latest + tags_release: ghcr.io/hoarder-app/hoarder:${{ github.event.release.name }},ghcr.io/karakeep-app/karakeep:${{ github.event.release.name }},ghcr.io/hoarder-app/hoarder:release,ghcr.io/karakeep-app/karakeep:release runs-on: ubuntu-latest permissions: packages: write diff --git a/apps/mcp/README.md b/apps/mcp/README.md index d59bb894..150aae78 100644 --- a/apps/mcp/README.md +++ b/apps/mcp/README.md @@ -14,8 +14,9 @@ Currently, the MCP server only exposes tools (no resources). ## Usage with Claude Desktop +From NPM: -``` +```json { "mcpServers": { "karakeep": { @@ -32,3 +33,24 @@ Currently, the MCP server only exposes tools (no resources). } ``` +From Docker: + +```json +{ + "mcpServers": { + "karakeep": { + "command": "docker", + "args": [ + "run", + "-p", + "3000:3000", + "-e", + "KARAKEEP_API_ADDR=https://<YOUR_SERVER_ADDR>", + "-e", + "KARAKEEP_API_KEY=<YOUR_TOKEN>", + "ghcr.io/karakeep-app/karakeep-mcp:latest" + ] + } + } +} +``` diff --git a/docker/Dockerfile b/docker/Dockerfile index 91d84b36..40e09c13 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -31,6 +31,9 @@ RUN pnpm deploy --node-linker=isolated --filter @karakeep/workers --prod /prod/w # Build the cli RUN (cd apps/cli && pnpm build) +# Build the mcp server +RUN (cd apps/mcp && pnpm build) + ################# The All-in-one builder ############## FROM node:22-alpine AS aio_builder @@ -145,3 +148,15 @@ ARG SERVER_VERSION=nightly ENV SERVER_VERSION=${SERVER_VERSION} ENTRYPOINT ["node", "index.mjs"] + +################# MCP server ############## + +FROM node:22-alpine AS mcp +LABEL org.opencontainers.image.source="https://github.com/karakeep-app/karakeep" +WORKDIR /app + +COPY --from=base /app/apps/mcp/dist/index.js apps/mcp/index.js + +WORKDIR /app/apps/mcp + +ENTRYPOINT ["node", "index.js"] |
