forked from labring/aiproxy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmcp.ts
More file actions
143 lines (120 loc) · 3.02 KB
/
mcp.ts
File metadata and controls
143 lines (120 loc) · 3.02 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
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import { get, post, put, del } from './index'
type ParamType = 'header' | 'query'
export interface PublicMCPProxyReusingParam extends ReusingParam {
type: ParamType
}
export interface ReusingParam {
name: string
description: string
required: boolean
}
export interface PublicMCPProxyConfig {
url: string
querys: Record<string, string>
headers: Record<string, string>
reusing: Record<string, PublicMCPProxyReusingParam>
}
export interface MCPOpenAPIConfig {
openapi_spec: string
openapi_content?: string
v2: boolean
server_addr?: string
authorization?: string
}
export interface MCPEmbeddingConfig {
init: Record<string, string>
reusing: Record<string, ReusingParam>
}
export interface PublicMCP {
id: string
name: string
status: number
type: string
created_at: number
update_at: number
readme: string
tags: string[]
logo_url: string
proxy_config?: PublicMCPProxyConfig
openapi_config?: MCPOpenAPIConfig
embed_config?: MCPEmbeddingConfig
endpoints: {
host: string
sse: string
streamable_http: string
}
}
export interface MCPListResponse {
mcps: PublicMCP[]
total: number
}
export interface EmbedMCPConfigTemplate {
name: string
required: boolean
example: string
description: string
}
export interface EmbedMCP {
id: string
enabled: boolean
name: string
readme: string
tags: string[]
config_templates: Record<string, EmbedMCPConfigTemplate>
}
export interface SaveEmbedMCPRequest {
id: string
enabled: boolean
init_config: Record<string, string>
}
export interface PublicMCPReusingParam {
mcp_id: string
group_id: string
params: Record<string, string>
}
// API functions
export const getMCPs = (params: {
page: number
per_page: number
type?: string
keyword?: string
status?: number
}) => {
return get<MCPListResponse>('/mcp/publics/', { params })
}
export const getAllMCPs = (params?: { status?: number }) => {
return get<PublicMCP[]>('/mcp/publics/all', { params })
}
export const getMCPById = (id: string) => {
return get<PublicMCP>(`/mcp/public/${id}`)
}
export const createMCP = (data: PublicMCP) => {
return post<PublicMCP>('/mcp/public/', data)
}
export const updateMCP = (id: string, data: PublicMCP) => {
return put<PublicMCP>(`/mcp/public/${id}`, data)
}
export const updateMCPStatus = (id: string, status: number) => {
return post(`/mcp/public/${id}/status`, { status })
}
export const deleteMCP = (id: string) => {
return del(`/mcp/public/${id}`)
}
// Embed MCP API functions
export const getEmbedMCPs = () => {
return get<EmbedMCP[]>('/embedmcp/')
}
export const saveEmbedMCP = (data: SaveEmbedMCPRequest) => {
return post('/embedmcp/', data)
}
// MCP Reusing Params API functions
export const getMCPReusingParams = (mcpId: string, groupId: string) => {
return get<PublicMCPReusingParam>(`/mcp/public/${mcpId}/group/${groupId}/params`)
}
export const saveMCPReusingParams = (
mcpId: string,
groupId: string,
data: PublicMCPReusingParam
) => {
return post(`/mcp/public/${mcpId}/group/${groupId}/params`, data)
}