rename: mail-mcp -> Carrier
Sulkta naming convention. Carrier (the carrier pigeon — single- purpose, reliable, comes back every time) sits alongside Aldabra (giant tortoise), Hawk (eBay-resale eyes), Skald (Norse storyteller), cWHO (monitoring), Cauldron (meal planning), Clawdforge (build), tny (URL shortener), ktra (cargo registry). The full audit/cleanup/Phase-A-B-C arc happened under the mail-mcp name; this commit just renames the identity: - Cargo workspace + crate package name: mail-mcp -> carrier - Binary name: mail-mcp -> carrier - USER_AGENT header: mail-mcp/<ver> -> carrier/<ver> - Config env var: MAIL_MCP_CONFIG -> CARRIER_CONFIG - Default config path: ~/.config/mail-mcp/config.toml -> ~/.config/carrier/config.toml - ServerHandler instructions reference: 'mail-mcp' -> 'Carrier' - README + repo URL refs updated - Workspace path: mail-mcp -> carrier - Git remote: mail-mcp -> carrier Tool names stay mail_* (mail_send, mail_inbox_list, mail_reply, etc.) because they describe the email domain — same convention as Aldabra keeps wallet_*/chain_*/dao_*/escrow_*. The server-level identity is Carrier; the tools it carries are mail.
This commit is contained in:
parent
bcf8a46713
commit
6b751558fb
10 changed files with 101 additions and 70 deletions
|
|
@ -1,17 +1,17 @@
|
|||
# mail-mcp — the binary. Stdio MCP server exposing SMTP send + IMAP
|
||||
# Carrier — the binary. Stdio MCP server exposing SMTP send + IMAP
|
||||
# read tools. Spawned per-session by any MCP client.
|
||||
|
||||
[package]
|
||||
name = "mail-mcp"
|
||||
name = "carrier"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
license.workspace = true
|
||||
repository.workspace = true
|
||||
authors.workspace = true
|
||||
description = "Rust MCP server for email (SMTP send + IMAP read)"
|
||||
description = "Carrier — Rust MCP server for email (SMTP send + IMAP read)"
|
||||
|
||||
[[bin]]
|
||||
name = "mail-mcp"
|
||||
name = "carrier"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
//! TOML config + password resolution.
|
||||
//!
|
||||
//! Config path: `$MAIL_MCP_CONFIG` env, or `~/.config/mail-mcp/config.toml`.
|
||||
//! Config path: `$CARRIER_CONFIG` env, or `~/.config/carrier/config.toml`.
|
||||
//!
|
||||
//! Password lookup per account:
|
||||
//! 1. env var named by `password_env`
|
||||
|
|
@ -160,12 +160,12 @@ fn check_chmod(_path: &std::path::Path) -> Result<()> {
|
|||
}
|
||||
|
||||
fn config_path() -> Result<PathBuf> {
|
||||
if let Ok(p) = std::env::var("MAIL_MCP_CONFIG") {
|
||||
if let Ok(p) = std::env::var("CARRIER_CONFIG") {
|
||||
return Ok(PathBuf::from(shellexpand::tilde(&p).into_owned()));
|
||||
}
|
||||
let home = dirs::config_dir()
|
||||
.ok_or_else(|| anyhow!("could not resolve $XDG_CONFIG_HOME / ~/.config"))?;
|
||||
Ok(home.join("mail-mcp").join("config.toml"))
|
||||
Ok(home.join("carrier").join("config.toml"))
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
@ -1,8 +1,14 @@
|
|||
//! mail-mcp — MCP server entry point.
|
||||
//! Carrier — a Rust MCP email server.
|
||||
//!
|
||||
//! Speaks MCP over stdio. Any MCP client launches this as a
|
||||
//! subprocess
|
||||
//! and gets `mail_send` + `mail_inbox_list` + `mail_inbox_read`.
|
||||
//! and gets the 10-tool mail surface (mail_send / mail_inbox_list /
|
||||
//! mail_inbox_read / mail_folder_list / mail_search / mail_thread /
|
||||
//! mail_move / mail_mark / mail_attachment_get / mail_reply).
|
||||
//!
|
||||
//! Named after the carrier pigeon — single-purpose, reliable, comes
|
||||
//! back every time. Tool names stay `mail_*` because they describe
|
||||
//! the domain; only the server identity is Carrier.
|
||||
//!
|
||||
//! Logging is stderr-only — stdout belongs to the JSON-RPC transport.
|
||||
|
||||
|
|
@ -50,7 +56,7 @@ async fn run() -> Result<()> {
|
|||
tracing::info!(
|
||||
accounts = cfg.accounts.len(),
|
||||
default_account = %cfg.default_account,
|
||||
"mail-mcp starting"
|
||||
"carrier starting"
|
||||
);
|
||||
|
||||
let service = MailService::new(cfg);
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
//! - `Message-ID` — `<uuid-v4@{message_id_domain}>` — own-domain, not local hostname
|
||||
//! - `From` — `name <addr>`
|
||||
//! - `MIME-Version` — lettre auto
|
||||
//! - `User-Agent` — `mail-mcp/<crate version>`
|
||||
//! - `User-Agent` — `carrier/<crate version>`
|
||||
//! - `In-Reply-To` — if provided
|
||||
//! - `References` — if provided (space-joined)
|
||||
//!
|
||||
|
|
@ -52,7 +52,7 @@ pub struct SendOutput {
|
|||
pub sent_at: String, // RFC-3339
|
||||
}
|
||||
|
||||
const USER_AGENT: &str = concat!("mail-mcp/", env!("CARGO_PKG_VERSION"));
|
||||
const USER_AGENT: &str = concat!("carrier/", env!("CARGO_PKG_VERSION"));
|
||||
|
||||
/// Hard caps to keep an MCP-driver-gone-wrong from OOM-ing the box.
|
||||
/// Match Gmail's effective 25 MB per-message ceiling — any single attachment
|
||||
|
|
@ -601,7 +601,7 @@ impl ServerHandler for MailService {
|
|||
ServerInfo {
|
||||
capabilities: ServerCapabilities::builder().enable_tools().build(),
|
||||
instructions: Some(
|
||||
"mail-mcp — Rust MCP server for Sulkta-hosted email. Tools: \
|
||||
"Carrier — a Rust MCP email server. Tools: \
|
||||
mail_send, mail_inbox_list, mail_inbox_read, mail_folder_list, \
|
||||
mail_search, mail_thread, mail_move, mail_mark, \
|
||||
mail_attachment_get, mail_reply. Default account from config; \
|
||||
Loading…
Add table
Add a link
Reference in a new issue