使用说明
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使用摘要服务器的示例:
- 启动服务器:
# ターミナルでサーバーを起動
npm start
- 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);
}
- 执行结果示例:
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添加规格
- OpenAPI规格文件(YAML或JSON)打开
schemas添加到目录或发布URL准备,准备 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请通过跟踪器。也欢迎拉式请求。
