关于 ReviewWebsite.com - MCP Server
这是一个 TypeScript MCP 服务,可通过 ReviewWebsite.com API 管理网站评论并分析 URL。它还提供 CLI,并支持 stdio 和 Streamable HTTP 传输方式。
主要功能
- 01创建、读取、更新和删除评论
- 02将 URL 转换为 Markdown
- 03提取结构化数据和网页内容
- 04查找链接并总结网站
- 05SEO 关键词、流量和反向链接洞察
- 06配置 AI 模型和等待行为
适用场景
- 01通过 AI 助手管理网站评论
- 02将网页转换为 Markdown 或结构化数据
- 03审阅网页内容并总结网站
- 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 等。
可用功能
- 创建、读取、更新和删除网站评论
- 获取可用的 AI 模型
- 使用 AI 将 URL 转换为 Markdown
- 使用 AI 从 URL 提取结构化数据
- 抓取 URL 并提取内容
- 从网站提取链接
- 使用 AI 总结 URL 和网站
- SEO 洞察(关键词建议、关键词难度、流量分析、反向链接)
- 自定义 AI 模型和参数
- 控制等待行为和时长
ReviewWeb.site
- 网站
- API 文档
- API Swagger 配置
- 在此处创建 API 密钥
支持的传输方式
- "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,以测试工具并查看请求和响应详情:
- 运行
npm run dev:server - 在浏览器中打开 http://localhost:5173
- 直接在 UI 中测试工具并查看日志
服务器日志
在开发过程中启用调试日志:
# Set environment variable
DEBUG=true npm run dev:server
# Or configure in ~/.mcp/configs.json
发布 MCP 服务
准备好发布自定义 MCP 服务后:
- 使用你的详细信息更新 package.json
- 使用工具文档更新 README.md
- 构建项目:
npm run build - 测试生产构建:
npm run start:server - 发布到 npm:
npm publish
许可证
{
"reviewwebsite": {
"environments": {
"DEBUG": "true",
"REVIEWWEBSITE_API_KEY": "your-api-key-here"
}
}
}
**注意:**为保持向后兼容,如果找不到 reviewwebsite 键,服务器也会识别使用完整包名称(reviewwebsite-mcp-server)或未限定作用域的包名称(reviewwebsite-mcp-server)配置的情况。不过,建议新配置使用简短的 reviewwebsite 键。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。