diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e936e99 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +# Generated by https://smithery.ai. See: https://smithery.ai/docs/build/project-config +# Auto-generated Dockerfile for ticktick-mcp-server +FROM node:lts-alpine + +# Create app directory +WORKDIR /app + +# Install dependencies +COPY package.json package-lock.json tsconfig.json ./ +# Copy source +COPY src ./src +COPY oauth-helper.js ./oauth-helper.js + +# Install and build +RUN npm install --ignore-scripts \ + && npm run build + +# Default command +CMD ["node", "dist/index.js"] diff --git a/README.md b/README.md index 5d0af0e..4407fcf 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # TickTick MCP Server +[![smithery badge](https://smithery.ai/badge/@rafliruslan/ticktick-mcp-server)](https://smithery.ai/server/@rafliruslan/ticktick-mcp-server) + A Model Context Protocol (MCP) server that provides integration with TickTick task management service. ## Features @@ -16,6 +18,14 @@ A Model Context Protocol (MCP) server that provides integration with TickTick ta ## Setup +### Installing via Smithery + +To install TickTick Task Management Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@rafliruslan/ticktick-mcp-server): + +```bash +npx -y @smithery/cli install @rafliruslan/ticktick-mcp-server --client claude +``` + 1. Install dependencies: ```bash npm install diff --git a/smithery.yaml b/smithery.yaml new file mode 100644 index 0000000..e7b7af2 --- /dev/null +++ b/smithery.yaml @@ -0,0 +1,43 @@ +# 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: ['dist/index.js'], env: { TICKTICK_ACCESS_TOKEN: config.ticktickAccessToken, TICKTICK_REFRESH_TOKEN: config.ticktickRefreshToken, TICKTICK_CLIENT_ID: config.ticktickClientId, TICKTICK_CLIENT_SECRET: config.ticktickClientSecret, TICKTICK_USERNAME: config.ticktickUsername, TICKTICK_PASSWORD: config.ticktickPassword } }) + configSchema: + # JSON Schema defining the configuration options for the MCP. + type: object + properties: + ticktickAccessToken: + type: string + default: "" + description: OAuth access token for TickTick + ticktickRefreshToken: + type: string + default: "" + description: OAuth refresh token for TickTick + ticktickClientId: + type: string + default: "" + description: OAuth client ID for TickTick + ticktickClientSecret: + type: string + default: "" + description: OAuth client secret for TickTick + ticktickUsername: + type: string + default: "" + description: Username for TickTick (if not using OAuth) + ticktickPassword: + type: string + default: "" + description: Password for TickTick (if not using OAuth) + exampleConfig: + ticktickAccessToken: your_access_token + ticktickRefreshToken: your_refresh_token + ticktickClientId: your_client_id + ticktickClientSecret: your_client_secret + ticktickUsername: "" + ticktickPassword: ""