mcpField
M
MCP Server - Model Context Protocol

MCP Server - Model Context Protocol

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

MCP Server - Model Context Protocol について

Model Context Protocolの概要とNode.js製の時刻サーバーを含むリポジトリです。MCP連携を構築する開発者向けに、サーバー作成例とタイムゾーン間の時刻取得・変換ツールを提供します。

主な機能

  1. 01MCPサーバーの概念と構築例
  2. 02Node.js製の時刻サーバー
  3. 03IANAタイムゾーンでの現在時刻取得
  4. 04タイムゾーン間の時刻変換
  5. 05DockerとVS CodeのMCP設定

活用シーン

  1. 01PythonまたはTypeScriptでのMCPサーバー構築
  2. 02指定タイムゾーンの現在時刻の取得
  3. 03異なるタイムゾーン間の時刻変換

MCP 対応

MCPサーバーがWebSocketまたはstdioを介してAIクライアントにツール、リソース、プロンプトを提供する仕組みを説明しています。付属の時刻サーバーは `get_current_time` と `convert_time` ツールを公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"maithanhduyan": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

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

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

詳細

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
📋 利用可能なツール
  1. get_current_time

    • 現在時刻を取得します
    • パラメーター:timezone(IANA タイムゾーン名)
    • 例:Asia/Ho_Chi_Minh、America/New_York、Europe/London
  2. 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 Q2AI エージェントコラボレーションフレームワーク

🎯 まとめ

MCP Server は、AI を実際のシステムに統合するための基盤になりつつあります。AI モデルと外部サービスを柔軟に接続できるため、MCP は自動化とインテリジェントなアプリケーションに数多くの可能性をもたらします。

主なポイント:

  • ✅ AI インテグレーションのための標準化されたプロトコル
  • ✅ 実装とメンテナンスが容易
  • ✅ エコシステムが力強く発展中
  • ✅ エンタープライズでの導入により、将来性は大いに期待できます

今すぐ MCP Server を使い始めて、アプリケーションで AI の力を活用しましょう!

コメント

MCP は初めてですか?

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

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