MetaCall MCP服务器
A. 模型上下文协议(MCP) 基于TypeScript实现的服务器 metacall/protocol API它将完整的MetaCall FaaS表面作为MCP工具公开。
______________________________________________________________________
建筑
┌────────────────────────────┐
│ MCP Client │
│ (CLI / IDE / Local LLM) │
└─────────────┬──────────────┘
│ (JSON-RPC over stdio)
▼
┌────────────────────────────┐
│ MCP Server (TS) │
│ - Tool Router │
│ - Zod Validation │
│ - Tool Handlers │
│ - Error Boundary │
└─────────────┬──────────────┘
│ (Function Calls)
▼
┌────────────────────────────┐
│ Protocol Client │
│ (metacall/protocol API) │
└─────────────┬──────────────┘
│ (Axios REST)
▼
┌────────────────────────────┐
│ MetaCall FaaS │
│ (Deploy + Runtime Layer) │
└────────────────────────────┘______________________________________________________________________
外露工具
系统
| 工具 | 说明 |
|---|---|
refresh | 刷新MetaCall JWT身份验证令牌 |
ready | 检查服务器是否准备就绪 |
validate | 验证当前身份验证令牌 |
deployEnabled | 检查是否启用了部署 |
订阅
| 工具 | 说明 |
|---|---|
listSubscriptions | 列出所有活动订阅 |
listSubscriptionsDeploys | 列出订阅的部署 |
部署
| 工具 | 说明 |
|---|---|
inspect | 检查所有部署 |
inspectByName | 按名称检查部署 |
upload | 将zip包/blob上传到FaaS |
add | 添加新部署 |
deploy | 触发部署 |
deployDelete | 删除部署 |
logs | 检索部署日志 |
仓库
| 工具 | 说明 |
|---|---|
branchList | 列出存储库中的分支 |
fileList | 列出存储库中的文件 |
调用
| 工具 | 说明 |
|---|---|
invoke | 调用已部署的函数 |
call | 直接调用函数 |
await | 等待异步函数结果 |
______________________________________________________________________
设计原则
- 1:1抽象 通过协议API
- 异步安全 基于Promise的处理程序
- 结构化错误边界 用于一致的错误处理
- 重试支持 通过
waitFor - 基于Zod的输入验证 适用于所有工具输入
- 清晰地分离关注点 跨层
安装和设置
先决条件
- Node.js:v18或更高版本。
- MetaCall令牌:您需要一个活动身份验证令牌。您可以通过登录来获取此信息 dashboard.metacall.io.
______________________________________________________________________
1.构建服务器
首先,将此存储库克隆到本地计算机,安装依赖项,并编译TypeScript代码:
git clone https://github.com/Somsubhra-Nandi/metacall-mcp-server.git
cd metacall-mcp-server
npm install
npm run build注: 获得你的绝对路径 metacall-mcp-server/dist/index.js 文件,因为客户端配置需要它。______________________________________________________________________
2.客户端配置
模型上下文协议(MCP)允许我们在各种AI客户端上使用此服务器。以下是的设置说明 克劳德桌面版 和 谷歌反重力.
______________________________________________________________________
选项A:克劳德桌面
- 根据您的操作系统打开Claude Desktop配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json - 窗户: %APPDATA%\Claude\claude_desktop_config.json
- 将MetaCall服务器添加到您的
mcpServers对象。更换args具有实际绝对路径的路径dist/index.js,然后插入您的MetaCall令牌:
{
"mcpServers": {
"metacall-faas": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/metacall-mcp-server/dist/index.js"
],
"env": {
"METACALL_TOKEN": "your_jwt_token_here",
"METACALL_BASE_URL": "https://dashboard.metacall.io"
}
}
}
}Windows用户: 记得使用双睫毛。例如。, C:\\Users\\Name\\metacall-mcp-server\\dist\\index.js- 重新启动克劳德桌面。
______________________________________________________________________
选项B:谷歌反重力
- 根据您的操作系统打开Antigravity配置文件:
- macOS/Linux: ~/.gemini/antigravity/mcp_config.json - 窗户: %USERPROFILE%\.gemini\antigravity\mcp_config.json
- 将用于Claude Desktop(如上)的完全相同的JSON配置块添加到您的
mcp_config.json文件:
{
"mcpServers": {
"metacall-faas": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/metacall-mcp-server/dist/index.js"
],
"env": {
"METACALL_TOKEN": "your_jwt_token_here",
"METACALL_BASE_URL": "https://dashboard.metacall.io"
}
}
}
}- 在Antigravity UI中,导航到 代理经理 面板,单击 管理MCP服务器,并点击 刷新。服务器将被连接。
上传工具–如何提供Zip包
上传工具在部署之前向MetaCall Cloud发送一个zip包。MetaCall API希望该包为二进制缓冲区。zip文件必须编码为base64字符串,然后重建到MCP服务器内的缓冲区中。
Base64适用于所有MCP客户端,因为它只是二进制zip文件的文本表示。
支持两种提供zip包的方式:
______________________________________________________________________
1.zipBase64(推荐并适用于所有人)
这是一种可移植的方法,适用于所有MCP客户端,如Claude、antigravity等。
步骤
- 创建一个包含源代码的zip文件。源文件应位于zip存档的根目录。
示例结构:
package.zip
└── abc.js- 将zip文件转换为base64字符串。
Linux:
base64 package.zipmacOS:
base64 package.zipWindows(PowerShell):
[Convert]::ToBase64String([IO.File]::ReadAllBytes("absolute path of the zip file"))- 将base64字符串传递给上传工具。
工具输入示例:
{
"name": "myPackage",
"zipBase64": "ABCDEF...",
"runners": ["node"]
}MCP服务器将base64字符串转换回二进制缓冲区,并将其发送给MetaCall API。
______________________________________________________________________
2.zipPath(仅限本地开发)
当MCP服务器可以直接访问本地文件系统时(例如在本地测试或使用Antigravity等工具时),zip文件可以作为文件路径提供。
例子:
{
"name": "myPackage",
"zipPath": "./package.zip"
}MCP服务器使用提供的路径从磁盘读取文件并将其上传到MetaCall。
注: zipPath 可能无法与Claude等远程LLM客户端配合使用,因为这些客户端无法访问MCP服务器文件系统上的文件。______________________________________________________________________
推荐
为了兼容所有MCP客户端,使用 zipBase64 是推荐的。
