From 4edef26a9dce970d1f6eb6a22529a2e36bf23fc4 Mon Sep 17 00:00:00 2001 From: Andrew McGivery Date: Tue, 17 Feb 2026 15:00:18 -0800 Subject: [PATCH] Allow server "description" to be configured --- .../allow_server_description_to_be_configured.md | 16 ++++++++++++++++ crates/apollo-mcp-server/src/runtime.rs | 1 + .../src/server/states/running.rs | 15 +++++++++++++-- crates/apollo-mcp-server/src/server_info.rs | 9 +++++++++ docs/source/config-file.mdx | 4 +++- 5 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 .changeset/allow_server_description_to_be_configured.md diff --git a/.changeset/allow_server_description_to_be_configured.md b/.changeset/allow_server_description_to_be_configured.md new file mode 100644 index 00000000..74383275 --- /dev/null +++ b/.changeset/allow_server_description_to_be_configured.md @@ -0,0 +1,16 @@ +--- +default: minor +--- + +# Allow server "description" to be configured + +Example: + +```yaml title="config.yaml" +server_info: + name: "Acme Corp GraphQL Server" + version: "2.0.0" + title: "Acme MCP Server" + website_url: "https://acme.com/mcp-docs" + description: "MCP server for Acme Corp's GraphQL API" +``` diff --git a/crates/apollo-mcp-server/src/runtime.rs b/crates/apollo-mcp-server/src/runtime.rs index 69f3b137..b01af0dd 100644 --- a/crates/apollo-mcp-server/src/runtime.rs +++ b/crates/apollo-mcp-server/src/runtime.rs @@ -198,6 +198,7 @@ mod test { version: None, title: None, website_url: None, + description: None, }, custom_scalars: None, endpoint: Endpoint( diff --git a/crates/apollo-mcp-server/src/server/states/running.rs b/crates/apollo-mcp-server/src/server/states/running.rs index 98949b7e..ad0432b0 100644 --- a/crates/apollo-mcp-server/src/server/states/running.rs +++ b/crates/apollo-mcp-server/src/server/states/running.rs @@ -538,8 +538,7 @@ impl ServerHandler for Running { title: self.server_info.title().map(|s| s.to_string()), version: self.server_info.version().to_string(), website_url: self.server_info.website_url().map(|s| s.to_string()), - // TODO: Add support for this via configuration similar to above fields - description: None, + description: self.server_info.description().map(|s| s.to_string()), }, capabilities, ..Default::default() @@ -1429,6 +1428,13 @@ mod tests { info.server_info.website_url, Some("https://www.apollographql.com/docs/apollo-mcp-server".to_string()) ); + assert_eq!( + info.server_info.description, + Some( + "A Model Context Protocol (MCP) server for exposing GraphQL APIs as tools." + .to_string() + ) + ); assert_eq!(info.server_info.icons, None); } @@ -1444,6 +1450,7 @@ mod tests { version: Some("3.0.0-beta".to_string()), title: Some("Custom GraphQL Server".to_string()), website_url: Some("https://my-server.example.com/docs".to_string()), + description: Some("A custom MCP server for testing".to_string()), }; let running = Running { @@ -1482,6 +1489,10 @@ mod tests { info.server_info.website_url, Some("https://my-server.example.com/docs".to_string()) ); + assert_eq!( + info.server_info.description, + Some("A custom MCP server for testing".to_string()) + ); } mod sse_resumability { diff --git a/crates/apollo-mcp-server/src/server_info.rs b/crates/apollo-mcp-server/src/server_info.rs index fd4ed367..20e60ede 100644 --- a/crates/apollo-mcp-server/src/server_info.rs +++ b/crates/apollo-mcp-server/src/server_info.rs @@ -17,6 +17,9 @@ pub struct ServerInfoConfig { /// URL to the server's website or documentation pub website_url: Option, + + /// A brief description of the server + pub description: Option, } impl ServerInfoConfig { @@ -37,4 +40,10 @@ impl ServerInfoConfig { .as_deref() .or(Some("https://www.apollographql.com/docs/apollo-mcp-server")) } + + pub fn description(&self) -> Option<&str> { + self.description.as_deref().or(Some( + "A Model Context Protocol (MCP) server for exposing GraphQL APIs as tools.", + )) + } } diff --git a/docs/source/config-file.mdx b/docs/source/config-file.mdx index 2b459e7d..b50ce4b9 100644 --- a/docs/source/config-file.mdx +++ b/docs/source/config-file.mdx @@ -467,7 +467,8 @@ These fields are under the top-level `server_info` key and configure the server | `name` | `string` | `"Apollo MCP Server"` | The name of the MCP server implementation (used as a technical identifier) | | `version` | `string` | Current crate version (e.g., `"1.5.0"`) | The version of the MCP server implementation | | `title` | `string` | `"Apollo MCP Server"` | Human-readable title for the server (used for display in UIs) | -| `website_url` | `URL` | `"https://www.apollographql.com/docs/apollo-mcp-server"` | URL to the server's website or documentation | +| `website_url` | `URL` | `"https://www.apollographql.com/docs/apollo-mcp-server"` | URL to the server's website or documentation | +| `description` | `string` | `"A Model Context Protocol (MCP) server for exposing GraphQL APIs as tools."` | A brief description of the server | All fields are optional. If not specified, sensible defaults are used. This is useful when wrapping Apollo MCP Server or branding it for specific use cases. @@ -477,6 +478,7 @@ server_info: version: "2.0.0" title: "Acme MCP Server" website_url: "https://acme.com/mcp-docs" + description: "MCP server for Acme Corp's GraphQL API" ``` ## Example config files