MCP Server - Model Context Protocol について
Model Context Protocolの概要とNode.js製の時刻サーバーを含むリポジトリです。MCP連携を構築する開発者向けに、サーバー作成例とタイムゾーン間の時刻取得・変換ツールを提供します。
主な機能
- 01MCPサーバーの概念と構築例
- 02Node.js製の時刻サーバー
- 03IANAタイムゾーンでの現在時刻取得
- 04タイムゾーン間の時刻変換
- 05DockerとVS CodeのMCP設定
活用シーン
- 01PythonまたはTypeScriptでのMCPサーバー構築
- 02指定タイムゾーンの現在時刻の取得
- 03異なるタイムゾーン間の時刻変換
MCP 対応
MCPサーバーがWebSocketまたはstdioを介してAIクライアントにツール、リソース、プロンプトを提供する仕組みを説明しています。付属の時刻サーバーは `get_current_time` と `convert_time` ツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバー - Model Context Protocol
📖 MCP サーバーの紹介
Model Context Protocol (MCP) は、AI モデルが外部のデータソースやツールとやり取りする方法を標準化するために Anthropic が開発したオープンプロトコルです。MCP サーバーはこのエコシステムにおける重要な構成要素であり、AI モデルとさまざまなサービス、データベース、API をつなぐ役割を果たします。
🔑 中核となる概念
- MCP サーバー:AI モデルにツール、リソース、プロンプトを提供するバックエンドサービスです
- 標準プロトコル:システム間の互換性を確保するため、JSON-RPC 2.0 を使用します
- クライアント・サーバーアーキテクチャ:AI アプリケーション(クライアント)は、WebSocket または stdio を通じて MCP サーバーと通信します
🌟 実際の使用例
1. データベースとの連携
AI Model ↔ MCP Server ↔ Database (MySQL, PostgreSQL, MongoDB)
- AI がデータを直接クエリし、分析できるようにします
- データベースからレポートや分析結果を自動生成します
2. 外部 API への接続
AI Model ↔ MCP Server ↔ External APIs (Weather, Stock, Social Media)
- Web サービスからリアルタイムデータを取得します
- 自動化タスクを実行します
3. ファイルシステムの管理
AI Model ↔ MCP Server ↔ Local/Cloud Storage
- ファイルの読み取り、書き込み、処理を行います
- データをバックアップし、同期します
🚀 よくあるユースケース
1. ビジネスインテリジェンスと分析
- 説明:ビジネスデータを自動的に分析します
- 例:sales データベースから月次収益レポートを作成します
# MCP Server cung cấp tool để query database
tools = [
{
"name": "query_sales_db",
"description": "Query sales database",
"parameters": {"query": "string"}
}
]
2. カスタマーサポートの自動化
- 説明:AI チャットボットを通じて顧客をサポートします
- 例:注文情報を検索し、チケットのステータスを更新します
tools = [
{
"name": "get_order_status",
"description": "Get customer order status",
"parameters": {"order_id": "string"}
}
]
3. コンテンツ管理
- 説明:コンテンツを管理し、自動生成します
- 例:ブログ記事を自動作成し、CMS を更新します
tools = [
{
"name": "publish_content",
"description": "Publish content to CMS",
"parameters": {"title": "string", "content": "string"}
}
]
4. DevOps とモニタリング
- 説明:システムを監視し、デプロイを自動化します
- 例:サーバーの健全性を確認し、アプリケーションをデプロイします
tools = [
{
"name": "check_server_health",
"description": "Check server health status",
"parameters": {"server_id": "string"}
}
]
5. E コマースとの連携
- 説明:AI を通じてオンラインショップを管理します
- 例:在庫を更新し、注文を処理し、カスタマーサービスを提供します
🛠️ MCP サーバーの作成方法
ステップ 1:環境のセットアップ
# Python
pip install mcp
# Node.js
npm install @modelcontextprotocol/sdk
# TypeScript
npm install @modelcontextprotocol/sdk typescript
ステップ 2:基本的な MCP サーバーの作成(Python)
#!/usr/bin/env python3
import asyncio
import json
from mcp.server import Server
from mcp.server.models import InitializationOptions
from mcp.server.stdio import stdio_server
from mcp.types import TextContent, Tool
server = Server("my-mcp-server")
@server.list_tools()
async def handle_list_tools() -> list[Tool]:
"""Danh sách các tools có sẵn"""
return [
Tool(
name="echo",
description="Echo back the input",
inputSchema={
"type": "object",
"properties": {
"message": {"type": "string"}
},
"required": ["message"]
}
)
]
@server.call_tool()
async def handle_call_tool(name: str, arguments: dict) -> list[TextContent]:
"""Xử lý tool calls"""
if name == "echo":
message = arguments.get("message", "")
return [TextContent(type="text", text=f"Echo: {message}")]
else:
raise ValueError(f"Unknown tool: {name}")
async def main():
async with stdio_server() as (read_stream, write_stream):
await server.run(
read_stream,
write_stream,
InitializationOptions(
server_name="my-mcp-server",
server_version="1.0.0",
capabilities=server.get_capabilities()
)
)
if __name__ == "__main__":
asyncio.run(main())
ステップ 3:TypeScript で MCP サーバーを作成
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
class MyMCPServer {
private server: Server;
constructor() {
this.server = new Server(
{
name: 'my-mcp-server',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
);
this.setupHandlers();
}
private setupHandlers() {
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'calculator',
description: 'Perform basic math operations',
inputSchema: {
type: 'object',
properties: {
operation: { type: 'string', enum: ['add', 'subtract', 'multiply', 'divide'] },
a: { type: 'number' },
b: { type: 'number' },
},
required: ['operation', 'a', 'b'],
},
},
],
}));
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
if (name === 'calculator') {
const { operation, a, b } = args as any;
let result: number;
switch (operation) {
case 'add':
result = a + b;
break;
case 'subtract':
result = a - b;
break;
case 'multiply':
result = a * b;
break;
case 'divide':
result = a / b;
break;
default:
throw new Error(`Unknown operation: ${operation}`);
}
return {
content: [{ type: 'text', text: `Result: ${result}` }],
};
}
throw new Error(`Unknown tool: ${name}`);
});
}
async run() {
const transport = new StdioServerTransport();
await this.server.connect(transport);
}
}
const server = new MyMCPServer();
server.run().catch(console.error);
ステップ 4:MCP サーバーを使用するためのクライアント設定
{
"mcpServers": {
"my-server": {
"command": "python",
"args": ["path/to/your/mcp_server.py"]
}
}
}
ステップ 5:MCP サーバーのテスト
# Test với stdio
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | python mcp_server.py
📁 リポジトリ内のプロジェクト
🕐 MCP Time Server(Node.js)
場所:mcp-time-node/
時間に関する機能を提供する、Node.js で書かれた MCP サーバーです。
✨ 機能
- 現在時刻の取得:指定したタイムゾーンの現在時刻を取得します
- 時刻の変換:異なるタイムゾーン間で時刻を変換します
- IANA タイムゾーンのサポート:IANA 標準に基づくすべてのタイムゾーンをサポートします
🚀 使用方法
# Chạy với Node.js trực tiếp
cd mcp-time-node
npm install
npm start
# Chạy demo
npm run demo
# Chạy với Docker
docker build -t mcp-time-server .
docker run -i --rm mcp-time-server
📋 利用可能なツール
-
get_current_time
- 現在時刻を取得します
- パラメーター:
timezone(IANA タイムゾーン名) - 例:
Asia/Ho_Chi_Minh、America/New_York、Europe/London
-
convert_time
- タイムゾーン間で時刻を変換します
- パラメーター:
time:HH:MM 形式の時刻source_timezone:変換元のタイムゾーンtarget_timezone:変換先のタイムゾーン
🐳 Docker のサポート
このプロジェクトは、本番環境向けに最適化された Dockerfile を使ってコンテナ化されています。
- ベースイメージ:
node:18-alpine - セキュリティ:root 以外のユーザーを使用
- サイズ:最小限の容量
⚙️ VS Code MCP 連携
.vscode/mcp.json で事前に設定済みの 2 つのオプションがあります。
- mcp-time-node:Node.js で直接実行します
- mcp-time-docker:Docker コンテナで実行します
💡 使用例
// Lấy thời gian hiện tại ở Việt Nam
{
"name": "get_current_time",
"arguments": {
"timezone": "Asia/Ho_Chi_Minh"
}
}
// Chuyển đổi 14:30 từ Việt Nam sang New York
{
"name": "convert_time",
"arguments": {
"time": "14:30",
"source_timezone": "Asia/Ho_Chi_Minh",
"target_timezone": "America/New_York"
}
}
🔮 MCP の未来
1. エコシステムの拡大
- プロバイダーの増加:データベース、クラウドサービス、IoT デバイス
- コミュニティ主導:オープンソースのツールや拡張機能
- 標準化:AI 連携における業界標準を目指します
2. パフォーマンスの向上
- キャッシュ機構:応答時間を最適化します
- 並列処理:複数のリクエストを同時に処理します
- ロードバランシング:トラフィックの多いアプリケーションに負荷を分散します
3. セキュリティの強化
- 認証と認可:OAuth2、JWT トークン
- データ暗号化:エンドツーエンド暗号化
- 監査ログ:あらゆるインタラクションを追跡し、ログに記録します
4. AI ネイティブ機能
- コンテキスト認識:過去の会話からコンテキストをより適切に理解します
- 学習機能:自ら学習し、パフォーマンスを改善します
- マルチモーダル対応:テキスト、画像、音声、動画を処理します
5. エンタープライズでの導入
- エンタープライズレベルのセキュリティ:GDPR、HIPAA に準拠します
- スケーラビリティ:数百万の同時接続に対応します
- モニタリングと分析:詳細なダッシュボードとメトリクスを提供します
6. インテグレーションのトレンド
Current: AI ↔ MCP Server ↔ Single Service
Future: AI ↔ MCP Server ↔ Multiple Services (Orchestration)
- サービスオーケストレーション:1 つの MCP サーバーで複数のサービスを管理します
- ワークフローの自動化:複雑なビジネスプロセスを自動化します
- リアルタイムコラボレーション:複数の AI エージェントが協力して作業します
📈 今後のロードマップ
| タイムライン | マイルストーン |
|---|---|
| 2025 Q2 | パフォーマンスを改善した MCP v2.0 |
| 2025 Q3 | エンタープライズ向けセキュリティ機能 |
| 2025 Q4 | マルチモーダル対応 |
| 2026 Q1 | サービスオーケストレーションプラットフォーム |
| 2026 Q2 | AI エージェントコラボレーションフレームワーク |
🎯 まとめ
MCP Server は、AI を実際のシステムに統合するための基盤になりつつあります。AI モデルと外部サービスを柔軟に接続できるため、MCP は自動化とインテリジェントなアプリケーションに数多くの可能性をもたらします。
主なポイント:
- ✅ AI インテグレーションのための標準化されたプロトコル
- ✅ 実装とメンテナンスが容易
- ✅ エコシステムが力強く発展中
- ✅ エンタープライズでの導入により、将来性は大いに期待できます
今すぐ MCP Server を使い始めて、アプリケーションで AI の力を活用しましょう!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。