使用说明
MCP服务
多对多MCP服务器+用于AI代理的REST API。29个工具,涵盖网络抓取、SEO分析、代理内存、屏幕截图/PDF生成、域智能、内容提取、多链EVM区块链查询和安全工具包。
直播: mcp.skills.ws | 文件: llms.txt | npm: npm install -g mcp-services
快速开始
使用托管版本(无需设置)
添加到您的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: <base64-encoded-json>" "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=<cidr>(或逗号分隔的值)用于显式可信代理范围
启用信任代理后,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