File size: 5,050 Bytes
3d23b0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

/**
 * Registers all MCP resources.
 *
 * @param mcp - The MCP Server instance to register resources with
 */
export function registerAllResources(mcp: McpServer): void {
    // API Manifest resource
    mcp.resource(
        "api-manifest",
        "manifest://contest-api",
        {
            title: "vortex Manifest",
            description: "Metadata and platform support details for this vortex MCP instance"
        },
        async () => ({
            contents: [
                {
                    uri: "manifest://contest-api",
                    text: JSON.stringify({
                        name: "vortex",
                        version: "1.0.0",
                        description: "A comprehensive API for competitive programming data aggregation",
                        supportedPlatforms: [
                            {
                                name: "LeetCode",
                                endpoints: ["rating", "profile", "details", "badges", "solved", "contest", "submissions", "calendar", "skills", "languages", "progress"]
                            },
                            {
                                name: "Codeforces",
                                endpoints: ["rating", "history", "status", "blogs", "problems", "contests", "standings", "hacks"]
                            },
                            {
                                name: "AtCoder",
                                endpoints: ["rating", "history", "standings", "results", "virtual"]
                            },
                            {
                                name: "CodeChef",
                                endpoints: ["rating"]
                            },
                            {
                                name: "GeeksforGeeks",
                                endpoints: ["rating", "submissions", "posts", "events", "leaderboard"]
                            }
                        ],
                        mcpEndpoints: {
                            mcp: "/mcp",
                            health: "/health",
                            docs: "/docs"
                        }
                    }, null, 2),
                    mimeType: "application/json"
                }
            ]
        })
    );

    // Platforms overview resource
    mcp.resource(
        "platforms-overview",
        "docs://platforms",
        {
            title: "Supported Platforms Overview",
            description: "Detailed information about each supported competitive programming platform"
        },
        async () => ({
            contents: [
                {
                    uri: "docs://platforms",
                    text: JSON.stringify({
                        platforms: [
                            {
                                name: "LeetCode",
                                website: "https://leetcode.com",
                                focus: "Technical interview preparation and weekly/biweekly contests",
                                ratingSystem: "Algorithm rating (starts at 1500)",
                                toolCount: 13
                            },
                            {
                                name: "Codeforces",
                                website: "https://codeforces.com",
                                focus: "Competitive programming contests and problem archive",
                                ratingSystem: "Elo-like rating with colored ranks (Newbie to Legendary Grandmaster)",
                                toolCount: 15
                            },
                            {
                                name: "AtCoder",
                                website: "https://atcoder.jp",
                                focus: "Japanese competitive programming platform with ABC/ARC/AGC contests",
                                ratingSystem: "Rating with colored ranks (Gray to Red)",
                                toolCount: 5
                            },
                            {
                                name: "CodeChef",
                                website: "https://www.codechef.com",
                                focus: "Monthly challenges and competitive programming",
                                ratingSystem: "Star-based rating (1★ to 7★)",
                                toolCount: 1
                            },
                            {
                                name: "GeeksforGeeks",
                                website: "https://www.geeksforgeeks.org",
                                focus: "DSA learning and coding contests",
                                ratingSystem: "Score-based with star levels",
                                toolCount: 5
                            }
                        ]
                    }, null, 2),
                    mimeType: "application/json"
                }
            ]
        })
    );
}