op-mcp 0.1.0

MCP server providing LLM access to 1Password CLI
Documentation
//! MCP Tools for 1Password operations
//!
//! This module organizes all 1Password MCP tools by domain:
//! - `account` - Account management tools
//! - `auth` - Authentication tools (whoami, signin, signout)
//! - `vault` - Vault management tools
//! - `item` - Item management tools
//! - `document` - Document management tools
//! - `user` - User management tools
//! - `group` - Group management tools
//! - `connect` - Connect server management tools
//! - `service` - Service account tools
//! - `events` - Events API tools
//! - `secrets` - Secret reading and injection tools
//! - `enums` - Shared enums for tool parameters (LLM-friendly schemas)

pub mod account;
pub mod auth;
pub mod connect;
pub mod document;
pub mod enums;
pub mod events;
pub mod group;
pub mod item;
pub mod secrets;
pub mod service;
pub mod user;
pub mod vault;

use rust_mcp_schema::{schema_utils::CallToolError, CallToolResult};
use serde::Serialize;

use crate::op::OpError;

// Re-export all tools for convenience
pub use account::*;
pub use auth::*;
pub use connect::*;
pub use document::*;
pub use enums::*;
pub use events::*;
pub use group::*;
pub use item::*;
pub use secrets::*;
pub use service::*;
pub use user::*;
pub use vault::*;

/// Convert OpError to CallToolError
pub fn op_error_to_tool_error(err: OpError) -> CallToolError {
    CallToolError::new(err)
}

/// Helper to create a JSON text result
pub fn json_result<T: Serialize>(data: &T) -> Result<CallToolResult, CallToolError> {
    let json = serde_json::to_string_pretty(data).map_err(CallToolError::new)?;
    Ok(CallToolResult::text_content(json, None))
}

/// Helper to create a plain text result
pub fn text_result(text: String) -> Result<CallToolResult, CallToolError> {
    Ok(CallToolResult::text_content(text, None))
}

// ============================================================================
// Tool Registry - All tools combined
// ============================================================================

rust_mcp_sdk::tool_box!(
    OnePasswordTools,
    [
        // Auth tools
        WhoamiTool,
        SigninTool,
        SignoutTool,
        // Account tools
        AccountListTool,
        AccountGetTool,
        AccountAddTool,
        AccountForgetTool,
        // Vault tools
        VaultListTool,
        VaultGetTool,
        VaultCreateTool,
        VaultEditTool,
        VaultDeleteTool,
        VaultUserListTool,
        VaultUserGrantTool,
        VaultUserRevokeTool,
        VaultGroupListTool,
        VaultGroupGrantTool,
        VaultGroupRevokeTool,
        // Item tools
        ItemListTool,
        ItemGetTool,
        ItemCreateTool,
        ItemEditTool,
        ItemDeleteTool,
        ItemMoveTool,
        ItemShareTool,
        ItemTemplateListTool,
        ItemTemplateGetTool,
        // Document tools
        DocumentListTool,
        DocumentGetTool,
        DocumentCreateTool,
        DocumentEditTool,
        DocumentDeleteTool,
        // User tools
        UserListTool,
        UserGetTool,
        UserProvisionTool,
        UserConfirmTool,
        UserEditTool,
        UserSuspendTool,
        UserReactivateTool,
        UserDeleteTool,
        // Group tools
        GroupListTool,
        GroupGetTool,
        GroupCreateTool,
        GroupEditTool,
        GroupDeleteTool,
        GroupUserListTool,
        GroupUserGrantTool,
        GroupUserRevokeTool,
        // Connect tools
        ConnectServerListTool,
        ConnectServerGetTool,
        ConnectServerCreateTool,
        ConnectServerEditTool,
        ConnectServerDeleteTool,
        ConnectTokenListTool,
        ConnectTokenCreateTool,
        ConnectTokenEditTool,
        ConnectTokenDeleteTool,
        ConnectVaultGrantTool,
        ConnectVaultRevokeTool,
        // Service account tools
        ServiceAccountCreateTool,
        ServiceAccountRatelimitTool,
        // Events API tools
        EventsApiCreateTool,
        // Secret tools
        SecretReadTool,
        SecretInjectTool,
        SecretRunTool
    ]
);