fal.ai MCP服务器
一种用于交互的模型上下文协议(MCP)服务器 fal.ai 模型和服务。该服务器使Claude Desktop和其他MCP客户端能够使用fal.ai强大的ai模型发现、搜索和生成内容。
特性
- 模型发现:使用平台API v1列出并搜索fal.ai的模型库
- 高级搜索:按类别、状态等过滤的免费文本搜索
- 模型查找:使用可选的架构扩展按端点ID查找特定模型
- 定价信息:获取模型的实时定价(基于输出或基于GPU)
- 成本估算:使用历史API定价或单位定价估算成本
- 使用情况跟踪:使用时间序列数据获取详细的计费使用记录
- 分析:跟踪请求计数、延迟统计和成功/错误率
- 架构检查:通过内联OpenAPI扩展获取详细的输入/输出模式
- 内容生成:使用AI模型生成图像、视频和其他内容
- 队列管理:跟踪生成状态、检索结果和取消请求
- 文件上传:将文件上传到fal.ai CDN以供模型使用
- 完全支持TypeScript:具有全面的TypeScript定义的类型安全API
- 基于光标的分页:通过大型结果集进行高效分页
安装
通过npm(推荐)
npm install -g fal-ai-mcp-server来源
git clone https://github.com/derekalia/fal-mcp-ts
cd fal-mcp-ts
npm install
npm run build
npm link配置
获取API密钥
配置MCP客户端
将服务器添加到MCP客户端配置中。API密钥应通过环境变量提供。
克劳德桌面
添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\\Claude\\claude_desktop_config.json
{
"mcpServers": {
"fal": {
"command": "npx",
"args": ["-y", "fal-ai-mcp-server"],
"env": {
"FAL_KEY": "your-fal-api-key-here"
}
}
}
}克劳德代码
对于特定于项目的配置,请创建 .mcp.json 项目根目录中的文件:
{
"mcpServers": {
"fal": {
"command": "npx",
"args": ["-y", "fal-ai-mcp-server@latest"],
"env": {
"FAL_KEY": "your-fal-api-key-here"
}
}
}
}使用 @latest 确保您始终自动获得最新版本!
安全说明: 永不承诺 .mcp.json 包含版本控制的API密钥的文件。将其添加到您的 .gitignore 文件。
光标
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"fal": {
"command": "npx",
"args": ["-y", "fal-ai-mcp-server"],
"env": {
"FAL_KEY": "your-fal-api-key-here"
}
}
}
}其他MCP客户端
对于其他MCP客户端,请使用以下命令:
FAL_KEY="your-api-key" npx -y fal-ai-mcp-server可用工具
models
使用平台API v1在fal.ai模型库中列出可用的模型。
参数:
category(可选):按类别筛选(例如,“文本到图像”、“图像到视频”、“培训”)cursor(可选):来自上一个响应的分页光标limit(可选):每页显示型号(默认值:100,最大值:100)status(可选):按状态筛选-“活动”或“已弃用”expand(可选):要展开的字段数组。支持:\[“openapi-3.0”\]包含完整的openapi模式
例子:
{
"category": "text-to-image",
"status": "active",
"limit": 50,
"expand": ["openapi-3.0"]
}search
使用自由文本查询跨名称、描述和类别搜索模型。
参数:
query(必填):自由文本搜索查询cursor(可选):来自上一个响应的分页光标limit(可选):每页结果(默认值:50,最大值:100)category(可选):按类别筛选status(可选):按状态筛选-“活动”或“已弃用”expand(可选):要展开的字段数组。支持:\[“openapi-3.0”\]
例子:
{
"query": "flux image generation",
"status": "active",
"limit": 20
}find
按端点ID查找特定模型。可以检索单个或多个模型。
参数:
endpoint_ids(必填):端点ID数组(1-50个型号)expand(可选):要展开的字段数组。支持:\[“openapi-3.0”\]
例子:
{
"endpoint_ids": ["fal-ai/flux/dev", "fal-ai/flux-pro"],
"expand": ["openapi-3.0"]
}schema
获取特定模型的输入/输出模式。
参数:
app_id(必填):模型应用程序ID(例如,“fal-ai/flux/dev”)
例子:
{
"app_id": "fal-ai/flux/dev"
}generate
向fal.ai模型提交生成请求。
参数:
app_id(必填):模型应用程序IDinput_data(必填):特定型号的输入参数webhook_url(可选):用于结果通知的Webhookoutput_format(可选):json或二进制(默认值:json)
例子:
{
"app_id": "fal-ai/flux/dev",
"input_data": {
"prompt": "A beautiful sunset over mountains",
"image_size": "landscape_4_3",
"num_inference_steps": 28
}
}result
获取生成请求的结果。
参数:
app_id(必填):模型应用程序IDrequest_id(必填):请求ID来自generate()
例子:
{
"app_id": "fal-ai/flux/dev",
"request_id": "abc123-def456-ghi789"
}status
在不获取完整结果的情况下检查生成请求的状态。
参数:
app_id(必填):模型应用程序IDrequest_id(必填):请求ID进行检查
例子:
{
"app_id": "fal-ai/flux/dev",
"request_id": "abc123-def456-ghi789"
}cancel
取消待处理或正在处理的生成请求。
参数:
app_id(必填):模型应用程序IDrequest_id(必填):请求ID以取消
例子:
{
"app_id": "fal-ai/flux/dev",
"request_id": "abc123-def456-ghi789"
}upload
将文件上传到fal.ai CDN以供模型使用。
参数:
file_path(必填):要上传的文件的路径content_type(可选):MIME类型(如果未提供,则自动检测)
例子:
{
"file_path": "/path/to/image.png"
}pricing
获取特定型号端点的定价信息。需要身份验证。
参数:
endpoint_ids(必填):用于获取定价的端点ID数组(1-50个型号)cursor(可选):来自上一个响应的分页光标
例子:
{
"endpoint_ids": ["fal-ai/flux/dev", "fal-ai/flux-pro"]
}答复:
{
"prices": [
{
"endpoint_id": "fal-ai/flux/dev",
"unit_price": 0.025,
"unit": "image",
"currency": "USD"
}
],
"next_cursor": null,
"has_more": false
}estimate_cost
估算模型操作的成本。需要身份验证。有助于预算规划和成本优化。
估算方法:
- API历史价格 (
historical_api_price):
- 基于过去使用模式中每个API调用的历史定价 - 当您知道要进行的API调用的数量时使用 - 示例:“100次调用flux/dev需要多少钱?”
- 单价 (
unit_price):
- 基于单价×预期计费单位(图像、视频等) - 当您知道预期的输出量时使用 - 示例:“来自flux/dev的50张图片要花多少钱?”
参数:
estimate_type(必填):“historical_api_price”或“unit_priceendpoints(必填):端点ID到数量的映射
示例-API历史价格:
{
"estimate_type": "historical_api_price",
"endpoints": {
"fal-ai/flux/dev": {
"call_quantity": 100
},
"fal-ai/flux/schnell": {
"call_quantity": 50
}
}
}示例-单价:
{
"estimate_type": "unit_price",
"endpoints": {
"fal-ai/flux/dev": {
"unit_quantity": 50
},
"fal-ai/flux-pro": {
"unit_quantity": 25
}
}
}答复:
{
"estimate_type": "unit_price",
"total_cost": 1.88,
"currency": "USD"
}usage
获取工作区的使用记录和详细的计费信息。返回时间序列数据和/或包含单位数量和价格的汇总统计数据。需要身份验证。
参数:
endpoint_ids(必需):要获取用法的端点ID数组(1-50个型号)start(可选):ISO8601格式的开始日期(例如,“2025-01-01”或“2025-01-01T00:00:00Z”)。默认为24小时前end(可选):ISO8601格式的结束日期。默认为当前时间timeframe(可选):聚合时间框架-“分钟”、“小时”、“天”、“周”或“月”。如果未指定,则自动检测timezone(可选):日期聚合的时区(例如,“UTC”、“America/New_York”)。默认为“UTC”bound_to_timeframe(可选):是否将开始/结束日期与时间范围边界对齐。默认为 trueexpand(可选):要包含的数据数组-“time_series”、“summary”、“auth_method”。默认为\[“时间序列”\]cursor(可选):来自上一个响应的分页光标limit(可选):要返回的最大项目数
例子:
{
"endpoint_ids": ["fal-ai/flux/dev", "fal-ai/nano-banana"],
"start": "2025-10-01",
"end": "2025-10-31",
"timeframe": "day",
"expand": ["time_series", "summary"]
}答复:
{
"time_series": [
{
"bucket": "2025-10-23T00:00:00+00:00",
"results": [
{
"endpoint_id": "fal-ai/flux/dev",
"unit": "shared_gateway_request",
"quantity": 8,
"unit_price": 0.025
}
]
}
],
"summary": [
{
"endpoint_id": "fal-ai/flux/dev",
"unit": "shared_gateway_request",
"quantity": 15,
"unit_price": 0.025
}
]
}analytics
使用时间块指标获取模型端点的分析数据。返回请求计数、延迟统计数据(平均值、p50、p95、p99)和成功/错误率。需要身份验证。
参数:
endpoint_ids(必填):用于获取分析的端点ID数组(1-50个模型)start(可选):ISO8601格式的开始日期。默认为24小时前end(可选):ISO8601格式的结束日期。默认为当前时间timeframe(可选):时间桶大小-“小时”、“天”、“周”或“月”。如果未指定,则自动检测timezone(可选):日期聚合的时区。默认为“UTC”bound_to_timeframe(可选):是否将开始/结束日期与时间范围边界对齐。默认为 truemetric(可选):筛选以仅返回特定指标-“total_requests”、“success_request”、“failed_requests“或”avg_latency_ms“cursor(可选):来自上一个响应的分页光标limit(可选):要返回的最大项目数
例子:
{
"endpoint_ids": ["fal-ai/flux/dev"],
"start": "2025-10-01",
"timeframe": "day"
}答复:
{
"time_series": [
{
"bucket": "2025-10-23T00:00:00+00:00",
"results": [
{
"endpoint_id": "fal-ai/flux/dev",
"request_count": 19
}
]
}
]
}使用示例
使用克劳德桌面
配置后,您可以使用自然语言与fal.ai进行交互:
模型发现:
“搜索主动通量模型”
“查找fal-ai/flux/dev的模型详细信息”
定价和成本管理:
“获取fal ai/flux/dev和fal ai/flux pro的定价信息”
“使用fal-ai/flux/dev估算生成50张图像的成本”
“根据历史定价,100个API调用flux/dev的成本是多少?”
使用和分析:
“显示我在过去两周内对fal-ai/nano-banna的使用情况”
“获取过去一个月fal-ai/flux/dev的分析”
“我这个月在flux/dev上的总支出是多少?”
内容生成:
“使用fal-ai/flux/dev生成戴帽子的猫的图像”
“检查我上一代请求的状态”
“将此图像上传到fal.ai CDN:/path/to/image.png”
程序化使用
您还可以通过编程方式使用服务器:
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
// ... server setup发展
先决条件
- Node.js 18或更高版本
- npm或纱线
- fal.ai API密钥
设置
# Clone the repository
git clone https://github.com/derekalia/fal-mcp-ts
cd fal-mcp-ts
# Install dependencies
npm install
# Build
npm run build
# Run in development mode with watch
npm run watch项目结构
fal-mcp-ts/
├── src/
│ ├── index.ts # Main server entry point
│ ├── client.ts # Fal.ai client wrapper
│ └── tools/
│ ├── models.ts # Model discovery tools
│ ├── generate.ts # Generation and queue tools
│ └── storage.ts # File upload tools
├── dist/ # Compiled output
├── package.json
├── tsconfig.json
└── README.md故障排除
“未设置FAL_KEY环境变量”
确保您已设置 FAL_KEY 在您的MCP客户端配置中。API键必须设置为环境变量。
“HTTP 401”或“未经授权”
您的API密钥可能无效或已过期。在上查看您的API密钥 fal.ai/仪表板/按键.
构建错误
尝试删除 node_modules 并重新安装:
rm -rf node_modules package-lock.json
npm install
npm run build贡献
欢迎投稿!请随时提交拉取请求。
许可证
麻省理工学院
鸣谢
这个项目的灵感来自 Python fal MCP服务器 并使用以下方法构建:
- @模型上下文协议/sdk -MCP TypeScript SDK
- @fal-ai/客户 -官方fal.ai TypeScript客户端
