-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathmain.py
More file actions
50 lines (39 loc) · 1.21 KB
/
main.py
File metadata and controls
50 lines (39 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# main.py
from mcp.server.fastmcp import FastMCP
from mcp.server.sse import SseServerTransport
from starlette.applications import Starlette
from starlette.routing import Mount, Route
# Import all tools
from tools import *
# Create MCP server
mcp = FastMCP("ticktick_mcp")
mcp.add_tool(get_projects)
mcp.add_tool(project_details)
mcp.add_tool(get_today_tasks)
mcp.add_tool(get_task_details)
mcp.add_tool(create_project)
mcp.add_tool(create_task)
mcp.add_tool(update_task)
mcp.add_tool(complete_task)
mcp.add_tool(delete_task)
# Create SSE transport
tp = SseServerTransport("/messages/")
# Define handler functions for each server
async def handle_sse(request):
async with tp.connect_sse(request.scope, request.receive, request._send) as streams:
await mcp._mcp_server.run(
streams[0],
streams[1],
mcp._mcp_server.create_initialization_options(),
)
# Create a single Starlette app with different routes
routes = [
Route("/sse", endpoint=handle_sse),
Mount("/messages/", app=tp.handle_post_message),
]
# Single Starlette app
app = Starlette(routes=routes)
# Run the server
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=58321)