all repos — mcp-todotxt @ 685c6e4b50ab4587940871ca263637628310e21d

MCP server to manage todo.txt file

main.go (view raw)

 1package main
 2
 3import (
 4	"flag"
 5	"fmt"
 6	"log"
 7	"net/http"
 8
 9	"github.com/modelcontextprotocol/go-sdk/mcp"
10)
11
12var (
13	host         = flag.String("host", "localhost", "host to connect to/listen on")
14	port         = flag.Int("port", 8080, "port number to connect to/listen on")
15	todoFilePath = flag.String("file", "./todo.txt", "path to todo.txt")
16)
17
18func main() {
19	flag.Parse()
20	url := fmt.Sprintf("%s:%d", *host, *port)
21
22	server := mcp.NewServer(&mcp.Implementation{
23		Name:    "5ika-mpc-todo.txt",
24		Version: "1.0.0",
25	}, nil)
26
27	server.AddReceivingMiddleware(createLoggingMiddleware())
28
29	mcp.AddTool(server, &mcp.Tool{
30		Name:        "listTasks",
31		Description: "List tasks in todo.txt file",
32	}, getTasks)
33	mcp.AddTool(server, &mcp.Tool{
34		Name:        "addTask",
35		Description: "Add new task in todo.txt file",
36	}, addTask)
37	mcp.AddTool(server, &mcp.Tool{
38		Name:        "checkTask",
39		Description: "Set task as completed, done or finished in todo.txt file",
40	}, checkTask)
41
42	handler := mcp.NewStreamableHTTPHandler(func(req *http.Request) *mcp.Server {
43		return server
44	}, nil)
45
46	log.Printf("MCP server listening on %s", url)
47
48	if err := http.ListenAndServe(url, handler); err != nil {
49		log.Fatalf("Server failed: %v", err)
50	}
51}