Skip to main content
Glama
afshinator

mcp-server-pexels

mcp-server-pexels

一个用于 Pexels 库存照片和视频搜索的 MCP 服务器。针对 LLM 进行了优化。

Pexels 提供免费的库存照片和视频。

功能

  • 照片搜索 — 使用过滤器(查询、方向、尺寸、颜色、区域设置)搜索照片

  • 视频搜索 — 搜索视频,自动选择最接近 1920x1080 的高清 .mp4

  • 获取详情 — 通过 ID 获取照片/视频的完整元数据

  • 智能缓存 — 搜索结果 10 分钟 TTL,ID 查询 60 分钟 TTL

  • 错误处理 — 优雅地处理失败并提供有用的消息(遵循 MCP 最佳实践)

  • 署名 — 每个结果中必须包含摄影师署名

先决条件

快速入门(2 分钟)

1. 获取 API 密钥

pexels.com/api 注册 — 免费,无需信用卡。

2. 构建服务器

npm install && npm run build

3. 添加到 Claude Desktop

打开 ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows),添加:

{
  "mcpServers": {
    "pexels": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-pexels/build/index.js"],
      "env": {
        "PEXELS_API_KEY": "YOUR_PEXELS_API_KEY"
      }
    }
  }
}

Windows 注意: 使用 node.exe 的完整路径或将 Node 添加到 PATH。路径中的正斜杠在 Windows 上同样有效。

4. 重启 Claude Desktop

服务器现在可用,工具包括 pexels_search_photospexels_search_videospexels_get_details

配置

添加到您的 .mcp.jsonclaude_desktop_config.json

{
  "mcpServers": {
    "pexels": {
      "command": "node",
      "args": ["/absolute/path/to/build/index.js"],
      "env": {
        "PEXELS_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

环境

在您的环境中设置 PEXELS_API_KEY。对于本地开发,创建一个 .env 文件:

PEXELS_API_KEY=your_pexels_api_key

开发

npm run dev      # watch mode
npm run inspector # MCP Inspector
npm test          # run tests

工具

工具

描述

pexels_search_photos

按查询搜索照片

pexels_search_videos

搜索视频

pexels_get_details

按 ID 和类型获取详情

架构

  • src/index.ts — 入口点,MCP 服务器设置

  • src/tools/ — 工具实现

  • src/shared/ — 缓存、API 客户端、错误、类型、视频选择器

  • src/utils/ — Zod 验证模式

工程决策

决策

原理

缓存优先架构

Pexels API 允许每小时 200 次请求。缓存(搜索 10 分钟 TTL,ID 查询 60 分钟 TTL)可节省配额,将缓存命中的延迟降低到 <5ms,并展示了对 API 成本的考量 — 这对于代理频繁重新请求相同上下文的生产 AI 系统至关重要。

调用时快速失败

MCP 服务器作为子进程启动 — 启动时不是失败的时机。服务器在启动时发出警告,但在第一次工具调用时通过结构化的 isError: true 优雅地失败。

Zod 验证模式

MCP v2 SDK 需要 z.object() 包装器。在输入到达 API 之前捕获无效输入。

媒体的 resource_link

远程图像和视频作为带有正确 mimeType 的 MCP resource_link 内容块提供。文本块中的 markdown 图像链接保留作为不支持渲染 resource_link 的客户端的后备方案。

纯视频选择

视频选择逻辑隔离在 video-selector.ts 中 — 可独立于工具处理程序进行测试。

硬编码署名

Pexels 服务条款要求。嵌入在每个文本响应中。

兼容性

通过 StdioClientTransport@modelcontextprotocol/sdk v1.29+ 上进行了测试。集成测试套件会启动构建好的服务器,并根据 SDK 的 CallToolResultSchemaContentBlockSchema 验证每个工具调用。

结构化的 JSON 块作为每个成功响应的最后一个内容元素附加,包含类型化数据(id、kind、creatorName、dimensions、URLs)。下游客户端和代理框架可以直接解析此块,而不是通过正则表达式解析 markdown 文本。

未来改进

  • 工具执行遥测 — 添加用于缓存命中/未命中、查询执行时间和错误率的结构化日志记录。这支持生产中 AI 代理的故障排除,并展示了可观测性最佳实践。

  • 指标端点 — 公开计数器(已处理请求、缓存命中率、剩余 API 配额)以进行监控。

  • 自定义 TTL 配置 — 允许用户通过环境变量调整缓存 TTL。

社区贡献

  • 欢迎提交!🌟

许可证

非官方社区项目。与 Pexels 无关联。

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/afshinator/mcp-server-pexels'

If you have feedback or need assistance with the MCP directory API, please join our Discord server