mcpField
R
ReviewWebsite.com - MCP Server

ReviewWebsite.com - MCP Server

本地服务
github.com/mrgoonie开发工具730 周前更新

关于 ReviewWebsite.com - MCP Server

这是一个 TypeScript MCP 服务,可通过 ReviewWebsite.com API 管理网站评论并分析 URL。它还提供 CLI,并支持 stdio 和 Streamable HTTP 传输方式。

主要功能

  1. 01创建、读取、更新和删除评论
  2. 02将 URL 转换为 Markdown
  3. 03提取结构化数据和网页内容
  4. 04查找链接并总结网站
  5. 05SEO 关键词、流量和反向链接洞察
  6. 06配置 AI 模型和等待行为

适用场景

  1. 01通过 AI 助手管理网站评论
  2. 02将网页转换为 Markdown 或结构化数据
  3. 03审阅网页内容并总结网站
  4. 04查看关键词和反向链接指标

MCP 相关

将 ReviewWebsite.com API 操作作为 MCP 工具提供给 AI 客户端,包括评论管理和 URL 分析。支持 stdio 和 Streamable HTTP 传输方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

ReviewWebsite.com - MCP Server

此项目提供一个 Model Context Protocol(MCP)服务,将 AI 助手连接到 ReviewWebsite.com API,以创建和管理网站评论、提取数据、将 URL 转换为 Markdown 等。

ReviewWebsite Server MCP server
可用功能
  • 创建、读取、更新和删除网站评论
  • 获取可用的 AI 模型
  • 使用 AI 将 URL 转换为 Markdown
  • 使用 AI 从 URL 提取结构化数据
  • 抓取 URL 并提取内容
  • 从网站提取链接
  • 使用 AI 总结 URL 和网站
  • SEO 洞察(关键词建议、关键词难度、流量分析、反向链接)
  • 自定义 AI 模型和参数
  • 控制等待行为和时长

ReviewWeb.site

支持的传输方式

  • "stdio" 传输方式 - CLI 使用的默认传输方式
  • "Streamable HTTP" 传输方式 - 适用于 Web 客户端
    • 实现身份验证(使用 Bearer <token> 的 "Authorization" 标头)
  • "sse" 传输方式 (已弃用)
  • 编写测试

使用方法

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"

# Get keyword ideas for SEO
npm run dev:cli -- seo-keyword-ideas --keyword "digital marketing" --country "us" --search-engine "Google" --api-key "your-api-key"

# Check keyword difficulty
npm run dev:cli -- seo-keyword-difficulty --keyword "digital marketing" --country "us" --api-key "your-api-key"

# Analyze website traffic
npm run dev:cli -- seo-traffic --domain-or-url "example.com" --mode "subdomains" --country "us" --api-key "your-api-key"

# Get backlinks for a domain
npm run dev:cli -- seo-backlinks --domain "example.com" --api-key "your-api-key"
MCP 配置

使用 stdio 传输方式进行本地配置:

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

远程 HTTP 配置:

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

HTTP 传输方式的环境变量:

你可以使用以下环境变量配置 HTTP 服务:

  • MCP_HTTP_HOST:要绑定的主机(默认值:127.0.0.1)
  • MCP_HTTP_PORT:要监听的端口(默认值:8080)
  • MCP_HTTP_PATH:端点路径(默认值:/mcp)

源代码概述

什么是 MCP?

Model Context Protocol(MCP)是一种开放标准,使 AI 系统能够安全地结合上下文连接外部工具和数据源。

此样板项目采用清晰的分层架构实现 MCP 规范,可扩展用于为任何 API 或数据源构建自定义 MCP 服务。

为什么使用此样板项目?

  • 可用于生产环境的架构:采用已发布 MCP 服务使用的相同模式,清晰划分 CLI、工具、控制器和服务。

  • 类型安全:使用 TypeScript 构建,提升开发体验、代码质量和可维护性。

  • 可运行示例:包含一个完整实现的 IP 查询工具,展示从 CLI 到 API 集成的完整模式。

  • 测试框架:提供单元测试和 CLI 集成测试所需的测试基础设施,包括覆盖率报告。

  • 开发工具:包含预先配置的 ESLint、Prettier、TypeScript 和其他质量工具,适用于 MCP 服务开发。


开始使用

前提条件

  • Node.js(>=18.x):下载
  • Git:用于版本控制

第 1 步:克隆并安装

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

# Install dependencies
npm install

步骤 2:运行开发服务器

使用 stdio 传输(默认)以开发模式启动服务器:

npm run dev:server

或者使用 Streamable HTTP 传输:

npm run dev:server:http

这会启动支持热重载的 MCP 服务,并启用 MCP Inspector,访问地址为 http://localhost:5173。

⚙️ 代理服务器正在端口 6277 上监听 🔍 MCP Inspector 已启动并运行,访问地址为 http://127.0.0.1:6274

使用 HTTP 传输时,服务器默认可通过 http://127.0.0.1:8080/mcp 访问。


步骤 3:测试 ReviewWebsite API 工具

通过 CLI 使用 ReviewWebsite API 工具:

# 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"

架构

此样板采用清晰的分层架构模式,分离各项职责并提高可维护性。

项目结构

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

各层及其职责

CLI 层(src/cli/*.cli.ts)
  • 用途:定义命令行接口,用于解析参数并调用控制器
  • 命名:文件应命名为 <feature>.cli.ts
  • 测试:在 <feature>.cli.test.ts 中编写 CLI 集成测试
工具层(src/tools/*.tool.ts)
  • 用途:定义 MCP 工具及其供 AI 助手使用的架构和描述
  • 命名:文件应命名为 <feature>.tool.ts,类型定义放在 <feature>.types.ts 中
  • 模式:每个工具都应使用 zod 验证参数
控制器层(src/controllers/*.controller.ts)
  • 用途:实现业务逻辑、处理错误并格式化响应
  • 命名:文件应命名为 <feature>.controller.ts
  • 模式:应返回标准化的 ControllerResponse 对象
服务层(src/services/*.service.ts)
  • 用途:与外部 API 或数据源交互
  • 命名:文件应命名为 <feature>.service.ts
  • 模式:仅进行 API 交互,尽量减少逻辑
工具函数层(src/utils/*.util.ts)
  • 用途:为应用程序提供可共享的功能
  • 主要工具函数:
    • logger.util.ts:结构化日志记录
    • error.util.ts:错误处理和标准化
    • formatter.util.ts:Markdown 格式化辅助函数

开发指南

开发脚本

# 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]

测试

# Run all tests
npm test

# Run specific tests
npm test -- src/path/to/test.ts

# Generate test coverage report
npm run test:coverage

代码质量

# Lint code
npm run lint

# Format code with Prettier
npm run format

# Check types
npm run typecheck

构建自定义工具

按照以下步骤向服务器添加自己的工具:

1. 定义服务层

在 src/services/ 中创建一个新服务,以便与外部 API 交互:

// 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. 创建控制器

在 src/controllers/ 中添加一个控制器以处理业务逻辑:

// 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. 实现 MCP 工具

在 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. 添加 CLI 支持

在 src/cli/ 中创建 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. 注册组件

更新入口点以注册新组件:

// 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);

调试工具

MCP Inspector

打开可视化 MCP Inspector,以测试工具并查看请求和响应详情:

  1. 运行 npm run dev:server
  2. 在浏览器中打开 http://localhost:5173
  3. 直接在 UI 中测试工具并查看日志

服务器日志

在开发过程中启用调试日志:

# Set environment variable
DEBUG=true npm run dev:server

# Or configure in ~/.mcp/configs.json

发布 MCP 服务

准备好发布自定义 MCP 服务后:

  1. 使用你的详细信息更新 package.json
  2. 使用工具文档更新 README.md
  3. 构建项目:npm run build
  4. 测试生产构建:npm run start:server
  5. 发布到 npm:npm publish

许可证

MIT 许可证

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

**注意:**为保持向后兼容,如果找不到 reviewwebsite 键,服务器也会识别使用完整包名称(reviewwebsite-mcp-server)或未限定作用域的包名称(reviewwebsite-mcp-server)配置的情况。不过,建议新配置使用简短的 reviewwebsite 键。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。