MCP サーバー - モデルコンテキストプロトコル API

MCP サーバーは、LLM モデルとアプリケーション間の相互作用のための標準化されたインターフェイスを提供するモデル コンテキスト プロトコル (MCP) の FastAPI ベースの実装です。
特徴
🚀 FastAPIと非同期操作に基づく高性能API
🔄 リソース、機器、プロンプト、サンプリングによる完全な MCP サポート
📊 PrometheusとGrafanaによるモニタリングとメトリクス
🧩 シンプルなインターフェースで新しいツールを追加できる拡張性
📝 データを柔軟に操作できるGraphQL API
💬 リアルタイムインタラクションのためのWebSocketサポート
🔍 Elasticsearchとの統合によるセマンティック検索
🗃️ Redis によるキャッシュでパフォーマンスを向上
📦 信頼性の高いパッケージ管理のために、Poetry で依存関係を管理します
Related MCP server: microCMS MCP Server
はじめる
インストール
リポジトリのクローン:
git clone https://github.com/yourusername/myaiserv.git
cd myaiserv
Poetry をインストールします (まだインストールされていない場合):
curl -sSL https://install.python-poetry.org | python3 -
Poetry 経由で依存関係をインストールします。
サーバーの起動
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
または just ユーティリティ経由で:
起動後、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
利用可能なツール
ファイルシステムツール
ファイルの読み取り、書き込み、削除、一覧表示をサポートするファイル システム ツール。
curl -X POST "http://localhost:8000/tools/file_operations" \
-H "Content-Type: application/json" \
-d '{"operation": "list", "path": "."}'
天気ツール
座標によって天気データを取得するためのツール。
curl -X POST "http://localhost:8000/tools/weather" \
-H "Content-Type: application/json" \
-d '{"latitude": 37.7749, "longitude": -122.4194}'
テキスト分析ツール
感情の検出や要約を含むテキスト分析ツール。
curl -X POST "http://localhost:8000/tools/text_analysis" \
-H "Content-Type: application/json" \
-d '{"text": "Example text for analysis", "analysis_type": "sentiment"}'
テキストプロセッサツール
書式設定、統計計算、エンティティ抽出などのテキスト処理ツール。
curl -X POST "http://localhost:8000/tools/text_processor" \
-H "Content-Type: application/json" \
-d '{"operation": "statistics", "text": "Example text", "stat_options": ["chars", "words"]}'
画像処理ツール
サイズ変更、切り取り、フィルターの適用をサポートする画像処理ツール。
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 を使用します。
または just ユーティリティ経由で:
ドッカー
Docker Compose によるビルドと実行
個々のサービスを起動するには:
docker compose up -d web redis elasticsearch
LLMとの統合
MCP サーバーは、さまざまなベンダーの 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 サーバーは/metricsエンドポイントを介して Prometheus 形式のメトリックを提供します。指標には次のものが含まれます:
各ツールへのリクエスト数
クエリ実行時間
エラーと例外
発達
コードをフォーマットしてリンターでチェックするには:
ライセンス
MITライセンス