From 1f78b1f8a1af0f5b8ea18bb8491cb5e86d22584f Mon Sep 17 00:00:00 2001 From: Henry Mao <1828968+calclavia@users.noreply.github.com> Date: Wed, 29 Jan 2025 12:03:00 +0800 Subject: [PATCH 1/3] Add Dockerfile --- Dockerfile | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bef83ce --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +# Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile +# Use an official Node.js image as the base +FROM node:18-alpine AS builder + +# Set the working directory +WORKDIR /app + +# Copy package.json and package-lock.json to the working directory +COPY package.json package-lock.json ./ + +# Install dependencies +RUN npm install + +# Copy the rest of the application code to the working directory +COPY . . + +# Build the TypeScript code +RUN npm run build + +# Use a lightweight Node.js image to run the app +FROM node:18-alpine AS runner + +# Set the working directory +WORKDIR /app + +# Copy built application from the builder +COPY --from=builder /app/build ./build +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./package.json + +# Set environment variables +ENV NODE_ENV=production + +# Expose the port the app runs on +EXPOSE 3000 + +# Run the application +ENTRYPOINT ["node", "build/index.js"] From 3910718f775e040db10901619f01da87370f2248 Mon Sep 17 00:00:00 2001 From: Henry Mao <1828968+calclavia@users.noreply.github.com> Date: Wed, 29 Jan 2025 12:03:01 +0800 Subject: [PATCH 2/3] Add Smithery configuration --- smithery.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 smithery.yaml diff --git a/smithery.yaml b/smithery.yaml new file mode 100644 index 0000000..a4867ad --- /dev/null +++ b/smithery.yaml @@ -0,0 +1,17 @@ +# Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml + +startCommand: + type: stdio + configSchema: + # JSON Schema defining the configuration options for the MCP. + type: object + required: + - linearApiKey + properties: + linearApiKey: + type: string + description: The API key for the Linear MCP server. + commandFunction: + # A function that produces the CLI command to start the MCP on stdio. + |- + (config) => ({command:'node',args:['build/index.js'],env:{LINEAR_API_KEY:config.linearApiKey}}) From fd8de59418e007744e24a1462fd3e36bc5fd89f7 Mon Sep 17 00:00:00 2001 From: Henry Mao <1828968+calclavia@users.noreply.github.com> Date: Wed, 29 Jan 2025 12:03:02 +0800 Subject: [PATCH 3/3] Update README --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index b69fa04..4e616fe 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,22 @@ # Linear MCP Server +[![smithery badge](https://smithery.ai/badge/linear-mcp-server)](https://smithery.ai/server/linear-mcp-server) + A [Model Context Protocol](https://github.com/modelcontextprotocol) server for the [Linear API](https://developers.linear.app/docs/graphql/working-with-the-graphql-api). This server provides integration with Linear's issue tracking system through MCP, allowing LLMs to interact with Linear issues. ## Installation +### Installing via Smithery + +To install Linear MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/linear-mcp-server): + +```bash +npx -y @smithery/cli install linear-mcp-server --client claude +``` + +### Manual Installation 1. Create or get a Linear API key for your team: [https://linear.app/YOUR-TEAM/settings/api](https://linear.app/YOUR-TEAM/settings/api) 2. Add server config to Claude Desktop: