Skip to content

Commit 7fba774

Browse files
Yuji Matsumotoclaude
andcommitted
refactor: remove unnecessary error conversions in MCP server
- Remove redundant map_err after from_str calls that already have automatic error conversion - Fix incorrect rmcp::Error import in file/bridge.rs, use crate::error::Error instead - Simplify error handling by relying on From trait implementations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 8ea7769 commit 7fba774

File tree

2 files changed

+10
-30
lines changed

2 files changed

+10
-30
lines changed
Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use crate::access_control::AccessControl;
2+
use crate::error::{Error as McpError, Result};
23
use crate::file::request::{DownloadSharedFileRequest, GetSharedFilesListRequest};
34
use backlog_api_client::{DownloadedFile, client::BacklogApiClient};
45
use backlog_core::{ProjectIdOrKey, identifier::SharedFileId};
56
use backlog_file::{GetFileParams, GetSharedFilesListParams, SharedFile};
6-
use rmcp::Error as McpError;
77
use std::str::FromStr;
88
use std::sync::Arc;
99
use tokio::sync::Mutex;
@@ -12,17 +12,15 @@ pub(crate) async fn get_shared_files_list_tool(
1212
client: Arc<Mutex<BacklogApiClient>>,
1313
request: GetSharedFilesListRequest,
1414
access_control: &AccessControl,
15-
) -> Result<Vec<SharedFile>, McpError> {
15+
) -> Result<Vec<SharedFile>> {
1616
let client_guard = client.lock().await;
1717

18-
let project_id_or_key = ProjectIdOrKey::from_str(&request.project_id_or_key)
19-
.map_err(|e| McpError::invalid_request(format!("Invalid project ID or key: {e}"), None))?;
18+
let project_id_or_key = ProjectIdOrKey::from_str(&request.project_id_or_key)?;
2019

2120
// Check project access with parsed type
2221
access_control
2322
.check_project_access_id_or_key_async(&project_id_or_key, &client_guard)
24-
.await
25-
.map_err(|e| McpError::invalid_request(format!("Access denied: {e}"), None))?;
23+
.await?;
2624

2725
let params = GetSharedFilesListParams {
2826
project_id_or_key,
@@ -32,37 +30,25 @@ pub(crate) async fn get_shared_files_list_tool(
3230
count: request.count,
3331
};
3432

35-
client_guard
36-
.file()
37-
.get_shared_files_list(params)
38-
.await
39-
.map_err(|e| {
40-
McpError::internal_error(format!("Failed to get shared files list: {e}"), None)
41-
})
33+
Ok(client_guard.file().get_shared_files_list(params).await?)
4234
}
4335

4436
pub(crate) async fn download_shared_file_bridge(
4537
client: Arc<Mutex<BacklogApiClient>>,
4638
request: DownloadSharedFileRequest,
4739
access_control: &AccessControl,
48-
) -> Result<DownloadedFile, McpError> {
40+
) -> Result<DownloadedFile> {
4941
let client_guard = client.lock().await;
5042

51-
let project_id_or_key = ProjectIdOrKey::from_str(&request.project_id_or_key)
52-
.map_err(|e| McpError::invalid_request(format!("Invalid project ID or key: {e}"), None))?;
43+
let project_id_or_key = ProjectIdOrKey::from_str(&request.project_id_or_key)?;
5344

5445
// Check project access with parsed type
5546
access_control
5647
.check_project_access_id_or_key_async(&project_id_or_key, &client_guard)
57-
.await
58-
.map_err(|e| McpError::invalid_request(format!("Access denied: {e}"), None))?;
48+
.await?;
5949

6050
let shared_file_id = SharedFileId::new(request.shared_file_id);
6151
let params = GetFileParams::new(project_id_or_key, shared_file_id);
6252

63-
client_guard
64-
.file()
65-
.get_file(params)
66-
.await
67-
.map_err(|e| McpError::internal_error(format!("Failed to download shared file: {e}"), None))
53+
Ok(client_guard.file().get_file(params).await?)
6854
}

backlog-mcp-server/src/issue/bridge.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,7 @@ pub(crate) async fn get_attachment_list_impl(
183183
req: GetAttachmentListRequest,
184184
access_control: &AccessControl,
185185
) -> Result<Vec<Attachment>> {
186-
let parsed_issue_id_or_key =
187-
IssueIdOrKey::from_str(req.issue_id_or_key.trim()).map_err(|e| {
188-
McpError::Parameter(format!(
189-
"Invalid issueIdOrKey: {}. Error: {}",
190-
req.issue_id_or_key, e
191-
))
192-
})?;
186+
let parsed_issue_id_or_key = IssueIdOrKey::from_str(req.issue_id_or_key.trim())?;
193187

194188
let client_guard = client.lock().await;
195189

0 commit comments

Comments
 (0)