diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5ea9f45 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# Generated by https://smithery.ai. See: https://smithery.ai/docs/build/project-config +FROM node:lts-alpine + +# Create app directory +WORKDIR /app + +# Copy package files and tsconfig +COPY package.json package-lock.json tsconfig.json ./ + +# Copy source +COPY src ./src + +# Install dependencies and build +RUN npm install --ignore-scripts +RUN npm run build + +# Use non-root user for safety (optional) +# USER node + +# Start the MCP server over stdio +CMD ["node", "build/index.js"] diff --git a/README.md b/README.md index 904c736..ad99174 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Google Tasks MCP Server +[![smithery badge](https://smithery.ai/badge/@mstfe/mcp-google-tasks)](https://smithery.ai/server/@mstfe/mcp-google-tasks) + A Model Context Protocol (MCP) server for managing Google Tasks. This TypeScript-based MCP server demonstrates core MCP concepts by integrating with the Google Tasks API. It allows managing tasks in a structured and efficient way. @@ -51,6 +53,14 @@ This TypeScript-based MCP server demonstrates core MCP concepts by integrating w ## Usage +### Installing via Smithery + +To install Google Tasks MCP for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@mstfe/mcp-google-tasks): + +```bash +npx -y @smithery/cli install @mstfe/mcp-google-tasks --client claude +``` + ### Running the Server To start the server: ```bash @@ -130,4 +140,4 @@ The Inspector will provide a URL to access debugging tools in your browser, maki ## 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. \ No newline at end of file +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. diff --git a/smithery.yaml b/smithery.yaml new file mode 100644 index 0000000..fa2d964 --- /dev/null +++ b/smithery.yaml @@ -0,0 +1,39 @@ +# Smithery configuration file: https://smithery.ai/docs/build/project-config + +startCommand: + type: stdio + commandFunction: + # A JS function that produces the CLI command based on the given config to start the MCP on stdio. + |- + (config) => ({ command: 'node', args: ['build/index.js'], env: { CLIENT_ID: config.clientId, CLIENT_SECRET: config.clientSecret, REDIRECT_URI: config.redirectUri, ACCESS_TOKEN: config.accessToken, REFRESH_TOKEN: config.refreshToken } }) + configSchema: + # JSON Schema defining the configuration options for the MCP. + type: object + required: + - clientId + - clientSecret + - redirectUri + - accessToken + - refreshToken + properties: + clientId: + type: string + description: Google OAuth2 client ID + clientSecret: + type: string + description: Google OAuth2 client secret + redirectUri: + type: string + description: OAuth2 redirect URI + accessToken: + type: string + description: OAuth2 access token + refreshToken: + type: string + description: OAuth2 refresh token + exampleConfig: + clientId: your-client-id.apps.googleusercontent.com + clientSecret: your-client-secret + redirectUri: http://localhost:3000/oauth2callback + accessToken: ya29.a0AfH6SM... + refreshToken: 1//0g9...