MCP服务
多对多MCP服务器+用于AI代理的REST API。29个工具,涵盖网络抓取、SEO分析、代理内存、屏幕截图/PDF生成、域智能、内容提取、多链EVM区块链查询和安全工具包。
______________________________________________________________________
快速开始
使用托管版本(无需设置)
添加到您的MCP客户端配置(Claude Desktop、Cursor、OpenClaw等):
{
"mcpServers": {
"mcp-services": {
"url": "https://mcp.skills.ws/mcp/sse"
}
}
}免费套餐:每天10次通话,无需身份验证。
自托管
npm install -g mcp-services
mcp-services
# -> running on http://localhost:3100______________________________________________________________________
工具(29)
网络爬虫
| 工具 | 端点 | 描述 |
|---|---|---|
scrape | GET /api/scrape | 用标题、列表、链接、代码块、表格清理Markdown的URL |
crawl | GET /api/crawl | 从起始URL抓取网站,跟踪内部链接(深度1-3,最多20页) |
extract | GET /api/extract | 提取结构化数据:JSON-LD、开放图、元标签、标题、链接、图像、表格 |
SEO工具包
| 工具 | 端点 | 描述 |
|---|---|---|
serp | GET /api/serp | 谷歌SERP抓取——前20个结果,人们也问,特色片段,相关搜索 |
onpage_seo | GET /api/onpage-seo | 完整的页面SEO审计,评分(0-100)——标题、元、标题、图像、模式、开放图 |
keywords_suggest | GET /api/keywords | 谷歌自动完成关键字建议,A-Z扩展(100+个想法) |
代理内存
| 工具 | 端点 | 描述 |
|---|---|---|
memory_store | POST /api/memory | 存储内存(键值、命名空间范围、带标签)。关键冲突加剧 |
memory_get | GET /api/memory | 按命名空间+键检索内存 |
memory_search | GET /api/memory/search | 在命名空间中的内存中进行全文搜索 |
memory_list | GET /api/memory/list | 使用分页列出命名空间中的所有内存 |
memory_delete | DELETE /api/memory | 按命名空间+键删除内存 |
屏幕截图和PDF
| 工具 | 端点 | 描述 |
|---|---|---|
screenshot | GET /api/screenshot | 任何URL的PNG/JPEG截图 |
pdf | GET /api/pdf | 生成任何URL的PDF |
pdf2docx | GET /api/pdf2docx | 将PDF(从URL)转换为Word/DOCX——带标题检测的文本提取 |
内容提取
| 工具 | 端点 | 描述 |
|---|---|---|
html2md | GET /api/html2md | 获取URL,剥离导航/广告/脚本,转换为Markdown |
ocr | GET /api/ocr | 通过Tesseract.js OCR从图像URL中提取文本 |
领域智能
| 工具 | 端点 | 描述 |
|---|---|---|
whois | GET /api/whois | WHOIS注册商、创建日期、到期日、名称服务器 |
dns | GET /api/dns | DNS记录-- A, AAAA, MX, NS, TXT, CNAME, SOA,或 ALL |
ssl | GET /api/ssl | SSL证书颁发者、有效期、到期倒计时、指纹 |
区块链(6条EVM链)
| 工具 | 端点 | 描述 |
|---|---|---|
balance | GET /api/chain/balance | 任何地址的本机令牌余额 |
erc20_balance | GET /api/chain/erc20 | ERC20代币余额、符号、小数 |
transaction | GET /api/chain/tx | 交易详情——从、到、价值、气体、状态 |
支持的链: 以太坊、Base、Arbitrum、乐观主义、多边形、Celo
安全工具包
| 工具 | 端点 | 描述 |
|---|---|---|
url_scan | GET /api/security/url-scan | 网络钓鱼和恶意软件检测——VirusTotal+启发式(拼写错误、同形符号、可疑TLD、免费托管) |
wallet_check | GET /api/security/wallet-check | 以太坊钱包风险评估——Etherscan验证、交易模式、OFAC制裁、地址中毒警告 |
contract_scan | GET /api/security/contract-scan | 智能合约蜜罐与风险检测——honeypot.is+源代码分析(薄荷、黑名单、费用操纵、代理) |
email_headers | GET /api/security/email-headers | 电子邮件身份验证检查——通过DNS检查SPF、DKIM、DMARC、MX记录 |
threat_intel | GET /api/security/threat-intel | IOC查找——滥用IPDB+VirusTotal+OTX AlienVault,对IP、域名、URL、哈希值进行加权置信度评分 |
header_audit | GET /api/security/header-audit | 安全标头得分(0-100)——HSTS、CSP、X-Content-Type-Options、X-Frame-Options,引用者策略、权限策略、cookie标志 |
vuln_headers | GET /api/security/vuln-headers | 信息泄漏检测——服务器版本、X-Powered-By、调试标头、CORS配置错误 |
安全工具在没有API密钥的情况下正常降级(仅启发式模式)。可选按键: VT_API_KEY, ABUSEIPDB_API_KEY, ETHERSCAN_API_KEY.
______________________________________________________________________
认证
三层——选择合适的一层:
| 层级 | 方式 | 限制 | 成本 |
|---|---|---|---|
| 自由 | 无需身份验证 | 每个IP每天10次呼叫 | 0美元 |
| API密钥 | X-Api-Key 页眉 | 无限制 | 每月9美元 |
| x402 | X-Payment header | 按通话付费 | $0.005/通话 |
API密钥
通过Stripe订阅以获得无限制的API密钥:
仅用于迁移,查询字符串API键(?apikey=)可以通过以下方式临时重新启用 ALLOW_APIKEY_QUERY=true。此模式已弃用;更喜欢 X-Api-Key.
# 1. Create checkout session
curl -X POST https://mcp.skills.ws/billing/checkout
# Returns: { "url": "https://checkout.stripe.com/..." }
# 2. Complete payment at the Stripe URL
# 3. You'll receive your API key on the success page (shown once only -- save it)
# 4. Use it
curl -H "X-Api-Key: mcp_your_key" "https://mcp.skills.ws/api/whois?domain=example.com"x402每次通话付费
不需要帐户。在Base或Celo上使用USDC或USDT支付。x402兼容代理自动处理付款。
curl -H "X-Payment: " "https://mcp.skills.ws/api/screenshot?url=https://example.com"______________________________________________________________________
REST API
所有工具也都可以作为REST端点使用:
# Web Scraping
curl "https://mcp.skills.ws/api/scrape?url=https://example.com"
curl "https://mcp.skills.ws/api/crawl?url=https://example.com&depth=2&maxPages=10"
curl "https://mcp.skills.ws/api/extract?url=https://example.com"
# SEO
curl "https://mcp.skills.ws/api/serp?keyword=mcp+server"
curl "https://mcp.skills.ws/api/onpage-seo?url=https://example.com"
curl "https://mcp.skills.ws/api/keywords?keyword=ai+agents"
# Memory
curl -X POST "https://mcp.skills.ws/api/memory" \
-H "Content-Type: application/json" \
-d '{"namespace":"my-agent","key":"greeting","value":"Hello world","tags":["demo"]}'
curl "https://mcp.skills.ws/api/memory?namespace=my-agent&key=greeting"
curl "https://mcp.skills.ws/api/memory/search?namespace=my-agent&query=hello"
# Domain Intelligence
curl "https://mcp.skills.ws/api/whois?domain=example.com"
curl "https://mcp.skills.ws/api/dns?domain=example.com&type=ALL"
curl "https://mcp.skills.ws/api/ssl?domain=example.com"
# Content
curl "https://mcp.skills.ws/api/screenshot?url=https://example.com&format=png"
curl "https://mcp.skills.ws/api/pdf?url=https://example.com"
curl "https://mcp.skills.ws/api/pdf2docx?url=https://example.com/document.pdf"
# Blockchain
curl "https://mcp.skills.ws/api/chain/balance?address=0x...&chain=ethereum"
curl "https://mcp.skills.ws/api/chain/erc20?address=0x...&token=0x...&chain=celo"
# Security
curl "https://mcp.skills.ws/api/security/url-scan?url=https://suspicious-site.com"
curl "https://mcp.skills.ws/api/security/wallet-check?address=0x...&chain=ethereum"
curl "https://mcp.skills.ws/api/security/contract-scan?address=0x...&chainId=1"
curl "https://mcp.skills.ws/api/security/email-headers?domain=example.com"
curl "https://mcp.skills.ws/api/security/threat-intel?ioc=8.8.8.8&type=ip"
curl "https://mcp.skills.ws/api/security/header-audit?url=https://example.com"
curl "https://mcp.skills.ws/api/security/vuln-headers?url=https://example.com"______________________________________________________________________
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT | 3100 | 服务器端口 |
CHROMIUM_PATH | /usr/bin/chromium-browser | 通往铬的道路 |
MAX_BROWSERS | 3 | 最大并发浏览器实例数 |
MAX_SSE_SESSIONS | 50 | 最大MCP SSE会话数 |
MAX_SSE_PER_IP | 5 | 每个客户端IP的最大并发SSE会话数 |
SSE_CONNECT_MAX_PER_WINDOW | 30 | 每个窗口每个IP的最大SSE连接尝试数 |
SSE_CONNECT_WINDOW_MS | 60000 | SSE连接速率限制窗口(毫秒) |
SSE_ALLOWED_HOSTS | -- | 逗号分隔的列表 Host 页眉打开 /mcp/sse + /mcp/messages (例如。 mcp.example.com,localhost) |
SSE_ALLOWED_ORIGINS | -- | 可选逗号分隔的列表 Origin header(完整的起源,如 https://app.example.com) |
FREE_DAILY_LIMIT | 10 | 免费等级请求限制 |
FREE_WINDOW_MS | 86400000 | 可用层速率限制窗口(毫秒) |
REDIS_URL | -- | 可选的Redis后端,用于共享/分布式速率限制 |
API_KEYS | -- | 逗号分隔的有效API密钥 |
ALLOW_APIKEY_QUERY | true 在非生产中, false 生产中 | 允许弃用 ?apikey= 迁移过程中的身份验证 |
ADMIN_SECRET | -- | 管理员端点的密码 |
STRIPE_SK | -- | 为Pro订阅提供Stripe API密钥 |
STRIPE_WEBHOOK_SECRET | -- | 条纹式webhook签名密钥 |
STRIPE_WEBHOOK_IP_ALLOWLIST | -- | webhook源IP的可选CSV分配列表 |
CHECKOUT_LIMIT_PER_HOUR | 5 | 每个IP条签出创建限制 |
X402_PRICE_USD | 0.005 | x402每次通话价格 |
X402_RECEIVER | -- | x402付款接收方地址 |
X402_MAX_TX_AGE_SECONDS | 86400 | 最大可接受付款交易期限(秒)(拒绝过期交易) |
X402_TX_CACHE_FILE | ./data/x402-tx-cache.json | 已用x402 tx哈希的持久重放保护缓存 |
X402_TEST_MODE | 0 | 设置为 1 仅用于本地/离线测试;在生产中被忽视 |
MEMORY_DB_PATH | ./data/memory.db | SQLite内存数据库路径 |
VT_API_KEY | -- | VirusTotal API密钥(免费:4/min,500/天) |
ABUSEIPDB_API_KEY | -- | AbuseIPDB API密钥(免费:1000/天) |
ETHERSCAN_API_KEY | -- | Etherscan API密钥(免费:5/sec) |
TRUST_PROXY | false | 快速信任代理设置(false, true,跳数就像 1,或子网名称/CIDR,如 loopback/10.0.0.0/8) |
______________________________________________________________________
反向代理和客户端IP配置
mcp-services 默认为 TRUST_PROXY=false,这意味着应用程序会忽略 X-Forwarded-For 并使用直接套接字对等IP进行速率限制和空闲层内存命名空间。
启用 TRUST_PROXY 只有当您的部署实际上位于重写转发标头的可信反向代理/负载均衡器之后时。常见选项:
TRUST_PROXY=1当Node.js前面只有一个受信任的代理时TRUST_PROXY=loopback用于本地代理设置TRUST_PROXY=(或逗号分隔的值)用于显式可信代理范围
启用信任代理后,Express将导出 req.ip 从 X-Forwarded-For 根据该信任政策。确保您的边缘代理:
- 附加/设置有效
X-Forwarded-For链条 - 防止直接不受信任的客户端欺骗转发标头
- 将真实客户端地址转发为中最左侧的IP
X-Forwarded-For
如果 X-Forwarded-For 存在时 TRUST_PROXY=false,服务器会记录一个防御警告并忽略该标头。
对于生产,设置 SSE_ALLOWED_HOSTS 和 SSE_ALLOWED_ORIGINS 严格、明确的值(仅限您的公共MCP域和受信任的应用程序来源)。避免通配符或宽泛的内部主机列表。
部署强化检查表(推荐)
- 集
NODE_ENV=production - 保持
ALLOW_APIKEY_QUERY=false(仅限标头身份验证) - 配置
TRUST_PROXY正确设置网络路径(不要盲目设置true) - 设置严格
SSE_ALLOWED_HOSTS和SSE_ALLOWED_ORIGINS - 使用
REDIS_URL用于多实例部署中的共享速率限制 - 旋转
ADMIN_SECRET定期使用条纹键 - 保持
X402_TEST_MODE=0生产中(由服务器强制执行) - 坚持
KEYS_FILE,MEMORY_DB_PATH,以及X402_TX_CACHE_FILE论耐用存储 - 跑
npm auditCI和失败建立在高/关键漏洞之上
生产环境快速入门
cp .env.production.example .env
# then edit .env values for your domain, proxy topology, redis and secrets条纹webhook边缘允许列表自动同步(nginx)
# Generate CIDR allowlist include from Stripe source and reload nginx
scripts/sync-stripe-webhook-ips.sh \
--out /etc/nginx/snippets/stripe-webhook-allowlist.conf \
--reload "systemctl reload nginx"看 deploy/nginx/stripe-webhook.conf.example 对于webhook位置块。
______________________________________________________________________
安全
- SSRF保护:URL验证+DNS预解析+私有IP阻止+Puppeter请求拦截
- 域验证:正则表达式allowlist防止命令注入
- 输入净化:按IOC类型进行格式验证、地址格式检查、链分配列表
- 每个身份验证层的内存命名空间隔离(API密钥哈希、IP或x402)
- 免费套餐的价格限制
- 资源限制:最大并发浏览器数、SSE会话数、PDF大小上限、5MB响应正文限制
- 外部API获取的响应大小限制
______________________________________________________________________
建筑
+------------------------------------+
| Express Server |
| |
| +---------+ +--------------+ |
MCP SSE -------> | MCP SDK | | Auth Layer | |
| | (SSE) | | free/key/x402 | |
| +---------+ +--------------+ |
| |
REST API ------> +--------------------------------+ |
| | 29 Tool Handlers | |
| | scrape | crawl | extract | |
| | serp | onpage_seo | keywords | |
| | memory (5) | screenshot | pdf | |
| | html2md | ocr | whois | dns | |
| | ssl | balance | erc20 | tx | |
| | url_scan | wallet_check | |
| | contract_scan | email_headers | |
| | threat_intel | header_audit | |
| | vuln_headers | |
| +--------------------------------+ |
| | | |
| +-----+----+ +-----+----------+ |
| | Puppeteer| | viem (6 RPCs) | |
| | Chromium | | whois-json | |
| | | | dns/promises | |
| | | | security.js | |
| +----------+ +-----------------+ |
| |
Stripe --------> +--------------------------------+ |
Webhooks | | Billing (stripe.js) | |
| | checkout -> key provisioning | |
| +--------------------------------+ |
+------------------------------------+堆栈
- 运行时间: Node.js 22+Express
- 浏览器: Puppeter(Chromium)-截图、PDF、OCR、html2md
- 块链: viem——通过公共RPC实现6个EVM链
- 安全: VirusTotal、AbuseIPDB、Etherscan、Honeypot.is、OTX AlienVault+启发式
- 付款: Stripe(订阅),x402协议(Base/Celo上的稳定币)
- MCP:
@modelcontextprotocol/sdk使用SSE运输 - 群众或部队的集合: 阿莱夫云 (分散计算)
许可证
麻省理工学院-- 提交媒体SARL
