Multi-Service Gateway MCP server

Provides a unified gateway for LLMs to access GitHub, GitLab, Google Maps, Memory storage, and Puppeteer web automation tools through a Flask-based server deployable on Red Hat environments.
Back to servers
Provider
Adam Pippert
Release date
Mar 07, 2025
Language
Python
Stats
3 stars

The MCP server implements the Model Context Protocol standard, providing a unified gateway for various tools including GitHub, GitLab, Google Maps, Memory storage, and Puppeteer web automation. It offers a modular architecture where each tool is a separate module, simplifying routing and management of multiple service integrations.

Prerequisites

  • Python 3.8 or higher
  • Node.js 14 or higher
  • A Linux/macOS system

Installation

Standard Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/mcp-server.git
    cd mcp-server
    
  2. Install Python dependencies:

    pip install -r requirements.txt
    
  3. Install Node.js dependencies:

    npm install
    
  4. Create a .env file with your configuration:

    SECRET_KEY=your-secret-key
    DEBUG=False
    
    # GitHub configuration
    GITHUB_TOKEN=your-github-token
    
    # GitLab configuration
    GITLAB_TOKEN=your-gitlab-token
    
    # Google Maps configuration
    GMAPS_API_KEY=your-google-maps-api-key
    
    # Memory configuration
    MEMORY_DB_URI=sqlite:///memory.db
    
    # Puppeteer configuration
    PUPPETEER_HEADLESS=true
    CHROME_PATH=/usr/bin/chromium-browser
    
  5. Start the server:

    python app.py
    

Docker Deployment

  1. Build the Docker image:

    docker build -t mcp-server .
    
  2. Run the container:

    docker run -p 5000:5000 --env-file .env mcp-server
    
  3. Alternatively, use docker-compose:

    Create a docker-compose.yml file:

    version: '3'
    services:
      mcp-server:
        build: .
        ports:
          - "5000:5000"
        volumes:
          - ./data:/app/data
        env_file:
          - .env
        restart: unless-stopped
    

    Then run:

    docker-compose up -d
    

Podman Deployment

For Red Hat based systems:

  1. Build the container image:

    podman build -t mcp-server .
    
  2. Run the container:

    podman run -p 5000:5000 --env-file .env mcp-server
    
  3. For persistent storage:

    mkdir -p ./data
    podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server
    
  4. Using Podman Compose:

    # Install podman-compose if needed
    pip install podman-compose
    
    # Use the same docker-compose.yml file
    podman-compose up -d
    

Using the MCP Server

MCP Gateway

The main endpoint for accessing all tools using the MCP standard.

Endpoint: POST /mcp/gateway

Request format:

{
  "tool": "github",
  "action": "listRepos",
  "parameters": {
    "username": "octocat"
  }
}

Response format:

{
  "tool": "github",
  "action": "listRepos",
  "status": "success",
  "result": [
    {
      "id": 1296269,
      "name": "Hello-World",
      "full_name": "octocat/Hello-World",
      "owner": {
        "login": "octocat",
        "id": 1
      }
    }
  ]
}

MCP Manifest

Describes all available tools and their capabilities.

Endpoint: GET /mcp/manifest

Response format:

{
  "manifestVersion": "1.0",
  "tools": {
    "github": {
      "actions": {
        "listRepos": {
          "description": "List repositories for a user or organization",
          "parameters": {
            "username": {
              "type": "string",
              "description": "GitHub username or organization name"
            }
          },
          "returns": {
            "type": "array",
            "description": "List of repository objects"
          }
        }
      }
    }
  }
}

Direct Tool Access

Each tool can be accessed directly via its own API endpoints:

  • GitHub: /tool/github/...
  • GitLab: /tool/gitlab/...
  • Google Maps: /tool/gmaps/...
  • Memory: /tool/memory/...
  • Puppeteer: /tool/puppeteer/...

Available Tools

GitHub Tool

Provides access to the GitHub API.

Actions:

  • listRepos: List repositories for a user or organization
  • getRepo: Get details for a specific repository
  • searchRepos: Search for repositories
  • getIssues: Get issues for a repository
  • createIssue: Create a new issue in a repository

GitLab Tool

Provides access to the GitLab API.

Actions:

  • listProjects: List all accessible projects
  • getProject: Get details for a specific project
  • searchProjects: Search for projects
  • getIssues: Get issues for a project
  • createIssue: Create a new issue
  • getPipelines: Get pipelines for a project

Google Maps Tool

Provides access to the Google Maps API.

Actions:

  • geocode: Convert an address to coordinates
  • reverseGeocode: Convert coordinates to an address
  • getDirections: Get directions between locations
  • searchPlaces: Search for places
  • getPlaceDetails: Get details for a specific place

Memory Tool

Provides a persistent key-value store.

Actions:

  • get: Get a memory item by key
  • set: Create or update a memory item
  • delete: Delete a memory item by key
  • list: List all memory items
  • search: Search memory items by value

Puppeteer Tool

Provides web automation capabilities.

Actions:

  • screenshot: Take a screenshot of a webpage
  • pdf: Generate a PDF of a webpage
  • extract: Extract content from a webpage

How to add this MCP server to Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "cursor-rules-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "cursor-rules-mcp"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later