API端点建议服务

基于OpenAPI规范为用户目的推荐合适API端点的MCP协议服务器,支持与AI模型集成。

  • by nimiusrd
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 nimiusrd/api-mcp-server

使用说明

API建议服务器

概要

API Suggestion Server单击功能区上OpenAPI根据规格API提出端点MCP(Model Context Protocol)服务器。此服务器可根据用户的目的和要求提供API从端点中提出最佳方案。

机能

  • 多个OpenAPI规格(YAML或JSON格式),模板名称将采用不同的格式API收集端点信息
  • 基于用户目的关联API建议端点
  • MCP通过协议AI与模型协作

前提条件

  • Node.js 18以上
  • npm 在工作空间的边缘yarn

安装

# リポジトリをクローン
git clone https://github.com/yourusername/api-mcp-server.git
cd api-mcp-server

# 依存関係をインストール
npm install

设定

服务器设置为server.config.ts中所述修改相应参数的值。您可以更改以下设置:

import { ServerConfig } from "./src/types.ts";

export const config: ServerConfig = {
  name: "api-suggestion-server",
  version: "1.0.0",
  services: [
    {
      name: "サービス名",
      // OpenAPI仕様のURLを指定
      openApiUrl: "https://example.com/api/openapi.json"
    },
    {
      name: "別のサービス",
      // ローカルファイルパスを指定(YAMLまたはJSON)
      openApiFilePath: "./schemas/your-api.yaml"
    }
  ]
};

使用方法

启动服务器

npm start

服务器通过标准输入输出(stdio)MCP通过协议进行通信。

実行例

以下实际上是API使用摘要服务器的示例:

  1. 启动服务器:
# ターミナルでサーバーを起動
npm start
  1. MCP支持的AI模型(例如:Claude)与:
// MCPプロトコルを使用してAIモデルとの対話を設定
const conversation = await anthropic.messages.create({
  model: "claude-3-sonnet-20240229",
  max_tokens: 1000,
  messages: [{ role: "user", content: "ユーザー情報を取得するAPIはありますか?" }],
  tools: [
    {
      // API Suggestion Serverのツール設定
      name: "suggest_api",
      description: "指定された用途に適したAPIエンドポイントをサジェストします。",
      input_schema: {
        type: "object",
        properties: {
          purpose: {
            type: "string",
            description: "APIエンドポイントを使用したい用途や目的の説明。",
          },
        },
        required: ["purpose"],
      }
    }
  ],
  tool_choice: "auto"
});

// AIモデルの応答からツール呼び出しを処理
if (conversation.content[0].type === "tool_use") {
  const toolUse = conversation.content[0];
  
  // ツール呼び出しをMCPサーバーに転送
  // ここでは簡略化していますが、実際にはMCPプロトコルの仕様に従った通信が必要です
  const result = await mcpClient.callTool(toolUse.name, toolUse.input);
  
  // ツールの結果をAIモデルに返す
  const followUp = await anthropic.messages.create({
    model: "claude-3-sonnet-20240229",
    max_tokens: 1000,
    messages: [
      { role: "user", content: "ユーザー情報を取得するAPIはありますか?" },
      { role: "assistant", content: toolUse },
      { 
        role: "user", 
        content: [
          { type: "tool_result", tool_use_id: toolUse.id, content: JSON.stringify(result) }
        ]
      }
    ]
  });
  
  console.log(followUp.content);
}
  1. 执行结果示例:

AI该模型由服务器提供API使用端点信息生成以下响应:

はい、ユーザー情報を取得するためのAPIエンドポイントがいくつかあります:

1. GET /users/{userId}
   - 説明: 指定されたIDのユーザー情報を取得します
   - サービス: サンプルAPI

2. GET /users
   - 説明: 登録されているすべてのユーザーの一覧を取得します
   - サービス: サンプルAPI

特定のユーザーの情報を取得するには「GET /users/{userId}」を使用し、ユーザーIDをパスパラメータとして指定します。複数のユーザー情報を一度に取得するには「GET /users」を使用できます。

### AIモデルとの連携

このサーバーはMCPプロトコルを実装しており、Claude、GPT-4などのAIモデルと連携できます。AIモデルは以下のツールを呼び出すことができます:

#### suggest_api

指定された用途に適したAPIエンドポイントを提案します。

**入力パラメータ**:
- `purpose`: APIエンドポイントを使用したい用途や目的の説明(文字列)

**出力**:
- 関連するAPIエンドポイントのリスト(サービス名、パス、メソッド、説明を含む)

**使用例**:
```json
{
  "name": "suggest_api",
  "arguments": {
    "purpose": "ユーザー情報を取得する"
  }
}

応答例:

{
  "toolResult": [
    {
      "service": "サンプルAPI",
      "path": "/users/{userId}",
      "method": "GET",
      "description": "指定されたIDのユーザー情報を取得します"
    },
    {
      "service": "サンプルAPI",
      "path": "/users",
      "method": "GET",
      "description": "登録されているすべてのユーザーの一覧を取得します"
    }
  ]
}

自定义

新建OpenAPI添加规格

  1. OpenAPI规格文件(YAML或JSON)打开schemas添加到目录或发布URL准备,准备
  2. server.config.ts编辑文件并添加新服务

支持的格式

  • YAML格式OpenAPI规格(.yaml在工作空间的边缘.yml扩张子)
  • JSON形式の开放应用程序接口仕様(.json扩张子)
  • URL在工作空间的边缘OpenAPI规格(根据内容类型自动分析)

开発

构建

npm run build

测试

可以使用以下命令执行测试:

# 全てのテストを実行
npm test

# テストをウォッチモードで実行(開発中に便利)
npm run test:watch

# カバレッジレポートを生成
npm run test:coverage

测试分为以下几类:

  • 网站名称:utils.test.ts: OpenAPI测试文档透视功能
  • server.test.ts:测试服务器初始化
  • 建议-api.test.ts: API测试摘要功能

单击功能区上src/tests在目录中*.test.ts请创建文件。

目录结构

api-mcp-server/
├── src/
│   ├── index.ts        # メインサーバーコード
│   ├── utils.ts        # ユーティリティ関数
│   ├── types.ts        # 型定義
│   └── tests/          # テストファイル
├── schemas/            # OpenAPI仕様ファイル
├── server.config.ts    # サーバー設定
├── tsconfig.json       # TypeScript設定
└── package.json        # プロジェクト設定

许可证

麻省理工学院

貢献

错误报告和功能请求GitHub的,之Issue请通过跟踪器。也欢迎拉式请求。