Cursor IDE Development Tools (Jira, GitHub, PostgreSQL)

by michael-trullion

Not rated
GitHub

About

Provides Cursor IDE with domain-specific tools for accessing Jira, GitHub, and PostgreSQL databases through standalone TypeScript servers that enable direct interaction with development tools during AI conversations.

Details

Author
michael-trullion
Repository
michael-trullion/mcp-servers
Categories
AI, Developer Tools, Search, Database, Knowledge Base, Infrastructure

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Cursor IDE Development Tools (Jira, GitHub, PostgreSQL)
    Command (node, npx, python, etc.) npx
    Arguments
    • Argument 1 -y
    • Argument 2 @highlight/mcp-server

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

The setup command creates individual shell scripts for each server that can be used directly with Cursor IDE.
After running npm run setup, you'll see instructions for each server configuration.

All servers are configured through environment variables. Create a .env file in the project root (or copy from .env.example) and configure the services you plan to use:


POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=your_database_name
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password

KUBECONFIG=/path/to/your/kubeconfig

To run a specific server using the included helper script:

npm run server -- [server-name]

For example, to run the postgres server:

npm run server -- postgres

Or to run the PDF server:

npm run server -- pdf

This will automatically build the TypeScript code and start the server.

To run a specific server manually:

npm run dev -- [server-name]

For example, to run the postgres server:

npm run dev -- postgres

Or to run the PDF server:

npm run dev -- pdf

To run all servers simultaneously:

npm run dev:all

mcp__get_database_info

Retrieves information about the connected database.

mcp__list_tables

Lists all tables in the current database schema.

mcp__get_table_structure

Gets the column definitions for a specific table.

mcp__execute_query

Executes a custom SQL query against the database.

get_pods

Retrieves pods from a specified namespace, with optional field and label selectors.

find_pods

Finds pods matching a name pattern in a specified namespace.

kill_pod

Deletes a pod in a specified namespace.

exec_in_pod

Executes a command in a specified pod and container.

get_pod_logs

Retrieves logs from a specified pod, with options for container, line count, and previous instance.

read_pdf

Extracts text content and form field data from PDF documents. Parameters: input (string) - PDF file path or base64 encoded PDF content.

write_pdf

Creates new PDFs or modifies existing ones with content and form field updates. Parameters: content (object) - Content to write (text and/or form fields), templatePdf (optional string) - Template PDF file path or base64 content, outputPath (optional string) - Output file path.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "cursor ide development tools (jira, github, postgresql)": {
            "env": {},
            "args": [
                "-y",
                "@highlight/mcp-server"
            ],
            "command": "npx"
        }
    }
}

Linux

{
    "env": [],
    "args": [
        "-y",
        "@highlight/mcp-server"
    ],
    "command": "npx"
}

Macos

{
    "env": [],
    "args": [
        "-y",
        "@highlight/mcp-server"
    ],
    "command": "npx"
}

Windows

{
    "env": [],
    "args": [
        "/c",
        "npx",
        "-y",
        "@highlight/mcp-server"
    ],
    "command": "cmd"
}

MCP Servers for Cursor IDE

This project hosts multiple Model-Context-Protocol (MCP) servers designed to work with the Cursor IDE. MCP servers allow Cursor to leverage external tools and functionalities through a standardized communication protocol.

Table of Contents

- How To Use
- What is MCP?
- Project Structure
- Available Servers
- Server Configuration
- Available Tools
- Running the Servers
- Quick Start
- Running a Server Using the Helper Script
- Running a Single Server Manually
- Running All Servers
- List Available Servers
- Testing Your MCP Server
- Adding a New MCP Server
- Understanding MCP Server Development
- Building the Project

Prerequisites

- Node.js (v16 or newer)
- npm or yarn

How To Use

1. Clone this repository:

   git clone https://github.com/yourusername/mcp-servers.git
   cd mcp-servers
   

2. Install dependencies and set up everything:

   npm run setup
   

This command will:

- Install all dependencies
- Build the TypeScript project
- Generate the necessary scripts for Cursor IDE integration
- Provide instructions for setting up each server in Cursor

3. Configure Cursor IDE:

- Open Cursor IDE
- Go to Cursor Settings > Features > Mcp Servers
- Click "Add New Mcp Server"
- Enter a name for the server (e.g., "postgres")
- For "Connection Type", select "command"
- For "command", paste the path provided by the prepare script
- Click "Save"

4. Environment Variables:

- Copy the .env.example file to .env
- Update the variables with your own credentials for each service

5. Use Mcp In Cursor IDE:

- Open the composer
- make sure you are using agent mode (claude 3.7 sonnet thinking is recommended)
- submit the message you want to cursor

What is MCP?

Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to LLMs (Large Language Models). Think of MCP like a communication interface between Cursor IDE and external tools. MCP servers expose tools that can be used by Cursor IDE to enhance its capabilities.

Project Structure

mcp-servers/
├── src/
│   ├── servers/                  # Individual MCP servers
│   │   ├── postgres-server/      # PostgreSQL integration server
│   │   │   └── postgres-server.ts
│   │   ├── kubernetes-server/    # Kubernetes integration server
│   │   │   └── kubernetes-server.ts
│   │   ├── lease-pdf-server/     # PDF processing server
│   │   │   └── pdf-server.ts
│   │   └── ... (more servers)
│   ├── template/                 # Reusable templates
│   │   └── mcp-server-template.ts
│   ├── index.ts                  # Server runner utility
│   └── run-all.ts                # Script to run all servers
├── package.json
└── tsconfig.json

Available Servers

Currently, the following MCP servers are available:

1. PostgreSQL Server - Provides access to PostgreSQL databases for executing queries and retrieving schema information
2. Kubernetes Server - Provides access to Kubernetes clusters for managing pods, executing commands, and retrieving logs
3. PDF Server - Provides PDF document processing capabilities including text extraction, form field reading/writing, and PDF generation

Server Configuration

All servers are configured through environment variables. Create a .env file in the project root (or copy from .env.example) and configure the services you plan to use:

# PostgreSQL Configuration (for PostgreSQL server)
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=your_database_name
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password

POSTGRES_SSL_MODE=require # Uncomment if SSL is required

POSTGRES_MAX_CONNECTIONS=10 # Optional: limit connection pool size

Kubernetes Configuration (for Kubernetes server)

KUBECONFIG=/path/to/your/kubeconfig

Alternative Kubernetes configuration:

KUBE_API_URL=https://your-kubernetes-api-server

KUBE_API_TOKEN=your-kubernetes-service-account-token

PDF Server requires no additional configuration

Available Tools

PostgreSQL Server Tools

- mcp__get_database_info - Retrieves information about the connected database
- mcp__list_tables - Lists all tables in the current database schema
- mcp__get_table_structure - Gets the column definitions for a specific table
- mcp__execute_query - Executes a custom SQL query against the database

Kubernetes Server Tools

- get_pods - Retrieves pods from a specified namespace, with optional field and label selectors
- find_pods - Finds pods matching a name pattern in a specified namespace
- kill_pod - Deletes a pod in a specified namespace
- exec_in_pod - Executes a command in a specified pod and container
- get_pod_logs - Retrieves logs from a specified pod, with options for container, line count, and previous instance

PDF Server Tools

- read_pdf - Extracts text content and form field data from PDF documents

- Parameters: input (string) - PDF file path or base64 encoded PDF content
- Returns: JSON with success status, page count, extracted text, form fields, and metadata

- write_pdf - Creates new PDFs or modifies existing ones with content and form field updates
- Parameters:
- content (object) - Content to write (text and/or form fields)
- templatePdf (optional string) - Template PDF file path or base64 content
- outputPath (optional string) - Output file path (returns base64 if not provided)
- Returns: JSON with success status, output path, and base64 data (if applicable)

Running the Servers

Quick Start

The setup command creates individual shell scripts for each server that can be used directly with Cursor IDE.
After running npm run setup, you'll see instructions for each server configuration.

Running a Server Using the Helper Script

To run a specific server using the included helper script:

npm run server -- [server-name]

For example, to run the postgres server:

npm run server -- postgres

Or to run the PDF server:

npm run server -- pdf

This will automatically build the TypeScript code and start the server.

Running a Single Server Manually

To run a specific server manually:

npm run dev -- [server-name]

For example, to run the postgres server:

npm run dev -- postgres

Or to run the PDF server:

npm run dev -- pdf

Running All Servers

To run all servers simultaneously:

npm run dev:all

List Available Servers

To see a list of all available servers:

npm run dev -- --list

Testing Your MCP Server

Before connecting to Cursor IDE, you can test your MCP server's functionality:

1. Build your TypeScript project:

   npm run build
   

2. Run the server:

   npm run start:postgres
   

Or for the PDF server:

   npm run start:pdf
   

3. For convenience, this project includes a ready-to-use script for Cursor:

   /path/to/mcp-servers/cursor-mcp-server.sh [server-name]
   

You can use this script path directly in your Cursor IDE configuration. If no server name is provided, it defaults to the postgres server. Examples:

   # Run postgres server (default)
   /path/to/mcp-servers/cursor-mcp-server.sh

# Run PDF server
/path/to/mcp-servers/cursor-mcp-server.sh pdf

# Run kubernetes server
/path/to/mcp-servers/cursor-mcp-server.sh kubernetes

Adding a New MCP Server

To add a new MCP server to this project:

1. Create a new directory for your server under src/servers/:

   mkdir -p src/servers/my-new-server
   

2. Create your server implementation:

   // src/servers/my-new-server/my-new-server.ts
   import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
   import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
   import { z } from "zod";

// Create an MCP server
const server = new McpServer({
name: "My New Server",
version: "1.0.0",
});

// Add your tools
server.tool(
"my-tool",
{
param1: z.string().describe("Parameter description"),
param2: z.number().describe("Parameter description"),
},
async ({ param1, param2 }) => {
// Tool implementation
return {
content: [{ type: "text", text: Result: ${param1} ${param2} }],
};
}
);

// Start the server
async function startServer() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.log("My New Server started and ready to process requests");
}

// Start the server if this file is run directly
if (process.argv[1] === new URL(import.meta.url).pathname) {
startServer();
}

export default server;

3. Add your server to the server list in src/index.ts and src/run-all.ts:

   const servers = [
     // ... existing servers
     {
       name: "my-new-server",
       displayName: "My New Server",
       path: join(__dirname, "servers/my-new-server/my-new-server.ts"),
     },
   ];
   

4. Update the package.json scripts (optional):

   "scripts": {
// ... existing scripts
"dev:my-new-server": "ts-node --esm src/servers/my-new-server/my-new-server.ts"
}

Understanding MCP Server Development

When developing an MCP server, keep in mind:

1. Tools are the primary way to expose functionality. Each tool should:

- Have a unique name
- Define parameters using Zod for validation
- Return results in a standardized format

2. Communication happens via stdio for Cursor integration.

3. Response Format is critical - MCP servers must follow the exact format:

- Tools should return content with type: "text" for text responses
- Avoid using unsupported types like type: "json" directly
- For structured data, convert to JSON string and use type: "text"
- Example:

     return {
content: [
{ type: "text", text: "Human-readable response" },
{ type: "text", text: JSON.stringify(structuredData, null, 2) },
],
};

Building the Project

To build the project, run:

npm run build
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.