这是存档 寻找更好的成功者:https://github.com/ciborro/webskim
Jina MCP服务器
Jina的模型上下文协议(MCP)服务器。AI阅读器和搜索API。
版本1.0.0
适用于Jina的轻量级高效MCP服务器。AI API
- ✅ 9个经过全面测试的MCP工具
- ✅ 完整的阅读器和搜索API支持
- ✅ 高级过滤和提取选项
- ✅ 具有并发请求处理的并行操作
- ✅ 全面的错误处理和记录
- ✅ 与替代实现相比,令牌减少50%
- ✅ 生产准备就绪,文件齐全
文档
概述
此MCP服务器提供了9个与Jina交互的工具。AI API:
读者API工具(5)
primer-获取服务器状态和系统信息read_url-从URL提取内容capture_screenshot_url-捕获网页的屏幕截图guess_datetime_url-从URL检测发布日期parallel_read_url-同时读取多个URL
搜索API工具(4)
search_web-使用高级过滤执行网络搜索search_arxiv-搜索ArXiv的学术论文search_images-搜索图片parallel_search_web-同时执行多个网络搜索
安装和快速启动
克隆并安装
# Clone the repository
git clone https://github.com/ciborro/jina-light-mcp.git
cd jina-mcp-server
# Install dependencies
npm install
# Build TypeScript
npm run build
# Install globally (optional)
npm install -g .验证安装
# Check if installed globally
which jina-mcp-server
# Start the server
npm start您应该看到:
[INFO] Jina MCP Server starting...
[INFO] Registered 9 tools
[OK] Jina MCP Server running on stdio transport有关详细的设置说明,请参阅 快速入门指南.
配置
设置API密钥
创建一个 .env 使用您的Jina API密钥在项目根目录中创建文件:
echo "JINA_API_KEY=your_api_key_here" > .env或编辑 .env 直接文件:
JINA_API_KEY=jina_xxxxxxxxxxxxxxxxxxxxx您可以从获得免费的API密钥https://jina.ai/api
用法
MCP检查员进行本地测试
npm run dev服务器将在stdio传输上启动。在另一个终端中,使用 mcp-cli 或MCP检查员进行测试:
npx @modelcontextprotocol/inspector npx npm start这将在以下位置打开web UI http://localhost:5173 在那里你可以测试每个工具。
Claude桌面集成(本地)
增添 ~/Library/Application\ Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"jina-mcp-local": {
"command": "npm",
"args": ["start"],
"cwd": "/path/to/jina-mcp-server",
"env": {
"JINA_API_KEY": "your_jina_api_key_here"
}
}
}
}替换 /path/to/jina-mcp-server 使用您的实际安装目录(例如。, /Users/yourname/projects/jina-mcp-server 或 /home/yourname/jina-mcp-server).
然后重新启动Claude Desktop。这9个工具将出现在Claude中。
API 参考
工具: primer
获取服务器状态和当前时间。
参数: 无
示例响应:
Server Status: ✅ Online
Version: 1.0.0
Current Time: 11/9/2025, 5:45 PM
Timezone: America/New_York
Jina MCP Server is ready to serve requests.工具: read_url
使用高级提取选项从URL读取和提取文本内容。
参数:
url(字符串,必填):要读取的URLtimeout(数字,可选):请求超时(毫秒)(默认值:30000)locale(字符串,可选):浏览器区域设置(例如,“en-US”、“pl-pl”)instruction(字符串,可选):内容提取的自定义指令targetSelector(string,可选):用于提取特定元素的CSS选择器removeSelector(字符串,可选):要删除的CSS选择器(逗号分隔)waitForSelector(string,可选):提取前要等待的CSS选择器retainImages(字符串,可选):如何处理图像-“全部”、“无”或“markdown”(默认值:“markdown”)retainLinks(字符串,可选):如何处理链接-“全部”、“无”或“markdown”(默认值:“markdown)withImagesSummary(布尔值,可选):包括图像摘要withLinksSummary(布尔值,可选):包括链接摘要proxy(字符串,可选):代理服务器URLuserAgent(string,可选):自定义用户代理字符串jsonSchema(字符串,可选):用于结构化输出的JSON模式
例子:
{
"url": "https://example.com",
"timeout": 30000,
"locale": "en-US",
"retainImages": "markdown",
"retainLinks": "markdown"
}工具: capture_screenshot_url
捕获网页的屏幕截图。
参数:
url(string,必填):截图的URLfullPage(布尔值,可选):捕获整页(true)或第一个屏幕(false,默认)
例子:
{
"url": "https://example.com",
"fullPage": true
}返回:Base64编码的图像数据
工具: guess_datetime_url
从网页中检测发布日期。
参数:
url(字符串,必填):要分析的URL
退货:
publication_date:检测日期(ISO 8601)accuracy:置信水平(高/中/未知)
工具: parallel_read_url
使用高级提取选项同时读取多个URL。
参数:
urls(字符串数组,必填):要读取的URLmaxParallel(数字,可选):最大并发请求数(1-10,默认值:5)timeout(数字,可选):请求超时(毫秒)(默认值:30000)locale(字符串,可选):浏览器区域设置(例如,“en-US”、“pl-pl”)instruction(字符串,可选):内容提取的自定义指令targetSelector(string,可选):用于提取特定元素的CSS选择器retainImages(字符串,可选):如何处理图像-“全部”、“无”或“标记”retainLinks(字符串,可选):如何处理链接-“全部”、“无”或“markdown”
例子:
{
"urls": ["https://example1.com", "https://example2.com"],
"maxParallel": 3,
"retainImages": "markdown",
"retainLinks": "markdown"
}工具: search_web
使用高级过滤和本地化选项执行网络搜索。
参数:
query(字符串,必填):搜索查询(例如“人工智能”)count(number,可选):要返回的结果数(默认值:10,最大值:20)location(字符串,可选):地理位置的国家代码(例如,“US”、“PL”、“GB”)language(字符串,可选):结果的语言代码(例如,“en”、“pl”、“de”)site(string,可选):将结果过滤到特定域(例如“github.com”)page(数字,可选):分页页码(默认值:1)filetype(字符串,可选):按文件类型筛选(例如,“pdf”、“doc”、“xlsx”)intitle(字符串,可选):仅在页面标题中搜索timeout(数字,可选):请求超时(毫秒)(默认值:30000)provider(字符串,可选):搜索提供商(“谷歌”、“必应”等)
示例:
{
"query": "machine learning",
"count": 10,
"language": "en",
"location": "US"
}使用网站筛选器搜索:
{
"query": "neural networks",
"site": "github.com",
"count": 5
}使用文件类型筛选器搜索:
{
"query": "research paper",
"filetype": "pdf",
"language": "en",
"count": 5
}工具: search_arxiv
搜索ArXiv上的学术论文。
参数:
query(字符串,必填):搜索查询maxResults(数量,可选):要返回的最大论文数(默认值:10)
工具: search_images
搜索图像。
参数:
query(字符串,必填):图像搜索查询count(数字,可选):图像数量(默认值:20)
工具: parallel_search_web
使用高级过滤选项同时执行多个网络搜索。
参数:
queries(字符串数组,必填):要搜索的查询maxParallel(数字,可选):最大并发搜索数(1-10,默认值:5)count(number,可选):每个查询的结果数(默认值:10)location(字符串,可选):地理位置的国家代码(例如,“US”、“PL”)language(string,可选):结果的语言代码(例如“en”、“pl”)site(字符串,可选):将结果筛选到特定域page(数字,可选):分页页码filetype(字符串,可选):按文件类型筛选(例如“pdf”)intitle(字符串,可选):仅在页面标题中搜索timeout(数字,可选):请求超时(毫秒)provider(字符串,可选):搜索提供商(“谷歌”、“必应”等)
例子:
{
"queries": ["Jina AI", "Claude AI", "Anthropic"],
"maxParallel": 3,
"language": "en",
"count": 5
}搜索查询运算符
在中使用这些运算符 query 参数 search_web 和 parallel_search_web 过滤结果:
| 操作员 | 示例 | 目的 |
|---|---|---|
site: | site:github.com machine learning | 仅在特定域中搜索 |
intitle: | intitle:"machine learning" tutorial | 仅在页面标题中搜索 |
filetype: | machine learning filetype:pdf | 按文件类型筛选 |
ext: | tutorial ext:docx | 按文件扩展名筛选 |
例子
在GitHub上搜索Python项目:
{
"query": "site:github.com python projects",
"count": 10
}查找PDF研究论文:
{
"query": "deep learning filetype:pdf",
"language": "en",
"count": 5
}组合多个运算符:
{
"query": "site:github.com intitle:tutorial python",
"location": "US",
"language": "en",
"count": 10
}错误处理
API密钥错误
如果API密钥丢失或无效,您将看到:
🔑 Authentication Error: Invalid or missing API key.
Make sure your Jina API key is configured in .env速率限制
如果超过速率限制(API密钥持有者为500 RPM):
⏱️ Rate Limit: Too many requests. Please wait and retry.网络错误
捕获连接和超时错误并报告详细信息。
项目结构
mcp-server/
├── src/
│ ├── index.ts # Main MCP server + tool handlers
│ ├── utils/
│ │ ├── api-client.ts # Jina API client with error handling
│ │ ├── reader.ts # Reader API functions (copied from test-jina-api)
│ │ ├── search.ts # Search API functions (copied from test-jina-api)
│ │ ├── error-handler.ts # MCP error formatting
│ │ └── yaml-formatter.ts # Response formatting utility
│ └── types/
│ └── jina.ts # TypeScript type definitions
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
├── .gitignore # Git ignore patterns
└── .env.example # Example environment file (copy to .env to use)发展
构建
npm run build跑
npm run dev清洁
npm run clean测试
测试阅读器API(无需授权)
curl https://r.jina.ai/https://example.com测试搜索API(需要授权)
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://s.jina.ai/search?q=test"特性和功能
阅读器API功能
- ✅ 从任何URL提取内容
- ✅ 用于目标提取的CSS选择器
- ✅ 多种输出格式(markdown、html、文本)
- ✅ 图像和链接处理控制
- ✅ 自定义用户代理和代理支持
- ✅ 并行URL读取(最多10个并发)
搜索API功能
- ✅ 网络搜索,结果计数高达20
- ✅ 域过滤(站点:操作员)
- ✅ 标题过滤(标题:运算符)
- ✅ 文件类型过滤(文件类型:运算符)
- ✅ 地理定位(gl参数)
- ✅ 语言过滤(hl参数)
- ✅ 分页支持(页面参数)
- ✅ 并行搜索(最多10个并发)
- ✅ 多个搜索提供商(谷歌、必应等)
局限性
- 读卡器API:免费等级(20 RPM无钥匙,500 RPM有钥匙)
- 搜索API:需要有效的API密钥(500 RPM限制)
- 搜索结果:每个查询最多20个结果
- 并行操作:每批最多10个并发请求
- 图像数据:以base64字符串形式返回
- 超时:每次请求最多180秒
速率限制
- 读者API:无钥匙时为20 RPM,有钥匙时为500 RPM
- 搜索API:500转/分,带钥匙
如果达到限制,则执行回退和重试逻辑。
故障排除
“未知的文件扩展名.ts”
确保您已经构建了项目:
npm run build“找不到模块”
重新安装依赖关系:
rm -rf node_modules package-lock.json
npm install服务器无法启动
检查 .env 文件存在并且有效 JINA_API_KEY:
cat .env工具未出现在Claude中
- 重新启动克劳德桌面
- 检查配置JSON语法
- 验证
cwd路径正确
更新日志
版本1.0.0(当前)
- ✅ 9个完全实施的MCP工具
- ✅ 具有高级内容提取功能的完整阅读器API
- ✅ 使用过滤和分页功能完成搜索API
- ✅ 高级过滤参数(站点、语言、文件类型、标题、页面、提供者)
- ✅ 高级提取参数(区域设置、指令、CSS选择器、图像/链接控制)
- ✅ 读取和搜索的并行操作(最多10个并发操作)
- ✅ 全面的错误处理和记录
- ✅ 包含示例和故障排除的完整文档
- ✅ 生产就绪代码
包含什么
✅ 生产就绪功能
- 9 MCP工具 -所有项目均已全面实施和测试
- 读者API -使用高级CSS选择器、图像/链接控制、区域设置支持进行内容提取
- 搜索API -具有过滤和分页功能的Web、图像和ArXiv搜索
- 并行操作 -并发URL读取和搜索(最多10个并发)
- 错误处理 -API、网络和验证错误的全面错误消息
- 速率限制支持 -处理500 RPM(带API键)
- 环境配置 -使用环境变量轻松设置
- 全部文件 -快速入门指南、配置示例和故障排除
性能优势
- 代币减少50% -此实现使用的令牌比其他实现少得多
- 高效使用API -优化请求处理和响应处理
- 快速响应时间 -工具执行中的开销最小
许可证
麻省理工学院
支持
关于Jina的问题。AI API,请参阅:https://docs.jina.ai 有关MCP规范,请参阅:https://modelcontextprotocol.io
