Pangolin API集成服务器

一个将Pangolin API端点暴露为工具,供AI助手管理Pangolin基础设施的MCP服务器。

  • by FGRibreau
  • Rust
  • 本地部署
  • 20 星标
  • 更新于
在 GitHub 查看 FGRibreau/mcp-pangolin

使用说明

MCP Pangolin

A Model Context Protocol (MCP) server that exposes your Pangolin Integration API to Claude and other MCP-compatible AI assistants.


赞助商


France-Nuage

Sovereign French cloud paired with self-hosted tunnels. EU end-to-end.

Hook0

Self-hosted Webhooks-as-a-Service behind your Pangolin tunnels.

Natalia

Self-host your stack, let Natalia answer customer calls 24/7.

Netir

Hire vetted French freelance self-hosting infra experts.

NoBullshitConseil

Tech advisory without the bullshit. Infra & sovereignty strategy.

Qualneo

Qualiopi LMS you can self-host. 32 indicators wired in.

Recapro

Sovereign AI meeting notes hosted behind your own tunnels.

有兴趣赞助吗? 联系

概述

该项目提供了一个MCP服务器,将所有穿山甲API端点作为工具公开,使人工智能助手能够管理您的穿山甲基础设施,包括组织、站点、资源、角色、用户等。

特性

  • 全面覆盖Pangolin Integration API端点
  • 只读模式 通过 PANGOLIN_READ_ONLY 环境变量
  • 通过以下方式进行承载令牌身份验证 PANGOLIN_API_KEY
  • 根据OpenAPI/Swagger规范自动生成工具
  • 支持路径参数、查询参数和请求体

快速开始

先决条件

  • 防锈稳定(安装)
  • 具有API访问权限的Pangolin实例
  • 穿山甲API钥匙

1.建设项目

git clone https://github.com/FGRibreau/mcp-pangolin.git
cd mcp-pangolin
cargo build --release

2.运行MCP服务器

./target/release/mcp-pangolin \
  --openapi pangolin-api.json \
  --api-key YOUR_API_KEY \
  --base-url https://your-pangolin-instance.com/v1

服务器将:

  1. 加载OpenAPI规范
  2. 为所有端点生成工具定义
  3. 开始在stdin/stdout上监听MCP消息

只读模式

要以只读模式运行服务器(只允许GET操作):

./target/release/mcp-pangolin \
  --openapi pangolin-api.json \
  --api-key YOUR_API_KEY \
  --base-url https://your-pangolin-instance.com/v1 \
  --read-only

或者通过环境变量:

export PANGOLIN_READ_ONLY=true
./target/release/mcp-pangolin \
  --openapi pangolin-api.json \
  --api-key YOUR_API_KEY \
  --base-url https://your-pangolin-instance.com/v1

配置

环境变量

变量 描述 必填
PANGOLIN_API_KEY 承载令牌身份验证的API密钥 是
PANGOLIN_BASE_URL 穿山甲API的基本URL 是
PANGOLIN_OPENAPI_FILE OpenAPI规范文件的路径 是*
PANGOLIN_OPENAPI_JSON 内联OpenAPI规范JSON 是*
PANGOLIN_READ_ONLY 设置为 true 启用只读模式 否

*要么 PANGOLIN_OPENAPI_FILE 或 PANGOLIN_OPENAPI_JSON 必须提供。

克劳德代码

将以下内容添加到您的Claude Code MCP设置中:

claude mcp add pangolin \
  --command /path/to/mcp-pangolin \
  --args "--openapi" "/path/to/pangolin-api.json" "--base-url" "https://your-pangolin-instance.com/v1" \
  --env "PANGOLIN_API_KEY=YOUR_API_KEY"

对于只读模式:

claude mcp add pangolin \
  --command /path/to/mcp-pangolin \
  --args "--openapi" "/path/to/pangolin-api.json" "--base-url" "https://your-pangolin-instance.com/v1" "--read-only" \
  --env "PANGOLIN_API_KEY=YOUR_API_KEY"

或者手动将其添加到MCP设置文件中:

{
  "mcpServers": {
    "pangolin": {
      "command": "/path/to/mcp-pangolin",
      "args": [
        "--openapi", "/path/to/pangolin-api.json",
        "--base-url", "https://your-pangolin-instance.com/v1"
      ],
      "env": {
        "PANGOLIN_API_KEY": "YOUR_API_KEY",
        "PANGOLIN_READ_ONLY": "true"
      }
    }
  }
}

克劳德桌面版

添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "pangolin": {
      "command": "/absolute/path/to/mcp-pangolin",
      "args": [
        "--openapi", "/absolute/path/to/pangolin-api.json",
        "--base-url", "https://your-pangolin-instance.com/v1"
      ],
      "env": {
        "PANGOLIN_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

用法示例

配置后,您可以向Claude提出以下问题:

  • “列出Pangolin的所有组织”
  • “显示组织“我的组织”的网站”
  • “站点123中有哪些可用资源?”
  • “列出组织中的所有用户”
  • “显示为此资源配置的角色”

并且具有写访问权限(当不处于只读模式时):

  • “创建一个名为‘生产我们’的新网站”
  • “添加用户john@example.com到管理员角色“
  • “更新API网关的资源配置”

可用工具

MCP服务器根据Pangolin OpenAPI规范生成工具。以下是主要类别:

组织

工具 说明
orgs 列出所有组织
org_by_orgId 按ID获取组织
create_org 创建新组织
update_org_by_orgId 更新组织
delete_org_by_orgId 删除组织

站点

工具 说明
org_by_orgId_sites 列出组织中的所有站点
site_by_siteId 按ID获取网站
create_org_by_orgId_site 创建新网站
update_site_by_siteId 更新网站
delete_site_by_siteId 删除网站

资源

工具 说明
org_by_orgId_resources 列出组织的资源
resource_by_resourceId 按ID获取资源
create_org_by_orgId_resource 创建资源
update_resource_by_resourceId 更新资源
delete_resource_by_resourceId 删除资源

站点资源

工具 说明
org_by_orgId_site_resources 列出组织的所有站点资源
site_resource_by_siteResourceId 获取特定的网站资源
create_org_by_orgId_site_resource 创建新的网站资源
update_site_resource_by_siteResourceId 更新站点资源
delete_site_resource_by_siteResourceId 删除站点资源

目标

工具 说明
resource_by_resourceId_targets 列出资源的目标
target_by_targetId 找到目标
create_resource_by_resourceId_target 创建目标
update_target_by_targetId 更新目标
delete_target_by_targetId 删除目标

用户

工具 说明
org_by_orgId_users 列出组织中的用户
org_by_orgId_user_by_userId 在组织中获取用户
create_org_by_orgId_user 创建组织用户
update_org_by_orgId_user_by_userId 更新用户
delete_org_by_orgId_user_by_userId 从组织中删除用户

角色

工具 说明
org_by_orgId_roles 列出组织中的角色
role_by_roleId 获得一个角色
create_org_by_orgId_role 创建角色
delete_role_by_roleId 删除角色

客户

工具 说明
org_by_orgId_clients 列出组织的所有客户
client_by_clientId 通过ID获取客户端
create_org_by_orgId_client 创建新客户端
update_client_by_clientId 更新客户端
delete_client_by_clientId 删除客户端

身份提供者

工具 说明
idp 列出所有身份提供者
idp_by_idpId 按ID获取IDP
create_idp_oidc 创建OIDC IdP
update_idp_by_idpId_oidc 更新OIDC IdP
delete_idp_by_idpId 删除IDP

API密钥

工具 说明
org_by_orgId_api_keys 列出组织的所有API密钥
create_org_by_orgId_api_key 创建新的API密钥
delete_org_by_orgId_api_key_by_apiKeyId 删除API密钥

访问令牌

工具 说明
org_by_orgId_access_tokens 列出组织中的所有访问令牌
resource_by_resourceId_access_tokens 列出资源的访问令牌
update_resource_by_resourceId_access_token 生成新的访问令牌
delete_access_token_by_accessTokenId 删除访问令牌

领域

工具 说明
org_by_orgId_domains 列出组织的所有域
org_by_orgId_domain_by_domainId 按ID获取域
org_by_orgId_domain_by_domainId_dns_records 获取域的DNS记录

蓝图

工具 说明
org_by_orgId_blueprints 列出组织的所有蓝图
org_by_orgId_blueprint_by_blueprintId 按ID获取蓝图
create_org_by_orgId_blueprint 应用蓝图

日志

工具 说明
org_by_orgId_logs_request 查询请求审核日志
org_by_orgId_logs_analytics 查询请求审核分析

CLI 参考

mcp-pangolin [OPTIONS] --api-key <API_KEY> --base-url <BASE_URL>

Options:
  -o, --openapi <OPENAPI>        Path to OpenAPI/Swagger JSON specification file
                                 [env: PANGOLIN_OPENAPI_FILE]

      --openapi-json <JSON>      Inline OpenAPI/Swagger JSON specification
                                 [env: PANGOLIN_OPENAPI_JSON]

  -k, --api-key <API_KEY>        Pangolin API key for authentication
                                 [env: PANGOLIN_API_KEY]

  -b, --base-url <BASE_URL>      Base URL for the Pangolin API
                                 [env: PANGOLIN_BASE_URL]

  -r, --read-only                Enable read-only mode (only GET operations)
                                 [env: PANGOLIN_READ_ONLY]

  -h, --help                     Print help
  -V, --version                  Print version

发展

# Build debug version
cargo build

# Run tests
cargo test

# Run with logging
RUST_LOG=debug ./target/debug/mcp-pangolin \
  --openapi pangolin-api.json \
  --api-key YOUR_KEY \
  --base-url https://api.example.com/v1

运行测试

# Run all tests
cargo test

# Run read-only mode tests specifically
cargo test --test read_only_mode

# Run tests with output
cargo test -- --nocapture

故障排除

“没有可用的工具”

  1. 确保您的OpenAPI规范文件是有效的JSON
  2. 检查文件路径是否正确
  3. 尝试使用绝对路径 --openapi 论点

“401未经授权”错误

  1. 验证您的API密钥是否正确
  2. 检查API密钥是否具有足够的权限
  3. 确保正确传递API密钥(通过 --api-key 或 PANGOLIN_API_KEY 任何人)

“连接被拒绝”或超时

  1. 验证您的穿山甲实例是否可访问
  2. 检查防火墙或VPN要求
  3. 确保 --base-url 包括正确的协议(https://)和API版本路径(/v1)

写入操作被阻止

如果您看到“只读模式下不允许写入操作”:

  1. 检查是否 PANGOLIN_READ_ONLY 环境变量设置为 true
  2. 移除 --read-only 标记是否需要写访问权限
  3. 验证您的API密钥是否具有对Pangolin实例的写入权限

安全考虑

  • 只读模式:使用 PANGOLIN_READ_ONLY=true 在生产环境中,人工智能助手应该只有读取权限
  • API密钥安全:永远不要将API密钥提交到版本控制。使用环境变量或秘密管理解决方案
  • 网络安全:始终使用HTTPS作为基本URL

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT许可证-请参阅 许可证 了解详情。

致谢