server.ts•1.47 kB
/**
* MCPサーバーの設定と初期化
*/
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { getSpreadsheetTool, getSheetDataTool } from "./tools/index.js";
import { config } from "./config.js";
/**
* MCPサーバーのインスタンスを生成
*/
export const server = new McpServer({
name: config.server.name,
version: config.server.version,
capabilities: {
tools: {}, // ツール機能を有効化
resources: {} // リソース機能を有効化(将来的な拡張用)
}
});
/**
* サーバーに各ツールを登録
*/
export function registerTools() {
// スプレッドシート情報取得ツール
server.tool(
getSpreadsheetTool.name,
getSpreadsheetTool.description,
getSpreadsheetTool.schema,
getSpreadsheetTool.handler
);
// シートデータ取得ツール
server.tool(
getSheetDataTool.name,
getSheetDataTool.description,
getSheetDataTool.schema,
getSheetDataTool.handler
);
}
/**
* サーバーを起動する関数
* @returns 接続済みのMCPサーバー
*/
export async function startServer() {
// ツール登録
registerTools();
// StdioトランスポートでMCPサーバーを実行
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Spreadsheet MCP Server 実行中");
return server;
}