カスタム MCP サーバーの作成

カスタム統合と専門化されたツールで TeamDay の機能を拡張する独自の MCP サーバーを構築する方法を学びます。

はじめに

前提条件

  • Node.js 18+ または Python 3.8+
  • REST API と WebSocket についての理解
  • ターゲット統合への精通
  • TeamDay 開発環境へのアクセス

基本的な MCP サーバーの構造

// 基本的な Node.js MCP サーバー
const express = require('express');
const { MCPServer } = require('@teamday/mcp-sdk');

const app = express();
const mcpServer = new MCPServer({
  name: 'my-custom-server',
  version: '1.0.0',
  description: 'Custom integration server'
});

// ツールを登録
mcpServer.registerTool('my_tool', {
  description: 'My custom tool',
  parameters: {
    input: { type: 'string', required: true }
  },
  handler: async (params) => {
    // ツール実装
    return { result: `Processed: ${params.input}` };
  }
});

app.use('/mcp', mcpServer.handler);
app.listen(3000);

ツール実装

シンプルなツール

// テキスト処理ツール
mcpServer.registerTool('process_text', {
  description: 'Process and transform text',
  parameters: {
    text: { type: 'string', required: true },
    operation: { type: 'string', enum: ['uppercase', 'lowercase', 'reverse'] }
  },
  handler: async ({ text, operation }) => {
    switch (operation) {
      case 'uppercase': return { result: text.toUpperCase() };
      case 'lowercase': return { result: text.toLowerCase() };
      case 'reverse': return { result: text.split('').reverse().join('') };
      default: throw new Error('Invalid operation');
    }
  }
});

データベースツール

// データベースクエリツール
mcpServer.registerTool('query_database', {
  description: 'Execute database queries',
  parameters: {
    query: { type: 'string', required: true },
    params: { type: 'array', default: [] }
  },
  handler: async ({ query, params }) => {
    const db = await getDatabase();
    const result = await db.query(query, params);
    return { data: result.rows, count: result.rowCount };
  }
});

詳細については、カスタム MCP サーバーの作成 を参照してください。