Multi-service MCP Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides access to GitHub's API for managing repositories, issues, and performing searches, allowing users to list repositories, get repository details, search repositories, get issues, and create new issues.

  • Enables interaction with GitLab's API to access projects, issues, and pipelines, with capabilities to list projects, get project details, search projects, manage issues, and retrieve pipeline information.

  • Provides geocoding, reverse geocoding, directions, and places search capabilities through the Google Maps API, allowing users to convert addresses to coordinates, find routes between locations, and search for places.

Servidor de Protocolo de Contexto de Modelo (MCP)

Un servidor modular que implementa el estándar Model Context Protocol , proporcionando herramientas para GitHub, GitLab, Google Maps, almacenamiento de memoria y automatización web Puppeteer.

Arquitectura

El servidor MCP cuenta con una arquitectura modular, donde cada herramienta se implementa como un módulo independiente. El servidor proporciona una puerta de enlace unificada que dirige las solicitudes a la herramienta correspondiente.

Características

  • Puerta de enlace MCP : un punto final unificado para todas las solicitudes de herramientas que siguen el estándar MCP
  • Manifiesto MCP : un punto final que describe todas las herramientas disponibles y sus capacidades
  • Acceso directo a las herramientas : se puede acceder directamente a cada herramienta a través de sus propios puntos finales de API
  • Diseño modular : fácil de agregar o quitar herramientas según sea necesario

Herramientas incluidas

  1. Herramienta de GitHub : interactúe con repositorios, problemas y búsquedas de GitHub
  2. Herramienta GitLab : Interactúe con proyectos, problemas y pipelines de GitLab
  3. Herramienta Google Maps : geocodificación, direcciones y búsqueda de lugares
  4. Herramienta de memoria : almacene y recupere datos de forma persistente
  5. Herramienta Puppeteer : toma capturas de pantalla, genera archivos PDF y extrae contenido de sitios web

Empezando

Prerrequisitos

  • Python 3.8 o superior
  • Node.js 14 o superior
  • Una distribución de Linux basada en Red Hat (RHEL, CentOS, Fedora) o cualquier sistema Linux/macOS

Instalación

  1. Clonar este repositorio:
    git clone https://github.com/yourusername/mcp-server.git cd mcp-server
  2. Instalar dependencias de Python:
    pip install -r requirements.txt
  3. Instalar las dependencias de Node.js:
    npm install
  4. Crea un archivo .env con tu configuración:
    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. Iniciar el servidor:
    python app.py

Implementación en contenedores

Puede ejecutar el servidor utilizando Docker o Podman (el motor de contenedores de Red Hat).

Implementación de Docker

Si ya tiene instalados Docker y docker-compose:

  1. Construya la imagen de Docker:
    docker build -t mcp-server .
  2. Ejecute el contenedor:
    docker run -p 5000:5000 --env-file .env mcp-server
  3. Alternativamente, utilice docker-compose:Cree un archivo docker-compose.yml :
    version: '3' services: mcp-server: build: . ports: - "5000:5000" volumes: - ./data:/app/data env_file: - .env restart: unless-stopped
    Luego ejecuta:
    docker-compose up -d

Despliegue de Podman

Para sistemas basados en Red Hat (RHEL, CentOS, Fedora) que utilizan Podman:

  1. Construya la imagen del contenedor:
    podman build -t mcp-server .
  2. Ejecute el contenedor:
    podman run -p 5000:5000 --env-file .env mcp-server
  3. Si necesita almacenamiento persistente:
    mkdir -p ./data podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server
    Nota: El sufijo :Z es importante para los sistemas habilitados para SELinux.
  4. Usando Podman Compose (si está instalado):
    # Install podman-compose if needed pip install podman-compose # Use the same docker-compose.yml file as above podman-compose up -d

Uso del servidor MCP

Puerta de enlace MCP

MCP Gateway es el punto final principal para acceder a todas las herramientas que utilizan el estándar MCP.

Punto final : POST /mcp/gateway

Formato de solicitud :

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

Formato de respuesta :

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

Manifiesto del MCP

El Manifiesto MCP describe todas las herramientas disponibles y sus capacidades.

Punto final : GET /mcp/manifest

Formato de respuesta :

{ "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" } }, ... } }, ... } }

Acceso directo a herramientas

También se puede acceder directamente a cada herramienta a través de sus propios puntos finales API:

  • GitHub: /tool/github/...
  • GitLab: /tool/gitlab/...
  • Google Maps: /tool/gmaps/...
  • Memoria: /tool/memory/...
  • Titiritero: /tool/puppeteer/...

Consulte la documentación de la API de cada herramienta para obtener detalles sobre los puntos finales disponibles.

Documentación de herramientas

Herramienta de GitHub

La herramienta GitHub proporciona acceso a la API de GitHub para repositorios, problemas y búsquedas.

Acciones :

  • listRepos : enumera los repositorios de un usuario u organización
  • getRepo : obtener detalles de un repositorio específico
  • searchRepos : Buscar repositorios
  • getIssues : Obtener problemas para un repositorio
  • createIssue : crea un nuevo problema en un repositorio

Herramienta GitLab

La herramienta GitLab proporciona acceso a la API de GitLab para proyectos, problemas y canalizaciones.

Acciones :

  • listProjects : enumera todos los proyectos accesibles para el usuario autenticado
  • getProject : Obtener detalles de un proyecto específico
  • searchProjects : Busca proyectos en GitLab
  • getIssues : Obtener problemas para un proyecto
  • createIssue : Crea un nuevo problema en un proyecto
  • getPipelines : Obtener pipelines para un proyecto

Herramienta Google Maps

La herramienta Google Maps proporciona acceso a la API de Google Maps para geocodificación, direcciones y búsqueda de lugares.

Acciones :

  • geocode : Convertir una dirección en coordenadas geográficas
  • reverseGeocode : Convierte coordenadas geográficas en una dirección
  • getDirections : obtener direcciones entre dos ubicaciones
  • searchPlaces : busca lugares usando la API de Google Places
  • getPlaceDetails : obtener detalles de un lugar específico

Herramienta de memoria

La herramienta Memoria proporciona un almacén de clave-valor persistente para almacenar y recuperar datos.

Acciones :

  • get : Obtener un elemento de memoria por clave
  • set : crear o actualizar un elemento de memoria
  • delete : eliminar un elemento de memoria mediante una tecla
  • list : enumera todos los elementos de memoria, con filtrado opcional
  • search : Buscar elementos de memoria por valor

Herramienta de titiritero

La herramienta Puppeteer proporciona capacidades de automatización web para tomar capturas de pantalla, generar archivos PDF y extraer contenido de sitios web.

Acciones :

  • screenshot : tomar una captura de pantalla de una página web
  • pdf : Generar un PDF de una página web
  • extract : Extraer contenido de una página web

Contribuyendo

¡Agradecemos sus contribuciones! Aquí le mostramos cómo ampliar el servidor MCP:

Agregar una nueva herramienta

  1. Cree un nuevo archivo en el directorio tools , por ejemplo, tools/newtool_tool.py
  2. Implementar la herramienta con acciones que sigan el mismo patrón que las herramientas existentes
  3. Agregue la herramienta al manifiesto en app.py
  4. Registra el plano de la herramienta en tools/__init__.py

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

Expresiones de gratitud

-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor modular que implementa el estándar Model Context Protocol, proporcionando herramientas para interactuar con GitHub, GitLab, Google Maps, almacenamiento de memoria y automatización web a través de una puerta de enlace unificada.

  1. Architecture
    1. Features
      1. Included Tools
    2. Getting Started
      1. Prerequisites
      2. Installation
      3. Containerized Deployment
    3. Using the MCP Server
      1. MCP Gateway
      2. MCP Manifest
      3. Direct Tool Access
    4. Tool Documentation
      1. GitHub Tool
      2. GitLab Tool
      3. Google Maps Tool
      4. Memory Tool
      5. Puppeteer Tool
    5. Contributing
      1. Adding a New Tool
    6. License
      1. Acknowledgements
        ID: uanzup2jvu