关于 🌀 Clarifai MCP Server (unofficial)
这是一款非官方的本地 MCP 服务,用于连接 MCP 客户端与 Clarifai API,提供图像生成、推理和可搜索的只读资源,并避免大量二进制结果占用大模型上下文。
主要功能
- 01根据文本提示词生成图像
- 02对本地图像或 URL 执行推理
- 03上传本地文件至 Clarifai
- 04按文本或图像搜索输入
- 05列出并读取 Clarifai 资源
适用场景
- 01根据 AI Agent 提示生成图像
- 02描述或分析本地图像
- 03按文本或图像相似度查找 Clarifai 输入
MCP 相关
通过 stdio 将 Clarifai 操作作为 MCP 工具和只读资源提供。客户端可生成图像、执行推理、搜索以及列出或读取 Clarifai 实体。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🌀 Clarifai MCP 服务(非官方)
这个黑客日项目提供了一个模型上下文协议(MCP)服务,作为通往 Clarifai API 的桥梁,旨在用户的机器上运行(即本地运行)。它允许 MCP 客户端(例如 IDE 扩展)通过标准 MCP 请求与 Clarifai 交互,例如进行图像生成和推理,同时避免繁重的二进制结果占用过多大模型上下文。
配置 MCP 服务,实现无缝交互
通常,MCP 客户端框架会自动运行此服务(例如通过 VS Code 中的设置)。配置通常包括指定已构建二进制文件的路径,以及任何必需的命令行参数,例如 Clarifai PAT。你需要安装 Go(版本 1.23 或更高版本)
cd ~
git clone [email protected]:tot-ra/clarifai-mcp-server-local.git
cd clarifai-mcp-server-local
go mod tidy
构建二进制文件:
使用 go build 命令,指定 cmd/server 目录中的主包。根据需要指定输出路径和目标架构(例如,适用于 macOS ARM):
# For macOS ARM
make build
# For Linux AMD64
# GOOS=linux GOARCH=amd64 go build -o ./mcp_binary ./...
# For Windows AMD64
# GOOS=windows GOARCH=amd64 go build -o ./mcp_binary.exe ./...
这将在项目根目录中创建一个名为 mcp_binary 的可执行文件(Windows 上则为 mcp_binary.exe)。
示例 MCP 设置项(cline_mcp_settings.json),例如用于 Cline:
{
"mcpServers": {
"clarifai": {
"command": "~/clarifai-mcp-server-local/mcp_binary",
"args": [
"--pat", "YOUR_CLARIFAI_PAT",
"--output-path", "~/Desktop/",
"--default-user-id", "your_user_id",
"--default-app-id", "your_app_id",
],
}
}
}
将 YOUR_CLARIFAI_PAT 替换为你的 Clarifai PAT 令牌。
测试
已为多个程序包添加单元测试。若要运行所有测试、绕过缓存并查看详细输出(包括各个测试的名称和状态):
cd clarifai-mcp-server-local
go test -v -count=1 ./...
功能
此服务目前提供以下 MCP 功能:
工具
-
upload_file:将本地文件作为输入上传到 Clarifai。- 输入:
filepath(必填,本地文件的绝对路径)、user_id、app_id(可选)。 - 输出:上传成功后显示文本确认信息和 API 响应详情。
- 输入:
-
generate_image:使用指定的或默认的 Clarifai 文本生成图像模型,根据文本提示词生成图像。- 输入:
text_prompt(必填)、model_id、user_id、app_id(可选)。 - 输出:Base64 编码的图像数据(适用于小图像),或文件路径(适用于保存到配置的
--output-path的大图像)。
- 输入:
例如,给定用户提示词,AI Agent 可以自动调用图像生成工具,并将结果放到桌面上
使用 Clarifai 生成 3 张猫咪图像


clarifai_image_by_path:使用指定的或默认的 Clarifai 模型,对本地图像文件进行推理。- 输入:
filepath(必填,本地图像的路径)、model_id、user_id、app_id(可选)。 - 输出:推理结果的文本描述(例如,检测到的概念)。
- 输入:
请对 my_source_folder/images/ 中的图像使用 clarifai
-
clarifai_image_by_url:使用指定的或默认的 Clarifai 模型,对图像 URL 进行推理。- 输入:
image_url(必填)、model_id、user_id、app_id(可选)。 - 输出:推理结果的文本描述(例如,检测到的概念)。
- 输入:
-
search_by_text:使用 Clarifai 的 PostInputSearches,根据文本查询搜索输入。- 输入:
query(必填,文本查询字符串)、user_id、app_id、page、per_page(可选)。 - 输出:包含搜索结果(匹配项)的 JSON 字符串。
- 输入:
-
search_by_filepath:使用 Clarifai 的 PostInputSearches,根据与本地图像文件的相似度搜索输入。- 输入:
filepath(必填,本地图像文件的绝对路径)、user_id、app_id、page、per_page(可选)。 - 输出:包含搜索结果(匹配项)的 JSON 字符串。
- 输入:
-
search_by_url:使用 Clarifai 的 PostInputSearches,根据与图像 URL 的相似度搜索输入。- 输入:
image_url(必填,图像的 URL)、user_id、app_id、page、per_page(可选)。 - 输出:包含搜索结果(匹配项)的 JSON 字符串。
- 输入:
### 资源(只读)
服务会将各种 Clarifai 实体作为只读 MCP 资源公开,客户端可以使用标准 MCP 方法(resources/list、resources/read)列出、搜索和读取数据。创建、更新或删除实体等操作通过 MCP 工具处理。
-
**资源 URI 方案:**资源遵循一致的 URI 结构:
clarifai://{user_id}/{app_id}/{resource_type}[/{resource_id}][?query_params]模型版本或数据集版本等嵌套资源遵循以下模式:clarifai://{user_id}/{app_id}/models/{model_id}/versions[/{version_id}]clarifai://{user_id}/{app_id}/datasets/{dataset_id}/versions[/{version_id}]clarifai://{user_id}/{app_id}/inputs/{input_id}/annotations -
**受支持的资源模板(
resources/templates/list):**服务提供用于发现可用资源的模板:- **输入:**列出、搜索、获取
clarifai://{user_id}/{app_id}/inputsclarifai://{user_id}/{app_id}/inputs?query={search_term}clarifai://{user_id}/{app_id}/inputs/{input_id}
- **注释:**列出、搜索、获取、按输入列出
clarifai://{user_id}/{app_id}/annotationsclarifai://{user_id}/{app_id}/annotations?query={search_term}clarifai://{user_id}/{app_id}/annotations/{annotation_id}clarifai://{user_id}/{app_id}/inputs/{input_id}/annotations
- **模型:**列出、搜索、获取
clarifai://{user_id}/{app_id}/modelsclarifai://{user_id}/{app_id}/models?query={search_term}clarifai://{user_id}/{app_id}/models/{model_id}
- **模型版本:**列出、获取
clarifai://{user_id}/{app_id}/models/{model_id}/versionsclarifai://{user_id}/{app_id}/models/{model_id}/versions/{version_id}
- **数据集:**列出、获取
clarifai://{user_id}/{app_id}/datasetsclarifai://{user_id}/{app_id}/datasets/{dataset_id}
- **数据集版本:**列出(尚未实现读取特定版本)
clarifai://{user_id}/{app_id}/datasets/{dataset_id}/versions
- **输入:**列出、搜索、获取
-
列出(
resources/list):- 使用模板 URI(例如
clarifai://.../inputs)列出该类型的资源。支持通过cursor参数分页(该参数表示页码)。 - 使用搜索模板 URI(例如
clarifai://.../inputs?query=cats)搜索资源。 - 如果调用时未提供 URI,则默认列出由
--default-user-id和--default-app-id标志(如果已设置)所定义上下文中的输入。
- 使用模板 URI(例如
-
读取(
resources/read):- 使用特定资源 URI(例如
clarifai://.../models/{model_id})获取对应 Clarifai 对象(输入、模型、注释等)的完整详情。 - 结果以 JSON 字符串的形式返回在资源内容的
text字段中。
- 使用特定资源 URI(例如
架构概览
服务通过标准输入(stdin)监听 JSON-RPC 2.0 请求,并通过标准输出(stdout)发送响应。这样可以与 MCP 客户端框架无缝集成。
组件结构:
代码库由几个关键软件包组成:
graph TD
subgraph "clarifai-mcp-server-local"
direction LR
CmdServer["cmd/server (main)"] --> MCP["mcp (JSON-RPC/stdio)"]
CmdServer --> Config["config (Flags)"]
CmdServer --> Tools["tools (Handlers)"]
CmdServer --> Resources["resources (Handlers)"]
MCP --> Tools
MCP --> Resources
Tools --> ClarifaiClient["clarifai (gRPC Client)"]
Tools --> Utils["utils (Filesystem)"]
Tools --> Config
Resources --> ClarifaiClient
Resources --> Config
ClarifaiClient --> Config
end
subgraph External
MCPClient["MCP Client (e.g., IDE)"] -- stdio --> MCP
ClarifaiClient -- gRPC --> ClarifaiAPI["Clarifai API"]
end
style MCPClient fill:#f9f,stroke:#333,stroke-width:2px
style ClarifaiAPI fill:#ccf,stroke:#333,stroke-width:2px
cmd/server:应用程序的主入口,负责初始化配置、设置 MCP 服务实例并注册处理程序。config:负责解析命令行标志并存储配置值(例如 PAT、输出路径)。mcp:通过标准输入输出管理核心 MCP 通信循环,解析传入的 JSON-RPC 请求,并根据方法(tools/call、resources/list、resources/read等)将其分发给相应的处理程序。clarifai:包含用于与 Clarifai API 交互的 gRPC 客户端逻辑,包括身份验证(向请求添加 PAT)和发起 API 调用。tools:实现各个公开 MCP 工具(generate_image、clarifai_image_by_path、clarifai_image_by_url)的逻辑。这些处理程序使用clarifai客户端执行操作。resources:实现处理 MCP 资源请求(resources/list、resources/read)的逻辑。这些处理程序使用clarifai客户端获取数据。utils:提供实用函数,例如将生成的图像保存到本地文件系统。
请求流程:
以下时序图展示了处理工具和资源请求的典型流程:
sequenceDiagram
participant Client as MCP Client (e.g., IDE)
participant Server as clarifai-mcp-server (Go)
participant Clarifai as Clarifai API (gRPC)
participant Filesystem as Local Filesystem
Client->>+Server: JSON-RPC Request (stdio)
Server->>Server: Parse JSON-RPC Request (mcp)
alt Tool Call (e.g., generate_image, clarifai_image_by_path, clarifai_image_by_url)
Server->>Server: Route to Tool Handler (tools)
Server->>Server: Extract tool parameters
Server->>Server: Create gRPC Request (clarifai)
Server->>Server: Add PAT to gRPC Context Metadata (clarifai)
Server->>+Clarifai: Call Clarifai API (gRPC)
Clarifai-->>-Server: gRPC Response (Data/Error)
alt generate_image and image is large
Server->>+Filesystem: Save image to disk (utils, config)
Filesystem-->>-Server: File path
Server->>Server: Format JSON-RPC Response (with file path) (mcp)
else Tool Response (or small image)
Server->>Server: Format JSON-RPC Response (with data/results) (mcp)
end
else Resource Call (e.g., resources/list, resources/read)
Server->>Server: Route to Resource Handler (resources)
Server->>Server: Parse URI and parameters
alt resources/list or search
Server->>+Clarifai: Call Clarifai List/Search API (gRPC) (clarifai)
Clarifai-->>-Server: gRPC Response (List of items/Error)
Server->>Server: Format JSON-RPC Response (List of Resources) (mcp)
else resources/read
Server->>+Clarifai: Call Clarifai Get API (gRPC) (clarifai)
Clarifai-->>-Server: gRPC Response (Item details/Error)
Server->>Server: Format JSON-RPC Response (Resource Content) (mcp)
end
else Other MCP Request (e.g., initialize, tools/list)
Server->>Server: Handle request internally (mcp)
Server->>Server: Format JSON-RPC Response (mcp)
end
Server-->>-Client: JSON-RPC Response (stdio)
身份验证依赖通过 --pat 命令行标志提供的个人访问令牌(PAT)。该令牌会包含在发往 Clarifai API 的 gRPC 请求元数据中。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。




