使用说明
API MCP服务器
一个轻量级和可扩展的服务器,用于定义和执行API工具,使用
这 MCP协议.
支持动态HTTP请求、类型化参数和多种传输(stdio, sse).
安装
您可以通过以下两种方式之一安装服务器:
1.通过安装 go install
如果您已安装Go,请运行:
go install github.com/AdamShannag/api-mcp-server/cmd/api-mcp-server@v0.2.0
2.下载预构建的二进制文件
从下载二进制文件 发布页面.
CLI标志
| 标志 | 描述 | 默认值 |
|---|---|---|
--transport, -t |
运输类型: stdio 或 sse |
stdio |
--config, -c |
JSON工具配置路径 | ./config.json |
--version, -v |
API MCP服务器版本 | - |
--metrics, -m |
启用Prometheus指标和健康检查服务器 | - |
--metrics-port |
度量和健康检查服务器端口 | 8080 |
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
API_MCP_HOST |
要绑定的SSE主机 | 127.0.0.1 |
API_MCP_PORT |
要绑定的SSE端口 | 13080 |
API_MCP_SSE_API_KEY |
用于身份验证的可选承载令牌 | (无) |
LOG_LEVEL |
设置最低日志记录级别(DEBUG, INFO, WARN, ERROR) |
INFO |
工具配置占位符
工具配置文件支持使用以下语法替换环境变量:
{{env VAR_NAME:default_value}}
在运行时,占位符被相应的环境变量替换。如果未设置变量
default_value 而是使用。
例子
"host": "{{env API_HOST:jsonplaceholder.typicode.com}}"
使用以下值 API_HOST 如果已设置,否则将恢复为默认值。
"Authorization": "Bearer {{env API_KEY:not-set}}"
用途 API_KEY 或 "not-set" 如果没有定义。
在运行服务器之前,设置任何所需的环境变量:
export API_HOST=myapi.example.com
export API_KEY=supersecret123
认证
使用SSE传输时,您可以通过设置
API_MCP_SSE_API_KEY 环境变量。
例子:
export API_MCP_SSE_API_KEY="your-secret-key"
api-mcp-server --transport sse --config ./demo.tools.json
然后,传入的SSE连接必须在 Authorization 头球
工具配置(JSON)
服务器接受定义一个或多个工具的JSON配置文件。每个工具都包含元数据(name,
description)、HTTP请求信息和列表 args 定义LLM所需的输入值。
每个工具配置包括:
- 独特
name - A.
description展示给LLM - A.
request描述HTTP调用的对象 - 列表
args定义预期输入
工具参数(args)
参数是从LLM收集的输入。每个都可以用于请求的一个或多个部分:
- 路径参数 → 直接在内部更换
endpoint - 查询参数 → 自动添加到URL
- 身体 → 作为原始请求正文字符串插入
主持人(host)
这 host 是目标API域(例如。, gitlab.com).
"host": "{{env GITLAB_API_HOST:gitlab.com}}"
方法(method)
HTTP方法(GET, POST, PUT等等)。
"method": "POST"
路径参数(pathParams)
用于替换 endpoint例如:
"endpoint": "/api/v4/projects/:project_id/pipeline",
"pathParams": ["project_id"]
随着 project_id = "MyProject/test",最终端点变为:
/api/v4/projects/MyProject%2Ftest/pipeline
查询参数(queryParams)
此处列出的键会自动作为查询字符串参数附加到端点:
"endpoint": "/api/v4/projects/:project_id/pipeline",
"queryParams": ["ref"]
随着 ref = "main",结果为:
/api/v4/projects/MyProject%2Ftest/pipeline?ref=main
请求正文(body)
这 body 字段映射到单个参数名称。它的值将用作原始请求正文字符串。
例子:
"body": "issue_payload"
鉴于这一论点:
{
"name": "issue_payload",
"type": "string",
"required": true,
"description": "A JSON object like {\"title\": \"Bug report\"}"
}
发送到服务器的正文将是的确切字符串值 issue_payload.
标题(headers)
定义要包含在请求中的静态或动态HTTP标头,例如令牌或内容类型:
"headers": {
"PRIVATE-TOKEN": "{{env GITLAB_TOKEN:not-set}}",
"Content-Type": "application/json"
}
安全(secure)
如果 secure: true,请求使用 https如果省略或 false,它使用 http.
完整示例
{
"name": "TriggerPipeline",
"description": "Triggers a pipeline in GitLab for a specific project and branch.",
"request": {
"host": "{{env GITLAB_API_HOST:gitlab.com}}",
"method": "POST",
"secure": true,
"endpoint": "/api/v4/projects/:project_id/pipeline",
"headers": {
"PRIVATE-TOKEN": "{{env GITLAB_TOKEN:not-set}}"
},
"queryParams": [
"ref"
],
"pathParams": [
"project_id"
]
},
"args": [
{
"name": "project_id",
"type": "string",
"required": true,
"description": "..."
},
{
"name": "ref",
"type": "string",
"required": true,
"description": "..."
}
]
}
如果 project_id = "MyProject/test" 和 ref = "main",最后一个HTTP请求是:
POST https://gitlab.com/api/v4/projects/MyProject%2Ftest/pipeline?ref=main
Headers:
PRIVATE-TOKEN: <value from GITLAB_TOKEN>
例子
此存储库包括几个示例工具配置,以演示不同的用例。这些不是 即用型API,但可作为参考:
-
GitLab问题 在GitLab项目中列出和创建问题的工具。 看 示例/gitlab
-
JSON占位符待办事项 与交互的工具 JSON占位符 公共API。 看 示例/json占位符
许可证
贡献
如果你有任何问题或想做出贡献,请随时提出问题或公关。