🌀 Clarifai MCP Server (unofficial)
用于 clarifai.com 的本地 MCP 服务器
tot-ra
README
🌀 Clarifai MCP 服务器 (非官方)
这个黑客日项目提供了一个模型上下文协议 (MCP) 服务器,它充当 Clarifai API 的桥梁,旨在用户机器上(本地)运行。它允许 MCP 客户端(如 IDE 扩展)使用标准 MCP 请求与 Clarifai 交互,例如图像生成和推理,而不会因大量的二进制结果而使 LLM 上下文过载。
https://www.youtube.com/embed/aSuJxq1txm0
配置 MCP 服务器以实现无缝交互
服务器通常由 MCP 客户端框架自动运行(例如,通过 VS Code 中的设置)。配置通常涉及指定已构建二进制文件的路径和任何必需的命令行参数,例如 Clarifai PAT。你需要 Go(版本 1.23 或更高版本)
cd ~
git clone git@github.com:tot-ra/clarifai-mcp-server-local.git
cd clarifai-mcp-server-local
go mod tidy
构建二进制文件:
使用 go build
命令,以 cmd/server
目录中的 main 包为目标。如果需要,指定输出路径和目标架构(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
)的可执行文件。
Cline 的 MCP 设置条目示例 (cline_mcp_settings.json
):
{
"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 代理可以自动调用图像生成并将结果放置在桌面上
使用 Clarifai 生成 3 张猫的图像
<img src="./docs/Screenshot 2025-04-09 at 01.02.31.png" width=400 /><img src="./docs/Screenshot 2025-04-09 at 01.02.14.png" width=400 />
<img src="./docs/results/generated_image_1744149572853349000_3412.png" width=200 /><img src="./docs/results/generated_image_1744149613297854000_674.png" width=200 /><img src="./docs/results/generated_image_1744149654699582000_6792.png" width=200 />
clarifai_image_by_path
: 使用指定的或默认的 Clarifai 模型对本地图像文件执行推理。- 输入:
filepath
(必需,本地图像的路径),model_id
,user_id
,app_id
(可选)。 - 输出:推理结果的文本描述(例如,检测到的概念)。
- 输入:
请 clarifai my_source_folder/images/ 中的图像
clarifai_image_by_url
: 使用指定的或默认的 Clarifai 模型对图像 URL 执行推理。- 输入:
image_url
(必需),model_id
,user_id
,app_id
(可选)。 - 输出:推理结果的文本描述(例如,检测到的概念)。
- 输入:
<img src="./docs/Screenshot 2025-04-10 at 03.38.17.png" width=600 />
资源(只读)
服务器将各种 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}/inputs
clarifai://{user_id}/{app_id}/inputs?query={search_term}
clarifai://{user_id}/{app_id}/inputs/{input_id}
- 注释: 列表、搜索、获取、按输入列出
clarifai://{user_id}/{app_id}/annotations
clarifai://{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}/models
clarifai://{user_id}/{app_id}/models?query={search_term}
clarifai://{user_id}/{app_id}/models/{model_id}
- 模型版本: 列表、获取
clarifai://{user_id}/{app_id}/models/{model_id}/versions
clarifai://{user_id}/{app_id}/models/{model_id}/versions/{version_id}
- 数据集: 列表、获取
clarifai://{user_id}/{app_id}/datasets
clarifai://{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
: 管理通过 stdio 的核心 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 请求的元数据中。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。