Merge branch 'main' into patch-1

This commit is contained in:
Mamerto Fabian Jr 2024-12-21 07:24:31 +08:00 • committed by GitHub
commit de5381ff9d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
52 changed files with 1122 additions and 137 deletions

View file

@ -34,7 +34,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22
cache: npm
- name: Install dependencies
@ -64,7 +64,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22
cache: npm
registry-url: "https://registry.npmjs.org"

View file

@ -44,6 +44,7 @@ Official integrations are maintained by companies building production ready MCP
- <img height="12" width="12" src="https://e2b.dev/favicon.ico" alt="E2B Logo" /> **[E2B](https://github.com/e2b-dev/mcp-server)** - Run code in secure sandboxes hosted by [E2B](https://e2b.dev)
- <img height="12" width="12" src="https://exa.ai/images/favicon-32x32.png" alt="Exa Logo" /> **[Exa](https://github.com/exa-labs/exa-mcp-server)** - Search Engine made for AIs by [Exa](https://exa.ai)
- <img height="12" width="12" src="https://cdn.simpleicons.org/jetbrains" /> **[JetBrains](https://github.com/JetBrains/mcp-jetbrains)** – Work on your code with JetBrains IDEs
- **[Needle](https://github.com/JANHMS/needle-mcp)** - Production-ready RAG out of the box to search and retrieve data from your own documents.
- **[Neon](https://github.com/neondatabase/mcp-server-neon)** - Interact with the Neon serverless Postgres platform
- <img height="12" width="12" src="https://neo4j.com/favicon.ico" alt="Neo4j Logo" /> **[Neo4j](https://github.com/neo4j-contrib/mcp-neo4j/)** - Neo4j graph database server (schema + read/write-cypher) and separate graph database backed memory
- <img height="12" width="12" src="https://www.tinybird.co/favicon.ico" alt="Tinybird Logo" /> **[Tinybird](https://github.com/tinybirdco/mcp-tinybird)** - Interact with Tinybird serverless ClickHouse platform
@ -51,6 +52,7 @@ Official integrations are maintained by companies building production ready MCP
- <img height="12" width="12" src="https://qdrant.tech/img/brand-resources-logos/logomark.svg" /> **[Qdrant](https://github.com/qdrant/mcp-server-qdrant/)** - Implement semantic memory layer on top of the Qdrant vector search engine
- <img height="12" width="12" src="https://metoro.io/static/images/logos/Metoro.svg" /> **[Metoro](https://github.com/metoro-io/metoro-mcp-server)** - Query and interact with kubernetes environments monitored by Metoro
### 🌎 Community Servers
A growing set of community-developed and maintained servers demonstrates various applications of MCP across different domains.
@ -103,6 +105,8 @@ A growing set of community-developed and maintained servers demonstrates various
- **[TMDB](https://github.com/Laksh-star/mcp-server-tmdb)** - This MCP server integrates with The Movie Database (TMDB) API to provide movie information, search capabilities, and recommendations.
- **[MongoDB](https://github.com/kiliczsh/mcp-mongo-server)** - A Model Context Protocol Server for MongoDB.
- **[Airtable](https://github.com/felores/airtable-mcp)** - Airtable Model Context Protocol Server.
- **[Atlassian](https://github.com/sooperset/mcp-atlassian)** - Interact with Atlassian Cloud products (Confluence and Jira) including searching/reading Confluence spaces/pages, accessing Jira issues, and project metadata.
- **[Google Tasks](https://github.com/zcaceres/gtasks-mcp)** - Google Tasks API Model Context Protocol Server.
- **[Fetch](https://github.com/zcaceres/fetch-mcp)** - A server that flexibly fetches HTML, JSON, Markdown, or plaintext
- **[Everything Search](https://github.com/mamertofabian/mcp-everything-search)** - Fast file searching capabilities across Windows (using [Everything SDK](https://www.voidtools.com/support/everything/sdk/)), macOS (using mdfind command), and Linux (using locate/plocate command).

118
package-lock.json generated
View file

@ -1573,11 +1573,12 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "22.9.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz",
"integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==",
"version": "22.10.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz",
"integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.19.8"
"undici-types": "~6.20.0"
}
},
"node_modules/@types/node-fetch": {
@ -4774,9 +4775,10 @@
}
},
"node_modules/undici-types": {
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
"version": "6.20.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
"license": "MIT"
},
"node_modules/universalify": {
"version": "2.0.1",
@ -5015,20 +5017,11 @@
"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"
}
},
"src/aws-kb-retrieval-server/node_modules/@types/node": {
"version": "20.17.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
"integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
"dev": true,
"dependencies": {
"undici-types": "~6.19.2"
}
},
"src/brave-search": {
"name": "@modelcontextprotocol/server-brave-search",
"version": "0.6.2",
@ -5040,7 +5033,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"
}
@ -5055,16 +5048,6 @@
"zod": "^3.23.8"
}
},
"src/brave-search/node_modules/@types/node": {
"version": "20.17.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz",
"integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~6.19.2"
}
},
"src/duckduckgo": {
"name": "@modelcontextprotocol/server-duckduckgo",
"version": "0.2.0",
@ -5080,7 +5063,7 @@
},
"devDependencies": {
"@types/jsdom": "^21.1.6",
"@types/node": "^20.10.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@ -5099,20 +5082,11 @@
"mcp-server-everart": "dist/index.js"
},
"devDependencies": {
"@types/node": "^20.11.0",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.3.3"
}
},
"src/everart/node_modules/@types/node": {
"version": "20.17.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
"integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
"dev": true,
"dependencies": {
"undici-types": "~6.19.2"
}
},
"src/everart/node_modules/data-uri-to-buffer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
@ -5201,7 +5175,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"
}
@ -5216,16 +5190,6 @@
"zod": "^3.23.8"
}
},
"src/filesystem/node_modules/@types/node": {
"version": "20.17.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz",
"integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~6.19.2"
}
},
"src/filesystem/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@ -5298,7 +5262,7 @@
"mcp-server-gdrive": "dist/index.js"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@ -5313,22 +5277,13 @@
"zod": "^3.23.8"
}
},
"src/gdrive/node_modules/@types/node": {
"version": "22.9.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz",
"integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==",
"dev": true,
"dependencies": {
"undici-types": "~6.19.8"
}
},
"src/github": {
"name": "@modelcontextprotocol/server-github",
"version": "0.6.2",
"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",
@ -5352,14 +5307,6 @@
"zod": "^3.23.8"
}
},
"src/github/node_modules/@types/node": {
"version": "20.17.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
"integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
"dependencies": {
"undici-types": "~6.19.2"
}
},
"src/github/node_modules/data-uri-to-buffer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
@ -5501,7 +5448,7 @@
"mcp-server-memory": "dist/index.js"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@ -5516,15 +5463,6 @@
"zod": "^3.23.8"
}
},
"src/memory/node_modules/@types/node": {
"version": "22.9.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz",
"integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==",
"dev": true,
"dependencies": {
"undici-types": "~6.19.8"
}
},
"src/postgres": {
"name": "@modelcontextprotocol/server-postgres",
"version": "0.6.2",
@ -5591,21 +5529,12 @@
"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"
}
},
"src/sequentialthinking/node_modules/@types/node": {
"version": "20.17.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
"integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
"dev": true,
"dependencies": {
"undici-types": "~6.19.2"
}
},
"src/slack": {
"name": "@modelcontextprotocol/server-slack",
"version": "0.6.2",
@ -5617,7 +5546,7 @@
"mcp-server-slack": "dist/index.js"
},
"devDependencies": {
"@types/node": "^22.9.3",
"@types/node": "^22",
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
@ -5631,15 +5560,6 @@
"raw-body": "^3.0.0",
"zod": "^3.23.8"
}
},
"src/slack/node_modules/@types/node": {
"version": "22.9.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz",
"integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==",
"dev": true,
"dependencies": {
"undici-types": "~6.19.8"
}
}
}
}

View file

@ -0,0 +1,22 @@
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
WORKDIR /app
COPY --from=builder /app/dist /app/dist
COPY --from=builder /app/package.json /app/package.json
COPY --from=builder /app/package-lock.json /app/package-lock.json
ENV NODE_ENV=production
RUN npm ci --ignore-scripts --omit-dev
ENTRYPOINT ["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", "-e", "AWS_SECRET_ACCESS_KEY", "-e", "AWS_REGION", "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 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,23 @@
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
WORKDIR /app
COPY --from=builder /app/dist /app/dist
COPY --from=builder /app/package.json /app/package.json
COPY --from=builder /app/package-lock.json /app/package-lock.json
ENV NODE_ENV=production
RUN npm ci --ignore-scripts --omit-dev
ENTRYPOINT ["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",
"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 mcp/brave-search:latest -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"
}

24
src/everart/Dockerfile Normal file
View file

@ -0,0 +1,24 @@
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
WORKDIR /app
COPY --from=builder /app/dist /app/dist
COPY --from=builder /app/package.json /app/package.json
COPY --from=builder /app/package-lock.json /app/package-lock.json
ENV NODE_ENV=production
RUN npm ci --ignore-scripts --omit-dev
ENTRYPOINT ["node", "dist/index.js"]
CMD ["node", "dist/index.js"]

View file

@ -10,6 +10,24 @@ 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", "mcp/everart"],
"env": {
"EVERART_API_KEY": "your_key_here"
}
}
}
}
```
### NPX
```json
{
"mcpServers": {
@ -71,3 +89,9 @@ Generation details:
You can also click the URL above to view the image again.
```
## Building w/ Docker
```sh
docker build -t 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"
}

22
src/everything/Dockerfile Normal file
View file

@ -0,0 +1,22 @@
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
WORKDIR /app
COPY --from=builder /app/dist /app/dist
COPY --from=builder /app/package.json /app/package.json
COPY --from=builder /app/package-lock.json /app/package-lock.json
ENV NODE_ENV=production
RUN npm ci --ignore-scripts --omit-dev
CMD ["node", "dist/index.js"]

36
src/fetch/Dockerfile Normal file
View file

@ -0,0 +1,36 @@
# Use a Python image with uv pre-installed
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim 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-slim-bookworm
WORKDIR /app
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"
# when running the container, add --db-path and a bind mount to the host's db file
ENTRYPOINT ["mcp-server-fetch"]

View file

@ -61,6 +61,19 @@ Add to your Claude settings:
```
</details>
<details>
<summary>Using docker</summary>
```json
"mcpServers": {
"fetch": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/fetch"]
}
}
```
</details>
<details>
<summary>Using pip installation</summary>

25
src/filesystem/Dockerfile Normal file
View file

@ -0,0 +1,25 @@
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
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
FROM node:22-alpine AS release
WORKDIR /app
COPY --from=builder /app/dist /app/dist
COPY --from=builder /app/package.json /app/package.json
COPY --from=builder /app/package-lock.json /app/package-lock.json
ENV NODE_ENV=production
RUN npm ci --ignore-scripts --omit-dev
ENTRYPOINT ["node", "/app/dist/index.js"]

View file

@ -105,6 +105,34 @@ 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
Note: all directories must be mounted to `/projects` by default.
```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",
"mcp/filesystem",
"/projects",
]
}
}
}
```
### NPX
```json
{
"mcpServers": {
@ -121,6 +149,14 @@ Add this to your `claude_desktop_config.json`:
}
```
## Build
Docker build:
```bash
docker build -t 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"
}
}
}

29
src/gdrive/Dockerfile Normal file
View file

@ -0,0 +1,29 @@
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
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
FROM node:22-alpine AS release
WORKDIR /app
COPY --from=builder /app/dist /app/dist
COPY --from=builder /app/package.json /app/package.json
COPY --from=builder /app/package-lock.json /app/package-lock.json
COPY src/gdrive/replace_open.sh /replace_open.sh
ENV NODE_ENV=production
RUN npm ci --ignore-scripts --omit-dev
RUN sh /replace_open.sh
RUN rm /replace_open.sh
ENTRYPOINT ["node", "dist/index.js"]

View file

@ -49,6 +49,33 @@ To authenticate and save credentials:
To integrate this server with the desktop app, add the following to your app's server configuration:
#### Docker
Authentication:
Assuming you have completed setting up the OAuth application on Google Cloud, you can now auth the server with the following command, replacing `/path/to/gcp-oauth.keys.json` with the path to your OAuth keys file:
```bash
docker run -i --rm --mount type=bind,source=/path/to/gcp-oauth.keys.json,target=/gcp-oauth.keys.json -v mcp-gdrive:/gdrive-server -e GDRIVE_OAUTH_PATH=/gcp-oauth.keys.json -e "GDRIVE_CREDENTIALS_PATH=/gdrive-server/credentials.json" -p 3000:3000 mcp/gdrive auth
```
The command will print the URL to open in your browser. Open this URL in your browser and complete the authentication process. The credentials will be saved in the `mcp-gdrive` volume.
Once authenticated, you can use the server in your app's server configuration:
```json
{
"mcpServers": {
"gdrive": {
"command": "docker",
"args": ["run", "-i", "--rm", "-v", "mcp-gdrive:/gdrive-server", "-e", "GDRIVE_CREDENTIALS_PATH=/gdrive-server/credentials.json", "mcp/gdrive"]
}
}
}
```
#### NPX
```json
{
"mcpServers": {

Some files were not shown because too many files have changed in this diff Show more