Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion scripts/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ def has_changes(path: Path, git_hash: GitHash) -> bool:
)

changed_files = [Path(f) for f in output.stdout.splitlines()]
relevant_files = [f for f in changed_files if f.suffix in [".py", ".ts"]]
# Include all file types since lockfile changes (e.g., uv.lock) also need version bumps
relevant_files = [f for f in changed_files if f.suffix in [".py", ".ts", ".lock"]]
return len(relevant_files) >= 1
except subprocess.CalledProcessError:
return False
Expand Down
2 changes: 1 addition & 1 deletion src/everything/docs/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

- `echo` (tools/echo.ts): Echoes the provided `message: string`. Uses Zod to validate inputs.
- `get-annotated-message` (tools/get-annotated-message.ts): Returns a `text` message annotated with `priority` and `audience` based on `messageType` (`error`, `success`, or `debug`); can optionally include an annotated `image`.
- `get-env` (tools/get-env.ts): Returns all environment variables from the running process as pretty-printed JSON text.
- `get-env` (tools/get-env.ts): Returns the value of a specific environment variable by name. Takes a required `key` parameter.
- `get-resource-links` (tools/get-resource-links.ts): Returns an intro `text` block followed by multiple `resource_link` items. For a requested `count` (1–10), alternates between dynamic Text and Blob resources using URIs from `resources/templates.ts`.
- `get-resource-reference` (tools/get-resource-reference.ts): Accepts `resourceType` (`text` or `blob`) and `resourceId` (positive integer). Returns a concrete `resource` content block (with its `uri`, `mimeType`, and data) with surrounding explanatory `text`.
- `get-roots-list` (tools/get-roots-list.ts): Returns the last list of roots sent by the client.
Expand Down
2 changes: 1 addition & 1 deletion src/everything/docs/structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ src/everything
- `get-annotated-message.ts`
- Registers an `annotated-message` tool which demonstrates annotated content items by emitting a primary `text` message with `annotations` that vary by `messageType` (`"error" | "success" | "debug"`), and optionally includes an annotated `image` (tiny PNG) when `includeImage` is true.
- `get-env.ts`
- Registers a `get-env` tool that returns the current process environment variables as formatted JSON text; useful for debugging configuration.
- Registers a `get-env` tool that returns the value of a specific environment variable by name; useful for debugging configuration.
- `get-resource-links.ts`
- Registers a `get-resource-links` tool that returns an intro `text` block followed by multiple `resource_link` items.
- `get-resource-reference.ts`
Expand Down
2 changes: 1 addition & 1 deletion src/everything/resources/templates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export const RESOURCE_TYPES: string[] = [
* The completion logic matches the input against available resource types.
*/
export const resourceTypeCompleter = completable(
z.string().describe("Type of resource to fetch"),
z.string().describe("Type of resource — must be 'Text' or 'Blob'"),
(value: string) => {
return RESOURCE_TYPES.filter((t) => t.startsWith(value));
}
Expand Down
34 changes: 29 additions & 5 deletions src/everything/tools/get-env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,50 @@ const name = "get-env";
const config = {
title: "Print Environment Tool",
description:
"Returns all environment variables, helpful for debugging MCP server configuration",
inputSchema: {},
"Returns the value of a specific environment variable, helpful for debugging MCP server configuration",
inputSchema: {
type: "object",
properties: {
key: {
type: "string",
description:
"The name of the environment variable to retrieve (e.g., 'PATH', 'HOME', 'USER')",
},
},
required: ["key"],
},
};

/**
* Registers the 'get-env' tool.
*
* The registered tool Retrieves and returns the environment variables
* of the current process as a JSON-formatted string encapsulated in a text response.
* The registered tool retrieves and returns the value of a specific
* environment variable from the current process.
*
* @param {McpServer} server - The McpServer instance where the tool will be registered.
* @returns {void}
*/
export const registerGetEnvTool = (server: McpServer) => {
server.registerTool(name, config, async (args): Promise<CallToolResult> => {
const { key } = args as { key: string };
const value = process.env[key];

if (value === undefined) {
return {
content: [
{
type: "text",
text: `Environment variable '${key}' is not set.`,
},
],
};
}

return {
content: [
{
type: "text",
text: JSON.stringify(process.env, null, 2),
text: `${key}=${value}`,
},
],
};
Expand Down
7 changes: 5 additions & 2 deletions src/filesystem/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,10 @@ server.server.setNotificationHandler(RootsListChangedNotificationSchema, async (
server.server.oninitialized = async () => {
const clientCapabilities = server.server.getClientCapabilities();

if (clientCapabilities?.roots) {
if (clientCapabilities?.roots && allowedDirectories.length === 0) {
// Only fetch and apply MCP roots when no CLI directories were provided.
// CLI arguments take precedence over MCP roots since they are explicitly
// specified by the server operator.
try {
const response = await server.server.listRoots();
if (response && 'roots' in response) {
Expand All @@ -744,7 +747,7 @@ server.server.oninitialized = async () => {
}
} else {
if (allowedDirectories.length > 0) {
console.error("Client does not support MCP Roots, using allowed directories set from server args:", allowedDirectories);
console.error("Client does not support MCP Roots, or CLI directories provided. Using allowed directories from server args:", allowedDirectories);
}else{
throw new Error(`Server cannot operate: No allowed directories available. Server was started without command-line directories and client either does not support MCP roots protocol or provided empty roots. Please either: 1) Start server with directory arguments, or 2) Use a client that supports MCP roots protocol and provides valid root directories.`);
}
Expand Down
Loading