31
//! error. Opt out with `smbcloud = false` in `mcp.toml` or
32
//! `SIGIT_MCP_SMBCLOUD=off`.
33
//!
34
-//! The App Store Connect API CLI's MCP server (`asc --mcp`, stdio) is baked
35
-//! in the same way: only when the `asc` binary is on `PATH`, opt out with
36
-//! `ascapi = false` in `mcp.toml` or `SIGIT_MCP_ASCAPI=off`.
34
+//! Ascapi — the App Stores Coolest API, via its own CLI's MCP server
35
+//! (`asc --mcp`, stdio) — is baked in the same way: only when the `asc` binary
36
+//! is on `PATH`, opt out with `ascapi = false` in `mcp.toml` or
37
+//! `SIGIT_MCP_ASCAPI=off`.
38
//!
39
//! All baked-in entries yield to a user-defined `mcp.toml` server of the same
40
//! name, so either can be repointed or reconfigured without a special case.
120
.strip_prefix("__")
121
}
122
122
-/// Name of the baked-in App Store Connect API CLI server; its tools are
123
-/// namespaced `mcp__ascapi__<tool>`. Like the other baked-in servers, a
123
+/// Name of the baked-in Ascapi (the App Stores Coolest API) server; its tools
124
+/// are namespaced `mcp__ascapi__<tool>`. Like the other baked-in servers, a
125
/// user-defined `mcp.toml` entry with this name overrides the baked-in
126
/// command line.
127
const ASCAPI_SERVER_NAME: &str = "ascapi";
128
128
-/// The App Store Connect API CLI binary the baked-in stdio entry spawns
129
-/// (`asc --mcp`).
129
+/// The Ascapi CLI binary the baked-in stdio entry spawns (`asc --mcp`).
130
const ASCAPI_COMMAND: &str = "asc";
131
132
-/// The bare tool name when `name` belongs to the ascapi server
132
+/// The bare tool name when `name` belongs to the Ascapi server
133
/// (`mcp__ascapi__app_list` → `Some("app_list")`), else `None`.
134
pub fn ascapi_tool_suffix(name: &str) -> Option<&str> {
135
name.strip_prefix(MCP_PREFIX)?
279
/// `true`; set `false` to opt out. Moot when `smb` isn't installed.
280
#[serde(default)]
281
smbcloud: Option<bool>,
282
- /// Include the baked-in App Store Connect API CLI server (`asc --mcp`).
283
- /// Defaults to `true`; set `false` to opt out. Moot when `asc` isn't
284
- /// installed.
282
+ /// Include the baked-in Ascapi server (`asc --mcp`) — Ascapi is the App
283
+ /// Stores Coolest API. Defaults to `true`; set `false` to opt out. Moot
284
+ /// when `asc` isn't installed.
285
#[serde(default)]
286
ascapi: Option<bool>,
287
#[serde(default)]
505
}
506
}
507
508
- // The ascapi server can also be disabled with SIGIT_MCP_ASCAPI=off.
508
+ // The Ascapi server can also be disabled with SIGIT_MCP_ASCAPI=off.
509
if let Ok(value) = std::env::var("SIGIT_MCP_ASCAPI")
510
&& matches!(
511
value.trim().to_ascii_lowercase().as_str(),
515
include_ascapi = false;
516
}
517
518
- // Add the baked-in ascapi server (`asc --mcp`), with the same
518
+ // Add the baked-in Ascapi server (`asc --mcp`), with the same
519
// never-clobber rule as the others. Only when `asc` is actually
520
// installed: a hardwired entry for a binary most users don't have
521
// would surface a spawn failure in `/mcp` instead of just staying out
531
},
532
});
533
} else {
534
- log::debug!("mcp: `{ASCAPI_COMMAND}` not on PATH; skipping the ascapi server");
534
+ log::debug!("mcp: `{ASCAPI_COMMAND}` not on PATH; skipping the Ascapi server");
535
}
536
}
537