MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / connect

Method connect

crates/opencode-server/src/mcp_oauth.rs:152–280  ·  view source on GitHub ↗
(&self, server_name: &str)

Source from the content-addressed store, hash-verified

150 }
151
152 pub async fn connect(&self, server_name: &str) -> Result<McpServerInfo, McpOAuthError> {
153 self.log_event(server_name, "info", "Connect requested")
154 .await;
155 let managed = self.managed_server(server_name).await?;
156 let oauth_status = self.oauth_status_for(server_name).await;
157 let oauth_required = managed.config.oauth_required();
158
159 if !managed.enabled {
160 let info = McpServerInfo {
161 name: server_name.to_string(),
162 status: "disabled".to_string(),
163 tools: 0,
164 resources: 0,
165 error: None,
166 oauth_required,
167 oauth_status,
168 };
169 self.statuses
170 .write()
171 .await
172 .insert(server_name.to_string(), info.clone());
173 self.log_event(server_name, "info", "Server is disabled")
174 .await;
175 return Ok(info);
176 }
177
178 let info = match managed.config {
179 McpRuntimeConfig::Local(local) => {
180 if let Err(error) = self.clients.remove(server_name).await {
181 tracing::warn!(server = server_name, %error, "failed to remove existing MCP client");
182 }
183
184 let env = local
185 .env
186 .map(|map| map.into_iter().collect::<Vec<(String, String)>>());
187
188 match self
189 .clients
190 .add_client(McpClientConfig {
191 name: server_name.to_string(),
192 command: local.command,
193 args: local.args,
194 env,
195 timeout_ms: local.timeout,
196 })
197 .await
198 {
199 Ok(_) => {
200 let tool_count = self
201 .clients
202 .tool_registry()
203 .list_for_server(server_name)
204 .await
205 .len();
206 self.log_event(server_name, "info", "Connected local MCP server")
207 .await;
208 McpServerInfo {
209 name: server_name.to_string(),

Callers 8

handle_callbackMethod · 0.45
authenticateMethod · 0.45
restartMethod · 0.45
add_mcp_serverFunction · 0.45
connect_mcpFunction · 0.45
newMethod · 0.45
in_memoryMethod · 0.45

Calls 9

managed_serverMethod · 0.80
oauth_status_forMethod · 0.80
oauth_requiredMethod · 0.80
add_clientMethod · 0.80
list_for_serverMethod · 0.80
tool_registryMethod · 0.80
log_eventMethod · 0.45
cloneMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected