Get gdrive working in Docker
This commit is contained in:
parent
38c88d9ac3
commit
f63029468d
3 changed files with 26 additions and 3 deletions
|
|
@ -16,9 +16,14 @@ WORKDIR /app
|
||||||
COPY --from=builder /app/dist /app/dist
|
COPY --from=builder /app/dist /app/dist
|
||||||
COPY --from=builder /app/package.json /app/package.json
|
COPY --from=builder /app/package.json /app/package.json
|
||||||
COPY --from=builder /app/package-lock.json /app/package-lock.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
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
RUN npm ci --ignore-scripts --omit-dev
|
RUN npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
RUN sh /replace_open.sh
|
||||||
|
|
||||||
|
RUN rm /replace_open.sh
|
||||||
|
|
||||||
ENTRYPOINT ["node", "dist/index.js"]
|
ENTRYPOINT ["node", "dist/index.js"]
|
||||||
|
|
@ -31,8 +31,9 @@ The server provides access to Google Drive files:
|
||||||
3. [Configure an OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent) ("internal" is fine for testing)
|
3. [Configure an OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent) ("internal" is fine for testing)
|
||||||
4. Add OAuth scope `https://www.googleapis.com/auth/drive.readonly`
|
4. Add OAuth scope `https://www.googleapis.com/auth/drive.readonly`
|
||||||
5. [Create an OAuth Client ID](https://console.cloud.google.com/apis/credentials/oauthclient) for application type "Desktop App"
|
5. [Create an OAuth Client ID](https://console.cloud.google.com/apis/credentials/oauthclient) for application type "Desktop App"
|
||||||
6. Download the JSON file of your client's OAuth keys
|
6. Add http://localhost:3000/oauth2callback as a redirect URI
|
||||||
7. Rename the key file to `gcp-oauth.keys.json` and place into the root of this repo (i.e. `servers/gcp-oauth.keys.json`)
|
7. Download the JSON file of your client's OAuth keys
|
||||||
|
8. Rename the key file to `gcp-oauth.keys.json` and place into the root of this repo (i.e. `servers/gcp-oauth.keys.json`)
|
||||||
|
|
||||||
Make sure to build the server with either `npm run build` or `npm run watch`.
|
Make sure to build the server with either `npm run build` or `npm run watch`.
|
||||||
|
|
||||||
|
|
@ -51,12 +52,24 @@ To integrate this server with the desktop app, add the following to your app's s
|
||||||
|
|
||||||
#### Docker
|
#### 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
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"gdrive": {
|
"gdrive": {
|
||||||
"command": "docker",
|
"command": "docker",
|
||||||
"args": ["run", "-i", "--rm", "--mount", "type=bind,source=/Users/colinmcneil/Desktop/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", "mcp/gdrive"]
|
"args": ["run", "-i", "--rm", "-v", "mcp-gdrive:/gdrive-server", "-e", "GDRIVE_CREDENTIALS_PATH=/gdrive-server/credentials.json", "mcp/gdrive"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
src/gdrive/replace_open.sh
Normal file
5
src/gdrive/replace_open.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# Basic script to replace opn(authorizeUrl, { wait: false }).then(cp => cp.unref()); with process.stdout.write(`Open this URL in your browser: ${authorizeUrl}`);
|
||||||
|
|
||||||
|
sed -i 's/opn(authorizeUrl, { wait: false }).then(cp => cp.unref());/process.stderr.write(`Open this URL in your browser: ${authorizeUrl}\n`);/' node_modules/@google-cloud/local-auth/build/src/index.js
|
||||||
Loading…
Reference in a new issue