ReviewWebsite MCP Server

MIT License
27
2

Integrations

  • Connects to the ReviewWebsite.com API hosted on GitHub, enabling AI assistants to create, read, update, and delete website reviews, as well as extract and process website content.

  • Converts URLs to Markdown format using AI models, allowing for structured representation of website content that can be used in reviews and other applications.

  • Provides access to the ReviewWebsite.com API, allowing AI assistants to create and manage website reviews, extract data from URLs, convert URLs to markdown, scrape content, extract links, and summarize websites.

ReviewWebsite.com - Servidor MCP

Este proyecto proporciona un servidor de Protocolo de Contexto de Modelo (MCP) que conecta a los asistentes de IA con la API de ReviewWebsite.com para crear y administrar reseñas de sitios web, extraer datos, convertir URL a Markdown y más.

Funciones disponibles

  • [x] Crear, leer, actualizar y eliminar reseñas de sitios web
  • [x] Obtenga modelos de IA disponibles
  • [x] Convertir URL a Markdown usando IA
  • [x] Extraer datos estructurados de URL mediante IA
  • [x] Extraer URL y contenido
  • [x] Extraer enlaces de sitios web
  • [x] Resumir URL y sitios web usando IA
  • [x] Personalizar modelos y parámetros de IA
  • [x] Controlar el comportamiento y el tiempo de espera

ReviewWeb.site

Transportes soportados

  • [x] Transporte "stdio" : transporte predeterminado para el uso de CLI
  • [x] Transporte"HTTP transmitible" : para clientes web
    • [ ] Implementar autenticación (encabezados "Autorización" con Bearer <token> )
  • [ ] transporte "sse" (Obsoleto)
  • [ ] Escribir pruebas

Cómo utilizar

CLI

# Get available AI models npm run dev:cli -- get-ai-models --api-key "your-api-key" # Create a new review npm run dev:cli -- create-review --url "https://example.com" --instructions "Review this website" --api-key "your-api-key" # Get a specific review by ID npm run dev:cli -- get-review --review-id "review-id" --api-key "your-api-key" # List all reviews npm run dev:cli -- list-reviews --page 1 --limit 10 --api-key "your-api-key" # Update a review npm run dev:cli -- update-review --review-id "review-id" --url "https://example.com" --instructions "Updated instructions" --api-key "your-api-key" # Delete a review npm run dev:cli -- delete-review --review-id "review-id" --api-key "your-api-key" # Convert URL to Markdown npm run dev:cli -- convert-to-markdown --url "https://example.com" --model "gpt-4o" --api-key "your-api-key" # Extract structured data from URL npm run dev:cli -- extract-data --url "https://example.com" --instructions "Extract product information" --api-key "your-api-key" # Scrape URL npm run dev:cli -- scrape-url --url "https://example.com" --api-key "your-api-key" # Extract links from URL npm run dev:cli -- extract-links --url "https://example.com" --type "all" --api-key "your-api-key" # Summarize URL npm run dev:cli -- summarize-url --url "https://example.com" --model "gpt-4o" --api-key "your-api-key"

Configuración de MCP

Para la configuración local con transporte stdio:

{ "mcpServers": { "reviewwebsite": { "command": "node", "args": ["/path/to/reviewwebsite-mcp-server/dist/index.js"], "transportType": "stdio" } } }

Para la configuración HTTP remota:

{ "mcpServers": { "reviewwebsite": { "type": "http", "url": "http://localhost:8080/mcp" } } }

Variables de entorno para el transporte HTTP:

Puede configurar el servidor HTTP utilizando estas variables de entorno:

  • MCP_HTTP_HOST : El host al que vincularse (predeterminado: 127.0.0.1 )
  • MCP_HTTP_PORT : El puerto para escuchar (predeterminado: 8080 )
  • MCP_HTTP_PATH : La ruta del punto final (predeterminado: /mcp )

Descripción general del código fuente

¿Qué es MCP?

El Protocolo de Contexto de Modelo (MCP) es un estándar abierto que permite a los sistemas de IA conectarse de forma segura y contextual con herramientas y fuentes de datos externas.

Esta plantilla implementa la especificación MCP con una arquitectura limpia y en capas que puede ampliarse para crear servidores MCP personalizados para cualquier API o fuente de datos.

¿Por qué utilizar este texto estándar?

  • Arquitectura lista para producción : sigue el mismo patrón utilizado en los servidores MCP publicados, con una clara separación entre CLI, herramientas, controladores y servicios.
  • Seguridad de tipos : creado con TypeScript para mejorar la experiencia del desarrollador, la calidad del código y la facilidad de mantenimiento.
  • Ejemplo de trabajo : incluye una herramienta de búsqueda de IP completamente implementada que demuestra el patrón completo desde la CLI hasta la integración de API.
  • Marco de pruebas : incluye infraestructura de pruebas para pruebas de integración unitarias y CLI, incluidos informes de cobertura.
  • Herramientas de desarrollo : incluye ESLint, Prettier, TypeScript y otras herramientas de calidad preconfiguradas para el desarrollo de servidores MCP.

Empezando

Prerrequisitos

  • Node.js (>=18.x): Descargar
  • Git : para el control de versiones

Paso 1: Clonar e instalar

# Clone the repository git clone https://github.com/mrgoonie/reviewwebsite-mcp-server.git cd reviewwebsite-mcp-server # Install dependencies npm install

Paso 2: Ejecutar el servidor de desarrollo

Inicie el servidor en modo de desarrollo con el transporte stdio (predeterminado):

npm run dev:server

O con el transporte HTTP Streamable:

npm run dev:server:http

Esto inicia el servidor MCP con recarga activa y habilita el Inspector MCP en http://localhost:5173 .

⚙️ El servidor proxy escucha en el puerto 6277 🔍 MCP Inspector está en funcionamiento en http://127.0.0.1:6274

Al utilizar el transporte HTTP, el servidor estará disponible en http://127.0.0.1:8080/mcp de forma predeterminada.


Paso 3: Pruebe las herramientas de la API de ReviewWebsite

Utilice las herramientas de la API de ReviewWebsite a través de CLI:

# Get available AI models npm run dev:cli -- get-ai-models --api-key "your-api-key" # Create a review npm run dev:cli -- create-review --url "https://example.com" --instructions "Review this website" --api-key "your-api-key" # Convert URL to Markdown npm run dev:cli -- convert-to-markdown --url "https://example.com" --model "gpt-4o" --api-key "your-api-key"

Arquitectura

Este modelo sigue un patrón de arquitectura limpio y en capas que separa las preocupaciones y promueve la capacidad de mantenimiento.

Estructura del proyecto

src/ ├── cli/ # Command-line interfaces ├── controllers/ # Business logic ├── resources/ # MCP resources: expose data and content from your servers to LLMs ├── services/ # External API interactions ├── tools/ # MCP tool definitions ├── types/ # Type definitions ├── utils/ # Shared utilities └── index.ts # Entry point

Capas y responsabilidades

Capa CLI ( src/cli/*.cli.ts )

  • Propósito : Definir interfaces de línea de comandos que analizan argumentos y llaman a controladores.
  • Nombre : Los archivos deben llamarse <feature>.cli.ts
  • Pruebas : pruebas de integración de CLI en <feature>.cli.test.ts

Capa de herramientas ( src/tools/*.tool.ts )

  • Propósito : Definir herramientas MCP con esquemas y descripciones para asistentes de IA.
  • Nombre : Los archivos deben llamarse <feature>.tool.ts con tipos en <feature>.types.ts
  • Patrón : Cada herramienta debe usar zod para la validación de argumentos

Capa de controladores ( src/controllers/*.controller.ts )

  • Propósito : Implementar lógica empresarial, manejar errores y dar formato a respuestas.
  • Nombre : Los archivos deben llamarse <feature>.controller.ts
  • Patrón : Debe devolver objetos ControllerResponse estandarizados

Capa de servicios ( src/services/*.service.ts )

  • Propósito : Interactuar con API externas o fuentes de datos
  • Nombre : Los archivos deben llamarse <feature>.service.ts
  • Patrón : Interacciones de API puras con lógica mínima

Capa de utilidades ( src/utils/*.util.ts )

  • Propósito : Proporcionar funcionalidad compartida en toda la aplicación.
  • Utilidades clave :
    • logger.util.ts : Registro estructurado
    • error.util.ts : Manejo de errores y estandarización
    • formatter.util.ts : ayudantes de formato Markdown

Guía de desarrollo

Scripts de desarrollo

# Start server in development mode (hot-reload & inspector) npm run dev:server # Run CLI in development mode npm run dev:cli -- [command] [args] # Build the project npm run build # Start server in production mode npm run start:server # Run CLI in production mode npm run start:cli -- [command] [args]

Pruebas

# Run all tests npm test # Run specific tests npm test -- src/path/to/test.ts # Generate test coverage report npm run test:coverage

Calidad del código

# Lint code npm run lint # Format code with Prettier npm run format # Check types npm run typecheck

Creación de herramientas personalizadas

Siga estos pasos para agregar sus propias herramientas al servidor:

1. Definir la capa de servicio

Cree un nuevo servicio en src/services/ para interactuar con su API externa:

// src/services/example.service.ts import { Logger } from '../utils/logger.util.js'; const logger = Logger.forContext('services/example.service.ts'); export async function getData(param: string): Promise<any> { logger.debug('Getting data', { param }); // API interaction code here return { result: 'example data' }; }

2. Crear controlador

Agregue un controlador en src/controllers/ para manejar la lógica empresarial:

// src/controllers/example.controller.ts import { Logger } from '../utils/logger.util.js'; import * as exampleService from '../services/example.service.js'; import { formatMarkdown } from '../utils/formatter.util.js'; import { handleControllerError } from '../utils/error-handler.util.js'; import { ControllerResponse } from '../types/common.types.js'; const logger = Logger.forContext('controllers/example.controller.ts'); export interface GetDataOptions { param?: string; } export async function getData( options: GetDataOptions = {}, ): Promise<ControllerResponse> { try { logger.debug('Getting data with options', options); const data = await exampleService.getData(options.param || 'default'); const content = formatMarkdown(data); return { content }; } catch (error) { throw handleControllerError(error, { entityType: 'ExampleData', operation: 'getData', source: 'controllers/example.controller.ts', }); } }

3. Implementar la herramienta MCP

Crea una definición de herramienta en src/tools/ :

// src/tools/example.tool.ts import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { z } from 'zod'; import { Logger } from '../utils/logger.util.js'; import { formatErrorForMcpTool } from '../utils/error.util.js'; import * as exampleController from '../controllers/example.controller.js'; const logger = Logger.forContext('tools/example.tool.ts'); const GetDataArgs = z.object({ param: z.string().optional().describe('Optional parameter'), }); type GetDataArgsType = z.infer<typeof GetDataArgs>; async function handleGetData(args: GetDataArgsType) { try { logger.debug('Tool get_data called', args); const result = await exampleController.getData({ param: args.param, }); return { content: [{ type: 'text' as const, text: result.content }], }; } catch (error) { logger.error('Tool get_data failed', error); return formatErrorForMcpTool(error); } } export function register(server: McpServer) { server.tool( 'get_data', `Gets data from the example API, optionally using \`param\`. Use this to fetch example data. Returns formatted data as Markdown.`, GetDataArgs.shape, handleGetData, ); }

4. Agregar compatibilidad con CLI

Cree un comando CLI en src/cli/ :

// src/cli/example.cli.ts import { program } from 'commander'; import { Logger } from '../utils/logger.util.js'; import * as exampleController from '../controllers/example.controller.js'; import { handleCliError } from '../utils/error-handler.util.js'; const logger = Logger.forContext('cli/example.cli.ts'); program .command('get-data') .description('Get example data') .option('--param <value>', 'Optional parameter') .action(async (options) => { try { logger.debug('CLI get-data called', options); const result = await exampleController.getData({ param: options.param, }); console.log(result.content); } catch (error) { handleCliError(error); } });

5. Registrar componentes

Actualice los puntos de entrada para registrar sus nuevos componentes:

// In src/cli/index.ts import '../cli/example.cli.js'; // In src/index.ts (for the tool) import exampleTool from './tools/example.tool.js'; // Then in registerTools function: exampleTool.register(server);

Herramientas de depuración

Inspector de MCP

Acceda al Inspector visual de MCP para probar sus herramientas y ver los detalles de la solicitud/respuesta:

  1. Ejecutar npm run dev:server
  2. Abra http://localhost:5173 en su navegador
  3. Pruebe sus herramientas y vea los registros directamente en la interfaz de usuario

Registros del servidor

Habilitar registros de depuración para el desarrollo:

# Set environment variable DEBUG=true npm run dev:server # Or configure in ~/.mcp/configs.json

Publicación de su servidor MCP

Cuando esté listo para publicar su servidor MCP personalizado:

  1. Actualice package.json con sus datos
  2. Actualice README.md con la documentación de su herramienta
  3. Construya el proyecto: npm run build
  4. Pruebe la compilación de producción: npm run start:server
  5. Publicar en npm: npm publish

Licencia

Licencia MIT

{ "reviewwebsite": { "environments": { "DEBUG": "true", "REVIEWWEBSITE_API_KEY": "your-api-key-here" } } }

Nota: Para compatibilidad con versiones anteriores, el servidor también reconocerá las configuraciones con el nombre completo del paquete ( reviewwebsite-mcp-server ) o con el nombre sin ámbito ( reviewwebsite-mcp-server ) si no se encuentra la clave reviewwebsite . Sin embargo, se recomienda usar la clave reviewwebsite corta para las nuevas configuraciones.

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    An MCP server that helps AI assistants access text content from websites that implement bot detection, bridging the gap between what you can see in your browser and what the AI can access.
    Last updated -
    1
    Python
    Apache 2.0
  • -
    security
    -
    license
    -
    quality
    A specialized MCP server that enables AI agents to interact with Reddit, including reading posts, creating content, and managing subreddit configurations.
    Last updated -
    31
    1
    TypeScript
  • -
    security
    F
    license
    -
    quality
    A MCP server that allows AI assistants to interact with the browser, including getting page content as markdown, modifying page styles, and searching browser history.
    Last updated -
    5
    TypeScript
  • -
    security
    F
    license
    -
    quality
    An MCP server that crawls API documentation websites and exposes their content to AI models, enabling them to search, browse, and reference API specifications.
    Last updated -
    Python

View all related MCP servers

ID: hww6ztx29c