Skip to main content
Glama

Excel MCP Server

MIT License
1,642
537
  • Linux
  • Apple
excel_create_table.go2.52 kB
package tools import ( "context" "fmt" "html" z "github.com/Oudwins/zog" "github.com/mark3labs/mcp-go/mcp" "github.com/mark3labs/mcp-go/server" excel "github.com/negokaz/excel-mcp-server/internal/excel" imcp "github.com/negokaz/excel-mcp-server/internal/mcp" ) type ExcelCreateTableArguments struct { FileAbsolutePath string `zog:"fileAbsolutePath"` SheetName string `zog:"sheetName"` Range string `zog:"range"` TableName string `zog:"tableName"` } var excelCreateTableArgumentsSchema = z.Struct(z.Shape{ "fileAbsolutePath": z.String().Test(AbsolutePathTest()).Required(), "sheetName": z.String().Required(), "range": z.String(), "tableName": z.String().Required(), }) func AddExcelCreateTableTool(server *server.MCPServer) { server.AddTool(mcp.NewTool("excel_create_table", mcp.WithDescription("Create a table in the Excel sheet"), mcp.WithString("fileAbsolutePath", mcp.Required(), mcp.Description("Absolute path to the Excel file"), ), mcp.WithString("sheetName", mcp.Required(), mcp.Description("Sheet name where the table is created"), ), mcp.WithString("range", mcp.Description("Range to be a table (e.g., \"A1:C10\")"), ), mcp.WithString("tableName", mcp.Required(), mcp.Description("Table name to be created"), ), ), handleCreateTable) } func handleCreateTable(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { args := ExcelCreateTableArguments{} if issues := excelCreateTableArgumentsSchema.Parse(request.Params.Arguments, &args); len(issues) != 0 { return imcp.NewToolResultZogIssueMap(issues), nil } return createTable(args.FileAbsolutePath, args.SheetName, args.Range, args.TableName) } func createTable(fileAbsolutePath string, sheetName string, tableRange string, tableName string) (*mcp.CallToolResult, error) { workbook, release, err := excel.OpenFile(fileAbsolutePath) if err != nil { return nil, err } defer release() worksheet, err := workbook.FindSheet(sheetName) if err != nil { return imcp.NewToolResultInvalidArgumentError(err.Error()), nil } defer worksheet.Release() if err := worksheet.AddTable(tableRange, tableName); err != nil { return nil, err } if err := workbook.Save(); err != nil { return nil, err } result := "# Notice\n" result += fmt.Sprintf("backend: %s\n", workbook.GetBackendName()) result += fmt.Sprintf("Table [%s] created.\n", html.EscapeString(tableName)) return mcp.NewToolResultText(result), nil }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/negokaz/excel-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server