Token导航 LogoToken导航TokenDH.com
Skyline MCP logo
AI代理stdio官方级别未说明来源级核验

Skyline MCP

MCP Server

Skyline是一个MCP服务器,可将外部API转换为AI代理可使用的工具,支持多种API协议并自动转换为标准化模型。

工具数

0

提示词数

0

GitHub Stars

3

资源数

0
AI代理多协议支持GoClaudeAPI集成Claude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

emadomedher

提供方

emadomedher

最后核验

2026/5/17 20:21

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -p 8191:8191 -v $(pwd)/config.yaml:/app/config.yaml skyline-mcp

详细介绍

Give your AI agent access to any API. Automatically.

Point Skyline at an API spec, add credentials, and every endpoint becomes an MCP tool your AI can call.

No glue code. No per-API adapters. Just config.

______________________________________________________________________

什么是天际线?

天际线是一个 MCP(模型上下文协议)服务器 它将外部API转化为AI代理可以使用的工具。它读取API规范,将其规范化为规范模型,并将每个操作公开为具有完整JSON模式验证的可调用MCP工具。

您在YAML文件中描述您的API。Skyline完成了其余的工作:

  ┌──────────────┐      ┌────────────────┐      ┌──────────────────┐
  │  API Specs   │ ---> │    Skyline      │ ---> │    MCP Tools     │
  │              │      │                 │      │                  │
  │  OpenAPI     │      │  Auto-detect    │      │  tools/list      │
  │  Swagger 2   │      │  Parse & norm   │      │  tools/call      │
  │  GraphQL     │      │  Validate       │      │  resources/list  │
  │  SOAP/WSDL   │      │  Execute        │      │  resources/read  │
  │  OData v4    │      │                 │      │                  │
  │  gRPC        │      │  stdio / HTTP   │      │  Claude, Cursor  │
  │  JSON-RPC    │      │                 │      │  or any MCP host │
  │  Postman     │      │                 │      │                  │
  │  AsyncAPI    │      │                 │      │                  │
  │  RAML        │      │                 │      │                  │
  │  API Bluepr. │      │                 │      │                  │
  │  Insomnia    │      │                 │      │                  │
  │  Jenkins     │      │                 │      │                  │
  │  Jira Cloud  │      │                 │      │                  │
  │  Google API  │      │                 │      │                  │
  │  CKAN        │      │                 │      │                  │
  └──────────────┘      └────────────────┘      └──────────────────┘

______________________________________________________________________

🚀 代码执行(默认)

天际线使用 代码执行 默认情况下,最多提供 成本降低98% 与传统MCP相比:

传统MCP:

  • AI评估100多个工具定义(约20K个令牌)
  • 进行5-7次单独的工具调用
  • 来回发送中间数据(每次呼叫约5K个令牌)
  • 费用:每次请求约0.081美元 (克劳德·奥普斯)

代码执行(默认):

  • AI接收工具提示(约2K个令牌)
  • 编写一个JavaScript脚本
  • Skyline在嵌入式Goja JS运行时执行代码——零外部依赖
  • 代码在内部调用工具,在本地过滤数据
  • 费用:每次请求约0.002美元 (便宜97.7%!)

每月节省: 100000个请求7900美元

需求

代码执行使用 嵌入式Goja JS运行时 (纯Go JavaScript引擎)。有 无外部依赖关系 --所有内容都被编译成Skyline二进制文件。

curl -fsSL https://skyline.projex.cc/install | bash

禁用代码执行

# config.yaml
enable_code_execution: false  # Use traditional MCP tools

请参阅 天际线文件 有关代码执行的完整详细信息。

______________________________________________________________________

支持的API类型

Skyline自动检测规格格式。无需手动配置。

协议检测注意事项
OpenAPI 3.xopenapi JSON/YAML中的字段完整路径、查询、标头和正文参数支持
Swagger 2.0swagger 字段内部自动转换为OpenAPI 3
图查询语言SDL文件或自省构建具有变量支持和选择集的类型化查询
wsdl1.1/SOAPXML与 ``生成SOAP信封,将XML响应解析为JSON
OData V4CSDL $metadata XML使用OData查询选项为每个EntitySet生成CRUD操作
gRPCspec_type: grpc in config通过gRPC反射发现服务;构建动态protobuf消息
OpenRPC/JSON-RPCopenrpc JSON中的字段将调用封装在JSON-RPC 2.0信封中;支持 rpc.discover
邮差收藏schema.getpostman.com JSON遍历v2.x集合项;支持文件夹、路径/查询/标头参数、正文模式
Google API发现discoveryVersion field将谷歌的发现格式映射到REST操作
詹金斯2.545 ⚠️/api/json 对象图34次操作 -自定义实现。作业、构建、管道、蓝海、节点、凭据、插件、队列。完全支持CSRF。看 特殊情况
Slack Web API ⚠️{"ok":...} 响应格式23次操作 -自定义实现。聊天、对话、用户、文件、反应、图钉、提醒。看 特殊情况
吉拉云*.atlassian.net host自动获取官方Atlassian OpenAPI规范
异步APIasyncapi JSON/YAML中的字段事件驱动API;将通道和操作映射到MCP工具
拉姆尔#%RAML headerRESTful API建模语言;全面的资源/方法支持
API蓝图FORMAT: 1A header基于Markdown的API描述;解析资源组和操作
失眠_type: export JSONInsomnia导出集合;使用完整的参数支持遍历请求项
CKAN开放数据 ⚠️/api/3/action/ 端点或 spec_type: ckan7次操作 --自定义实现。数据集搜索、资源访问、数据存储查询、组织/标签列表。与全球任何CKAN 2.x/3.x门户兼容。

______________________________________________________________________

🎯 推荐:Web UI配置

Web UI是配置Skyline最简单、最安全的方法。 所有配置均使用AES-256-GCM自动加密。

启动Web UI

# Default mode: HTTP + Admin UI
skyline

# Or with explicit flags
skyline --transport http --admin --bind localhost:8191

# Open browser
# https://localhost:8191/ui/
# https://localhost:8191/admin/

加密密钥为 自动生成 首次运行并保存到 ~/.skyline/skyline.env.

特性

  • 点击配置 -无需进行YAML编辑
  • 自动加密 -所有配置文件均使用AES-256-GCM静态加密
  • API测试 -保存前测试端点
  • 语法验证 -在错误发生之前将其捕获
  • 安全的凭证存储 -从不存储明文机密
  • 多个配置文件 -dev/stating/prod的单独配置

了解加密密钥与配置文件令牌

🔑 加密密钥(SKYLINE_PROFILES_KEY):

  • 加密整个 profiles.enc.yaml 包含您所有个人资料的文件
  • 通过安全渠道(1Password、Vault等)与您的团队共享
  • 保护磁盘上的静态数据

🎫 配置文件令牌(每个配置文件):

  • 控制世界卫生组织可以访问哪个特定档案
  • 只为每个用户提供他们需要的配置文件的令牌
  • 提供访问控制和身份验证

团队示例:

# Everyone shares the encryption key to decrypt the file
export SKYLINE_PROFILES_KEY=abc123...

# But each person gets different profile tokens:
# - Developer: dev-token-abc (can only access dev-api)
# - DevOps: prod-token-xyz (can only access prod-api)

安全

配置文件使用以下方式加密:

  • 算法: AES-256-GCM(伽罗瓦/计数器模式)
  • 密钥大小: 256位(32字节)
  • 身份验证: 内置MAC防止篡改
  • 储存: profiles.enc.yaml (加密JSON信封)

请参阅 天际线文件 获取完整的配置文档。

______________________________________________________________________

🔧 替代方案:手动配置

对于喜欢命令行工具的用户:

1.创建配置

配置文件支持两者 YAMLJSON 格式(自动检测):

YAML (建议阅读):

# config.yaml
apis:
  - name: petstore
    spec_url: https://petstore3.swagger.io/api/v3/openapi.json
    auth:
      type: api-key
      header: X-API-Key
      value: ${PETSTORE_API_KEY}

JSON (用于程序生成):

{
  "apis": [
    {
      "name": "petstore",
      "spec_url": "https://petstore3.swagger.io/api/v3/openapi.json",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "${PETSTORE_API_KEY}"
      }
    }
  ]
}

秘密使用 ${ENV_VAR} 语法,并从所有日志中自动编辑。

2.跑步

# stdio (for Claude Desktop, Cursor, etc.)
go run ./cmd/skyline --config ./config.yaml

# streamable HTTP (for networked MCP clients)
go run ./cmd/skyline --config ./config.yaml --transport http --bind localhost:8191

3.连接你的AI

将Skyline添加到MCP客户端配置中。对于Claude Desktop:

{
  "mcpServers": {
    "skyline": {
      "command": "./bin/skyline",
      "args": ["--config", "./config.yaml"]
    }
  }
}

就是这样。你的人工智能代理现在已经为每个API端点键入了经过验证的工具。

______________________________________________________________________

建筑

天际线由三个部分组成:

Skyline MCP服务器cmd/skyline

核心。加载您的配置,获取和解析API规范,构建MCP工具,并通过stdio或HTTP为其提供服务。

Config (YAML)
  → Spec Fetcher (URL or file)
    → Auto-Detect adapter (OpenAPI | Swagger2 | GraphQL | WSDL | OData | OpenRPC | Postman | gRPC | AsyncAPI | RAML | API Blueprint | Insomnia | Jenkins | Google | Jira)
      → Canonical Model (Service → Operations → Parameters + Schemas)
        → MCP Registry (tools + resources + JSON Schema validators)
          → MCP Server (JSON-RPC 2.0 over stdio or streamable HTTP)
            → Runtime Executor (HTTP requests, gRPC calls, JSON-RPC envelopes, auth, retries)

管理UI和配置文件管理

内置web界面,用于管理配置、配置文件和服务器设置。可通过以下方式访问 --admin 标志(默认启用)。

# Start with admin UI (default)
skyline

# Or explicitly
skyline --transport http --admin --bind localhost:8191

# Open https://localhost:8191/ui/
# Open https://localhost:8191/admin/

特征:

  • 档案管理 --使用加密存储创建命名配置文件(dev、staging、prod)
  • AES-GCM加密 --所有配置文件在静止时加密,密钥自动生成
  • 规格检测 -从基本URL自动查找API规范
  • 设置编辑器 --通过Web UI编辑服务器config.yaml
  • 度量与审计 -查看API调用历史记录和性能统计信息

______________________________________________________________________

配置参考

完整配置示例

apis:
  - name: petstore-openapi
    spec_url: http://localhost:9999/openapi/openapi.json
    base_url_override: http://localhost:9999/openapi
    auth:
      type: bearer
      token: ${PETSTORE_TOKEN}

  - name: plants-soap
    spec_url: http://localhost:9999/wdsl/wsdl
    auth:
      type: bearer
      token: ${PLANTS_TOKEN}

  - name: cars-graphql
    spec_url: http://localhost:9999/graphql/schema
    base_url_override: http://localhost:9999/graphql
    auth:
      type: basic
      username: ${GRAPHQL_USER}
      password: ${GRAPHQL_PASS}

  - name: jira-cloud
    spec_url: https://your-domain.atlassian.net
    base_url_override: https://your-domain.atlassian.net
    auth:
      type: basic
      username: ${JIRA_EMAIL}
      password: ${JIRA_API_TOKEN}

  - name: movies-odata
    spec_url: http://localhost:9999/odata/$metadata
    base_url_override: http://localhost:9999/odata
    auth:
      type: bearer
      token: ${ODATA_TOKEN}

  - name: calculator-jsonrpc
    spec_url: http://localhost:9999/jsonrpc/openrpc.json
    base_url_override: http://localhost:9999/jsonrpc
    auth:
      type: api-key
      header: X-API-Key
      value: ${JSONRPC_KEY}

  - name: clothes-grpc
    spec_type: grpc
    base_url_override: localhost:50051
    auth:
      type: bearer
      token: ${GRPC_TOKEN}

  - name: jenkins
    spec_url: https://jenkins.example.com/api/json
    base_url_override: https://jenkins.example.com
    auth:
      type: basic
      username: ${JENKINS_USER}
      password: ${JENKINS_API_TOKEN}  # Generate at /me/configure

timeout_seconds: 10
retries: 1

身份验证类型

类型字段
bearertoken
basicusername, password
api-keyheader, value

API配置字段

字段必填描述
nameyes此API的唯一名称(用作工具名称前缀)
spec_urlyes\*API规范的URL或文件路径
spec_typeno强制指定类型,而不是自动检测。目前仅 grpc 支持
base_url_overrideno\*覆盖规范中的基本URL。gRPC需要(host:port)
authno身份验证配置(请参阅下面的身份验证类型)
jenkinsno用于写操作的Jenkins特定配置

\* spec_url 在以下情况下不需要 spec_type: grpc 已设置(改用实时反射)。

MCP服务器标志

标志默认值描述
--config./config.yaml配置文件的路径(YAML或JSON,自动检测)
--transporthttpstdiohttp
--bindlocalhost:8191HTTP传输的侦听地址
--admintrue启用Web UI和管理仪表板(仅限HTTP)

附加标志

标志默认值描述
--storage./profiles.enc.yaml加密存储路径
--auth-modebearerbearernone
--key-envSKYLINE_PROFILES_KEYEnv-var保存32字节AES密钥
--env-file可选 .env 要加载的文件

______________________________________________________________________

运输方式

Skyline支持多种运输方式:

# HTTP + Admin UI (default)
skyline
# or explicitly:
skyline --transport http --admin

# HTTP only (no UI)
skyline --transport http --admin=false

# STDIO for Claude Desktop (coming soon)
skyline --transport stdio

______________________________________________________________________

项目布局

skyline-mcp/
│
├── cmd/                              # ── Entrypoint ─────────────────
│   └── skyline/                      #    Unified binary
│       ├── server.go                 #      All transports (http, stdio)
│       └── ui/                       #      Embedded Web UI & admin
│           ├── index.html
│           ├── admin.html
│           ├── app.js
│           └── styles.css
│
├── internal/                         # ── Core ───────────────────────
│   ├── canonical/                    #    Unified API model
│   │   ├── types.go                  #      Service, Operation, Parameter
│   │   └── naming.go                 #      Tool name generation
│   ├── config/                       #    Configuration
│   │   ├── config.go                 #      Types, validation, defaults
│   │   ├── load.go                   #      YAML file loading
│   │   ├── parse.go                  #      YAML parsing
│   │   ├── env.go                    #      ${ENV_VAR} expansion
│   │   └── remote.go                 #      Config server profile fetching
│   ├── mcp/                          #    MCP Protocol
│   │   ├── server.go                 #      JSON-RPC 2.0 handler (stdio)
│   │   ├── http_sse.go               #      Streamable HTTP + SSE transport
│   │   └── registry.go               #      Tool & resource registry
│   ├── runtime/                      #    Execution
│   │   └── executor.go               #      HTTP client, auth, retries
│   ├── redact/                       #    Security
│   │   └── redact.go                 #      Secret redaction for logs
│   │
│   ├── spec/                         # ── Spec Pipeline ──────────────
│   │   ├── adapter.go                #      SpecAdapter interface
│   │   ├── loader.go                 #      Auto-detect + parse orchestrator
│   │   ├── fetch.go                  #      Spec URL fetcher
│   │   ├── openapi_adapter.go        #      OpenAPI 3.x adapter
│   │   ├── swagger2_adapter.go       #      Swagger 2.0 adapter
│   │   ├── graphql_adapter.go        #      GraphQL adapter
│   │   ├── graphql_introspection.go  #      GraphQL introspection query
│   │   ├── wsdl_adapter.go           #      WSDL / SOAP adapter
│   │   ├── odata_adapter.go          #      OData v4 adapter
│   │   ├── openrpc_adapter.go        #      OpenRPC / JSON-RPC adapter
│   │   ├── postman_adapter.go        #      Postman Collections adapter
│   │   ├── grpc_adapter.go           #      gRPC adapter
│   │   ├── google_adapter.go         #      Google API Discovery adapter
│   │   ├── jenkins_adapter.go        #      Jenkins adapter
│   │   ├── jenkins_writes.go         #      Jenkins write operations
│   │   ├── asyncapi_adapter.go       #      AsyncAPI adapter
│   │   ├── raml_adapter.go           #      RAML adapter
│   │   ├── apiblueprint_adapter.go   #      API Blueprint adapter
│   │   └── insomnia_adapter.go       #      Insomnia adapter
│   │
│   └── parsers/                      # ── Parsers ────────────────────
│       ├── openapi/                  #      OpenAPI 3.x parser
│       ├── swagger2/                 #      Swagger 2.0 parser
│       ├── graphql/                  #      GraphQL SDL + introspection
│       ├── wsdl/                     #      WSDL 1.1 parser
│       ├── odata/                    #      OData v4 CSDL parser
│       ├── openrpc/                  #      OpenRPC / JSON-RPC parser
│       ├── postman/                  #      Postman Collection v2.x parser
│       ├── grpc/                     #      gRPC reflection parser
│       ├── googleapi/                #      Google API Discovery parser
│       ├── jenkins/                  #      Jenkins object graph parser
│       ├── asyncapi/                 #      AsyncAPI parser
│       ├── raml/                     #      RAML parser
│       ├── apiblueprint/             #      API Blueprint parser
│       └── insomnia/                 #      Insomnia collection parser
│
├── examples/                         # ── Examples ───────────────────
│   ├── config.yaml.example           #    Full config with all API types
│   ├── config.mock.yaml              #    Config for mock-api server
│   ├── config.yaml                   #    Minimal working config
│   └── skyline.env.example           #    Server env template
│
├── assets/                           # ── Branding ───────────────────
│   ├── skyline-banner.svg
│   └── skyline-logo.svg
│
├── Dockerfile                        # ── Docker ──────────────────────
├── go.mod
├── go.sum
└── README.md

______________________________________________________________________

Jenkins 2.545集成

Skyline为Jenkins 2.x提供全面支持 34次操作 涵盖所有主要的Jenkins API。非常适合CI/CD自动化、构建管理和管道编排。

快速开始

apis:
  - name: jenkins
    spec_url: https://jenkins.example.com/api/json
    base_url_override: https://jenkins.example.com
    auth:
      type: basic
      username: admin
      password: ${JENKINS_API_TOKEN}

特性

  • 自动检测Jenkins 2.x -无需手动配置
  • 34次操作 API的10个类别
  • 自动CSRF处理 -碎屑提取和缓存
  • 参数化构建 -完全参数支持
  • 管道支架 -詹金斯文件创建、回放、阶段
  • 蓝海API -现代管道可视化

运营覆盖范围

类别操作示例
核心 (3)根、对象查询、版本jenkins__getVersion, jenkins__getRoot
作业管理 (9)CRUD、启用/禁用、复制jenkins__createJob, jenkins__listJobs
构建操作 (7)触发器、停止、日志、工件jenkins__triggerBuild, jenkins__getBuildLog
管道 (3)创建、回放、关卡jenkins__createPipeline, jenkins__getPipelineStages
队列 (2)查看、取消jenkins__getQueue, jenkins__cancelQueueItem
节点 (4)列出、配置、脱机、删除jenkins__listNodes, jenkins__markNodeOffline
凭证 (1)列出商店jenkins__listCredentials
插件 (1)列表已安装jenkins__listPlugins
蓝海 (2)管道、管路jenkins__blueOceanPipelines
用户 (2)用户信息jenkins__getCurrentUser, jenkins__getUser

示例用法

列出所有作业:

{
  "tool": "jenkins__listJobs",
  "arguments": {}
}

触发参数化生成:

{
  "tool": "jenkins__triggerBuildWithParameters",
  "arguments": {
    "jobName": "deploy-prod",
    "parameters": {
      "BRANCH": "main",
      "ENVIRONMENT": "production"
    }
  }
}

获取构建控制台日志:

{
  "tool": "jenkins__getBuildLog",
  "arguments": {
    "jobName": "my-job",
    "buildNumber": "lastBuild"
  }
}

部署示例

Kubernetes(用Jenkins 2.545测试):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  template:
    spec:
      containers:
      - name: jenkins
        image: jenkins/jenkins:2.545-jdk21
        ports:
        - containerPort: 8080

请参阅 天际线文件 获取完整的Jenkins集成文档,包括所有34个操作及其示例、身份验证指南、CSRF处理和故障排除。

______________________________________________________________________

特殊情况

一些API不提供机器可读的规范(OpenAPI、GraphQL模式等),或者存在阻止自动检测的规范问题。对于这些,Skyline包括 自定义适配器 根据API官方文档手动定义操作。

詹金斯2.545⚠️

为什么是定制?\ Jenkins没有公开API规范。这 /api/json 端点返回当前值 状态 (作业、构建、队列),而不是端点定义。没有可用操作、参数或模式的机器可读文档。

解决方案:\ 基于以下内容手动执行34项操作 Jenkins REST API文档,包括:

  • 自动CSRF碎屑处理
  • 参数化构建支持
  • 管道操作(詹金斯文件、回放、阶段)
  • 蓝海API集成
  • 节点/代理管理

请参阅: 天际线文件 了解完整的Jenkins集成细节。

Slack Web API⚠️

为什么是定制?\ Slack在以下位置提供了OpenAPI规范(Swagger 2.0) https://api.slack.com/specs/openapi/v2/slack_web.json,但它包含 验证错误 打破标准的Swagger→ OpenAPI 3转换:

  • 使用基于非标准阵列的 items 对于联合类型(其中之一)
  • 例子: "items": [{"$ref": "..."}, {"type": "null"}] (应该是对象)
  • 受影响的3个定义: objs_conversation, objs_response_metadata, objs_user

解决方案:\ 基于以下内容手动执行23个最常用的操作 Slack Web API文档,包括:

运营(23):

  • 聊天(4): PostMessage,更新,删除,获取永久链接
  • 对话(6): 列表、创建、历史记录、邀请、信息、存档
  • 用户(3): 列表、信息、对话
  • 文件(2): 上传,列表
  • 反应(2): 添加、删除
  • 引脚(3): 添加、删除、列出
  • 提醒(2): 添加,列表
  • 频道(1): 列表(遗留)

认证:\ 承载令牌(具有适当范围的机器人令牌或用户令牌)。

例子:

apis:
  - name: slack
    spec_url: https://slack.com/api/auth.test  # Any Slack endpoint (for detection)
    base_url_override: https://slack.com/api
    auth:
      type: bearer
      token: ${SLACK_BOT_TOKEN}

未来: 如果Slack解决了OpenAPI规范验证问题,Skyline可以切换到自动检测,以实现172次操作的完整覆盖。

CKAN开放数据门户⚠️

为什么是定制? CKAN(https://ckan.org)是为全球大多数政府开放数据门户提供动力的开源数据管理系统。它不公开OpenAPI、Swagger或任何机器可读规范,而是在 /api/3/action/{action}.

解决方案: 基于 CKAN API文件,涵盖数据集发现、资源访问和数据存储查询。

操作(7):

  • searchDatasets --带有过滤查询、排序和分页的全文搜索
  • list数据集 --列出所有已发布的数据集名称,并进行分页
  • getDataset --包含所有资源的完整数据集元数据
  • 获取资源 --个人资源(文件/链接)元数据和下载URL
  • query数据存储 --针对表格数据资源的筛选SQL样式查询
  • 列表组织 --门户上的所有数据发布者/组织
  • 列表标签 --用于对数据集进行分类的所有主题标签

兼容门户(任何CKAN 2.x/3.x实例):

  • 🇺🇸 data.gov --美国联邦公开数据
  • 🇬🇧 data.gov.uk --英国政府数据
  • 🇸🇦 开放数据政府。 --沙特阿拉伯开放数据
  • 🇪🇺 数据.europa.eu --欧盟开放数据门户
  • 🇦🇺 data.gov.au --澳大利亚政府数据
  • 🇨🇦 open.canada.ca --加拿大开放数据
  • 🇮🇳 data.gov.in --印度政府数据
  • 🇧🇷 数据.gov.br --巴西开放数据
  • 100+更多 国家、地区和城市门户网站

例子:

apis:
  - name: us-open-data
    spec_type: ckan
    base_url_override: https://catalog.data.gov
    # No auth needed for public portals
    # auth required only for private datasets:
    # auth:
    #   type: api-key
    #   header: Authorization
    #   value: ${CKAN_API_TOKEN}

自动检测: Skyline还可以自动检测CKAN门户网站——只需提供基本URL,Skyline就会进行探测 /api/3/action/package_list 以确认它是CKAN实例。

______________________________________________________________________

建筑

# Build the binary
go build -o ./bin/skyline ./cmd/skyline

# Run tests
go test ./...

# Build from source (install script does this)
curl -fsSL https://skyline.projex.cc/install | bash -s source

码头工人

# Build the container
docker build -t skyline-mcp .

# Run with a config file
docker run -p 8191:8191 -v $(pwd)/config.yaml:/app/config.yaml skyline-mcp

______________________________________________________________________

故障排除

问题修复
启动失败,出现“缺少环境”确保所有 ${ENV_VAR} 配置中的引用设置了相应的环境变量
规范加载失败验证 spec_url 可达;使用配置服务器的测试功能进行检查
工具调用返回身份验证错误仔细检查您的 auth 阻断;承载令牌、API密钥和基本身份验证凭据必须符合目标API的要求
SOAP响应看起来像原始XML这是非标准SOAP服务所期望的;Skyline自动解析标准SOAP信封

______________________________________________________________________

示例与测试

知更鸟-测试API服务器

存储库:

Mocking Bird是一个独立的模拟API服务器,实现 所有7种协议类型 由Skyline提供支持。它是验证Skyline功能的完美测试伙伴,无需真正的API证书或外部依赖。

为什么嘲笑鸟?

1.协议覆盖测试\ 在没有外部服务的情况下,在本地测试每个规范适配器(OpenAPI、GraphQL、WSDL、OData等):

apis:
  - name: pets-openapi
    spec_url: http://localhost:9999/openapi/openapi.json
  - name: cars-graphql
    spec_url: http://localhost:9999/graphql/schema
  - name: plants-soap
    spec_url: http://localhost:9999/wdsl/wsdl
  - name: movies-odata
    spec_url: http://localhost:9999/odata/$metadata
  - name: calculator-jsonrpc
    spec_url: http://localhost:9999/jsonrpc/openrpc.json

2.集成测试\ 验证Skyline的MCP工具生成、JSON模式验证和运行时执行,而不影响生产API。

3.开发工作流程\ 针对可预测、可控的API环境开发和测试新的Skyline功能(身份验证处理、错误恢复、规范解析)。

4.CI/CD管道集成\ 在没有API密钥、速率限制或网络片状的情况下,在CI中运行自动测试。

模拟鸟API报道

模拟API协议端口规范端点
宠物OpenAPI 3.x9999/openapi/openapi.json
恐龙Swagger 2.09999/swagger/swagger.json
植物WSDL/SOAP9999/wdsl/wsdl
汽车GraphQL9999/graphql/schema
电影 OData V4 9999 /odata/$metadata
计算器JSON-RPC 2.09999/jsonrpc/openrpc.json
衣服gRPC50051-54已启用服务器反射

快速开始模仿鸟

# Clone and run Mocking Bird
git clone https://github.com/emadomedher/mocking-bird
cd mocking-bird
go run .
# Listening on http://localhost:9999

# In another terminal, run Skyline with mock config
cd skyline-mcp
go run ./cmd/skyline --config ./examples/config.mock.yaml

模拟鸟的配置示例

examples/config.mock.yaml 对于使用所有Mocking Bird端点的完整工作配置:

apis:
  - name: pets-openapi
    spec_url: http://localhost:9999/openapi/openapi.json
    base_url_override: http://localhost:9999/openapi

  - name: dinosaurs-swagger
    spec_url: http://localhost:9999/swagger/swagger.json
    base_url_override: http://localhost:9999/swagger
    auth:
      type: bearer
      token: MOCK_DINO_TOKEN

  - name: plants-soap
    spec_url: http://localhost:9999/wdsl/wsdl
    auth:
      type: bearer
      token: MOCK_TOKEN

  - name: cars-graphql
    spec_url: http://localhost:9999/graphql/schema
    base_url_override: http://localhost:9999/graphql
    auth:
      type: basic
      username: graphql-user
      password: MOCK_GRAPHQL_PASS

  - name: movies-odata
    spec_url: http://localhost:9999/odata/$metadata
    base_url_override: http://localhost:9999/odata

  - name: calculator-jsonrpc
    spec_url: http://localhost:9999/jsonrpc/openrpc.json
    base_url_override: http://localhost:9999/jsonrpc
    auth:
      type: api-key
      header: X-API-Key
      value: calc-key

测试所有工具

运行后,使用MCP检查器或任何MCP客户端进行验证:

# List all generated tools
mcpx tools list

# Test OpenAPI (Pets)
mcpx tools call pets-openapi__listPets

# Test GraphQL (Cars)
mcpx tools call cars-graphql__query_listCars

# Test SOAP (Plants)
mcpx tools call plants-soap__getAllPlants

# Test OData (Movies)
mcpx tools call movies-odata__listMovies

# Test JSON-RPC (Calculator)
mcpx tools call calculator-jsonrpc__add '{"a": 5, "b": 3}'

结果: 对Skyline的规范解析、工具生成和所有支持协议的运行时执行进行全面的端到端验证。

______________________________________________________________________

卸载

要从系统中完全删除Skyline:

curl -fsSL https://skyline.projex.cc/uninstall | bash

这将:

  • 停止并禁用systemd服务
  • 删除服务文件
  • 从中删除二进制文件 /usr/local/bin~/.local/bin
  • 将您的数据保存在 ~/.skyline/ (配置文件、配置、审计数据库)

手动拆卸:

# Stop service
systemctl --user stop skyline
systemctl --user disable skyline

# Remove service file
rm -f ~/.config/systemd/user/skyline.service
systemctl --user daemon-reload

# Remove binary
sudo rm -f /usr/local/bin/skyline
rm -f ~/.local/bin/skyline

# Optional: remove data
rm -rf ~/.skyline/

______________________________________________________________________

Built with Go. Powered by MCP.

______________________________________________________________________

许可证

GNU Affero通用公共许可证v3.0(AGPL-3.0)

Skyline根据AGPL-3.0获得许可。看 许可证 获取完整的许可证文本。

为什么选择AGPL-3.0?

  • 强大的copyleft:确保软件和所有修改保持开源
  • 网络保护:通过网络进行交互的用户可以访问源代码
  • 商业用途:可用于商业用途,但修改必须共享
  • 社区优先:贡献使生态系统中的每个人受益

版权所有2026 Projex数字

目录标签

目录标签

AI代理多协议支持GoClaudeAPI集成本地部署自动化工具JSONSchema验证

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP