mcpField
M
MyAIServ: AI-Powered FastAPI Server with MCP 🚀

MyAIServ: AI-Powered FastAPI Server with MCP 🚀

ローカル
github.com/eagurin開発ツール885 週間前に更新

MyAIServ: AI-Powered FastAPI Server with MCP 🚀 について

MyAIServは、LLMとアプリケーションをつなぐFastAPIベースのMCPサーバーです。MCP機能に加え、GraphQL、WebSocket、検索、キャッシュ、監視を備えています。

主な機能

  1. 01MCPのリソース、ツール、プロンプト、サンプリング
  2. 02ファイル、天気、テキスト、画像のツール
  3. 03GraphQLとWebSocket API
  4. 04Elasticsearchによるセマンティック検索
  5. 05RedisキャッシュとPrometheusメトリクス

活用シーン

  1. 01LLMアプリケーションへのファイル・テキスト操作の提供
  2. 02インデックス済みコンテンツのセマンティック検索
  3. 03ツールのリクエスト数と処理時間の監視

MCP 対応

MCPを実装し、MCPクライアントにリソース、ツール、プロンプト、サンプリング機能を提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP Server - Model Context Protocol API

FastAPI Python Poetry Prometheus GraphQL

MCP Server は、FastAPI をベースにした Model Context Protocol(MCP)の実装であり、LLM とアプリケーション間のやり取りに標準化されたインターフェースを提供します。

特長

  • 🚀 FastAPI と非同期処理をベースにした 高性能 API
  • 🔄 リソース、ツール、プロンプト、サンプリングに対応した MCP の完全サポート
  • 📊 Prometheus と Grafana による モニタリングとメトリクス
  • 🧩 新しいツールを簡単に追加できるインターフェースによる 拡張性
  • 📝 柔軟なデータ操作を可能にする GraphQL API
  • 💬 リアルタイム通信のための WebSocket サポート
  • 🔍 Elasticsearch との連携による セマンティック検索
  • 🗃️ パフォーマンスを向上させる Redis による キャッシュ
  • 📦 パッケージを確実に管理する Poetry による 依存関係管理

はじめに

インストール
  1. リポジトリをクローンします:

    git clone https://github.com/yourusername/myaiserv.git
    cd myaiserv
    
  2. Poetry をインストールします(まだインストールされていない場合):

    curl -sSL https://install.python-poetry.org | python3 -
    
  3. Poetry で依存関係をインストールします:

    poetry install
    
サーバーの起動
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

または、just ユーティリティを使います:

just run

起動後、API は http://localhost:8000 で利用できます。

API ドキュメント

プロジェクト構成

myaiserv/
├── app/
│   ├── core/             # Базовые компоненты MCP
│   │   ├── base_mcp.py   # Абстрактные классы MCP
│   │   └── base_sampling.py  # Базовые классы для сэмплирования
│   ├── models/           # Pydantic модели
│   │   ├── mcp.py        # Модели данных MCP
│   │   └── graphql.py    # GraphQL схема
│   ├── services/         # Бизнес-логика
│   │   └── mcp_service.py # Сервис MCP
│   ├── storage/          # Хранилище данных
│   ├── tools/            # Инструменты MCP
│   │   ├── example_tool.py   # Примеры инструментов
│   │   └── text_processor.py # Инструмент обработки текста
│   ├── utils/            # Утилиты
│   └── main.py           # Точка входа FastAPI
├── app/tests/            # Тесты
├── docs/                 # Документация
│   └── MCP_API.md        # Описание API
├── pyproject.toml        # Конфигурация Poetry и инструментов
└── .justfile             # Задачи для утилиты just

利用可能なツール

File System Tool

ファイルの読み取り、書き込み、削除、一覧表示に対応したファイルシステム操作ツールです。

curl -X POST "http://localhost:8000/tools/file_operations" \
     -H "Content-Type: application/json" \
     -d '{"operation": "list", "path": "."}'
Weather Tool

座標に基づいて天気データを取得するツールです。

curl -X POST "http://localhost:8000/tools/weather" \
     -H "Content-Type: application/json" \
     -d '{"latitude": 37.7749, "longitude": -122.4194}'
Text Analysis Tool

感情分析や要約など、テキストを分析するツールです。

curl -X POST "http://localhost:8000/tools/text_analysis" \
     -H "Content-Type: application/json" \
     -d '{"text": "Example text for analysis", "analysis_type": "sentiment"}'
Text Processor Tool

書式設定、統計情報の計算、エンティティの抽出など、テキストを処理するツールです。

curl -X POST "http://localhost:8000/tools/text_processor" \
     -H "Content-Type: application/json" \
     -d '{"operation": "statistics", "text": "Example text", "stat_options": ["chars", "words"]}'
Image Processing Tool

サイズ変更、トリミング、フィルター適用に対応した画像処理ツールです。

curl -X POST "http://localhost:8000/tools/image_processing" \
     -H "Content-Type: application/json" \
     -d '{"operation": "resize", "image_data": "base64...", "params": {"width": 800, "height": 600}}'

WebSocket API

WebSocket API に接続するには:

const socket = new WebSocket("ws://localhost:8000/ws");

socket.onopen = () => {
  socket.send(JSON.stringify({
    type: "initialize",
    id: "my-request-id"
  }));
};

socket.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log("Received:", data);
};

GraphQL API

GraphQL を使ったクエリの例:

# Получение списка всех инструментов
query {
  getTools {
    name
    description
  }
}

# Выполнение инструмента
mutation {
  executeTool(input: {
    name: "text_processor",
    parameters: {
      operation: "statistics",
      text: "Example text for analysis"
    }
  }) {
    content {
      type
      text
    }
    is_error
  }
}

テストの実行

テストを実行するには、Poetry を使います:

poetry run pytest

または、just ユーティリティを使います:

just test

Docker

Docker Compose によるビルドと起動
docker compose up -d

個別のサービスを起動するには:

docker compose up -d web redis elasticsearch

LLM との連携

MCP Server は、さまざまなプロバイダーの LLM と連携するための標準化されたインターフェースを提供します:

import httpx

async def query_mcp_with_llm(prompt: str):
    async with httpx.AsyncClient() as client:
        # Запрос к MCP для получения контекста и инструментов
        tools_response = await client.get("http://localhost:8000/tools")
        tools = tools_response.json()["tools"]

        # Отправка запроса к LLM с включением MCP контекста
        llm_response = await client.post(
            "https://api.example-llm.com/v1/chat",
            json={
                "messages": [
                    {"role": "system", "content": "You have access to the following tools:"},
                    {"role": "user", "content": prompt}
                ],
                "tools": tools,
                "tool_choice": "auto"
            }
        )

        return llm_response.json()

メトリクスとモニタリング

MCP Server は /metrics エンドポイントで Prometheus 形式のメトリクスを提供します。メトリクスには次の項目が含まれます:

  • 各ツールへのリクエスト数
  • リクエストの実行時間
  • エラーと例外

開発

コードのフォーマットとリンターによるチェックを行うには:

just fmt
just lint

ライセンス

MIT License

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。