CF-MCP-Server
基于 Model Context Protocol (MCP) 的服务集合,包括图像生成和内容提取等功能
Cloudflare Workers边缘计算图像生成
核心功能
标准化服务接口
基于 MCP 协议的标准化服务接口,便于集成到各种应用中
开箱即用
开箱即用的图像生成 Worker 模块,快速部署到 Cloudflare
可扩展性
支持快速扩展自定义工具和资源,满足不同场景需求
边缘计算优化
边缘计算优化部署,提供低延迟、高可用的服务体验
技术细节
模块构成
mcp-image-generation ├── Cloudflare Worker ├── Flux-1-Schnell 模型 └── 图像生成API (4-8 steps)
- • 支持步骤数范围:4-8 steps
- • 响应格式:Base64 编码的 PNG 图像
- • 部署方式:Cloudflare Workers
API 文档
图像生成接口参数
| 参数 | 类型 | 约束 | 说明 |
|---|---|---|---|
| prompt | string | 1-500字符 | 英文描述提示词 |
| steps | number | 4 ≤ steps ≤ 8 | 生成迭代步数 |
客户端配置
方法一:使用 workers-mcp CLI(推荐)
{
"mcpServers": {
"generateImage": {
"command": "/path/to/workers-mcp",
"args": [
"run",
"generateImage",
"https://mcp-image-generation.turinhub.com",
"/path/to/mcp-image-generation"
],
"env": {}
}
}
}方法二:直接使用 URL(适用于 Claude 等客户端)
{
"mcpServers": {
"mcp-image-generation": {
"command": "https://mcp-image-generation.turinhub.com",
"args": [],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}使用示例
// 客户端代码示例
import { MCPClient } from 'workers-mcp'
// 创建 MCP 客户端
const client = new MCPClient('https://mcp-image-generation.turinhub.com')
// 调用 generateImage 方法
async function generateAndSaveImage(prompt: string, steps: number = 8) {
try {
const imageResponse = await client.call('generateImage', prompt, steps)
// 处理返回的图像
if (imageResponse.ok) {
const imageBlob = await imageResponse.blob()
// 这里可以保存图像或在页面上显示
console.log('图像生成成功!')
return imageBlob
} else {
console.error('生成图像失败:', await imageResponse.text())
}
} catch (error) {
console.error('调用 MCP 服务出错:', error)
}
}
// 使用示例
generateAndSaveImage('A cute cat playing under the sunshine.', 8)内容提取语义搜索Jina AI
Jina API 服务
基于 Jina AI 的内容提取和语义搜索服务,支持从网页提取结构化内容和进行语义搜索
内容提取(reader)
从指定 URL 提取结构化内容,包括标题、正文、关键信息等
接口参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 需要提取内容的网页 URL |
| token | string | 否 | 用于认证的 Bearer token |
| noCache | boolean | 否 | 是否绕过缓存(默认 false) |
语义搜索(search)
调用 Jina Search API 进行语义搜索,返回相关度排序的搜索结果
接口参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 搜索查询语句 |
| token | string | 是 | 用于认证的 Bearer token |
| noContent | boolean | 否 | 是否排除内容仅返回元数据(默认 false) |
客户端配置
方法一:使用 workers-mcp CLI(推荐)
{
"mcpServers": {
"jinaReader": {
"command": "/path/to/workers-mcp",
"args": [
"run",
"jinaReader",
"http://localhost:8787",
"/path/to/mcp-jina-api"
],
"env": {}
}
}
}方法二:直接使用 URL(适用于 Claude 等客户端)
{
"mcpServers": {
"jinaReader": {
"command": "https://mcp-jina-api.turinhub.com",
"args": [],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}内容提取示例
// 客户端调用示例
import { MCPClient } from 'workers-mcp'
const client = new MCPClient('https://mcp-jina-api.turinhub.com')
async function fetchArticle(url: string) {
try {
const response = await client.call('reader', {
url,
noCache: true
})
if (response.ok) {
const article = await response.json()
console.log('提取成功:', article.title)
return {
content: article.content,
highlights: article.keyPoints
}
}
} catch (error) {
console.error('内容提取失败:', error)
}
}
// 调用示例
fetchArticle('https://example.com/news/2024-tech-trends')语义搜索示例
// Search 使用示例
async function searchDocuments(query: string, token: string) {
try {
const response = await client.call('search', {
query,
token,
noContent: false
})
if (response.ok) {
const results = await response.json()
console.log(`找到 ${results.results.length} 条相关结果`)
return results.results.map((doc: any) => ({
title: doc.metadata.title,
score: doc.score,
excerpt: doc.content.substring(0, 100)
}))
}
} catch (error) {
console.error('搜索失败:', error)
}
}
// 搜索示例
searchDocuments('人工智能最新进展', 'your_jina_token_here')高级配置
- • JINA_API_TOKEN: 用于认证的 API token
- • CACHE_TTL: 缓存时间(秒),默认 3600
- • MAX_CONTENT_LENGTH: 最大处理内容长度(字符),默认 100000
故障排除
- • 连接超时:确保 worker 服务正在运行(端口 8787 可用)
- • 认证失败:如需使用 token 认证,请到 Jina AI 申请 API key
- • 内容提取异常:检查目标网页是否包含 robots.txt 限制
- • 缓存问题:设置 noCache: true 强制刷新内容
- • 编码问题:部分网页需指定 charset,可在返回头中查看 Content-Type