AutoMCP について
AutoMCPは、YAMLのサービス定義からMCP対応のサーバーとクライアントのコードを生成します。MCPサービスを開発する人向けで、ツールハンドラーのひな形も作成します。現在も開発中です。
主な機能
- 01MCPサーバーコードの生成
- 02クライアントライブラリの生成
- 03ツールハンドラーのひな形作成
- 04サービス単位での生成コード整理
活用シーン
- 01YAML定義からサーバーのひな形を作成
- 02サービス用クライアントを生成
- 03ツール実装用のハンドラーひな形を作成
MCP 対応
サービス定義をもとに、MCP対応サーバーコードとクライアントライブラリを生成します。機能実装用のツールハンドラーひな形も出力します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AutoMCP
AutoMCP は、YAML サービス定義に基づいてサーバーコードとクライアントコードを自動生成する、Model Context Protocol 用のコードジェネレーターです。
現在開発中です。このリポジトリには、npm、pypl などへのパッケージ化が完了した際に削除される予定のファイルが含まれています。
エージェント型ワークフローでの使用方法については、MCP Agent を参照してください。
機能
- MCP 互換のサーバーコードを生成します
- サービスを簡単に利用するためのクライアントライブラリを生成します
- ツールの機能を実装するためのハンドラースタブを作成します
- サービスごとに専用のディレクトリにコードを整理します
はじめに
前提条件
- Node.js 18 以降
- npm または yarn
インストール
- このリポジトリをクローンします
- 依存関係をインストールします:
npm install
使い方
サービスの定義
services/[service-name]/ ディレクトリに、次の構造の YAML ファイルを作成します:
service:
name: ServiceName
version: 1.0.0
description: Description of your service
tools:
- name: toolName
description: Description of what the tool does
parameters:
- name: paramName
type: string
description: Description of the parameter
returns:
type: string
description: Description of what the tool returns
コードの生成
ジェネレータースクリプトを実行します:
./bin/automcp.sh generate
これにより、次の処理が行われます:
generated/[service-name]/[service-name]_server.tsにサーバーコードを作成しますgenerated/[service-name]/[service-name]_client.tsにクライアントコードを作成しますsrc/custom/[service-name]/[tool-name]Handlers.tsにハンドラースタブを作成します
ハンドラーの実装
生成されたハンドラーファイルを src/custom/[service-name]/ で編集し、ツールの機能を実装します。
生成されたクライアントの使用
import { ServiceNameClient } from "./generated/service-name/service_name_client.js";
async function main() {
const client = new ServiceNameClient();
try {
await client.connect();
// Call a tool
const result = await client.toolName({ paramName: "value" });
console.log(result);
} finally {
await client.disconnect();
}
}
main().catch(console.error);
例
生成されたクライアントの使用方法をすべて確認するには、examples/client_example.ts ファイルを参照してください。
テスト
テストスクリプトを使用して、サービスの機能を確認します:
./bin/test-service.sh [service-name]
一時的なディレクトリ構成(パッケージ化に向けて改善予定)
.
├── bin/ # Scripts
├── examples/ # Example usage
├── generated/ # Generated code
│ ├── service-name/ # Service-specific generated code
│ │ ├── service_name_server.ts
│ │ └── service_name_client.ts
├── services/ # Service definitions
│ └── service-name/ # Service-specific YAML files
├── src/ # Source code
│ ├── custom/ # Custom handler implementations
│ │ └── service-name/ # Service-specific handlers
│ │ └── toolHandlers.ts
│ └── generator.ts # Code generator
└── templates/ # Code templates
├── client.ts.ejs # Client template
└── server.ts.ejs # Server template
今後の予定
- 複数のプログラミング言語をサポートします
- 生成されたコードとスキーマが乖離しないよう、カスタムの型付けを追加します
- 既存の MCP ソリューションと連携します
- プロンプトとリソースの仕組みを実装します
- 複雑なツールチェーンに対応する、より高度な構成の仕組みを追加します
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。