-
Notifications
You must be signed in to change notification settings - Fork 1k
Closed
Labels
bugSomething isn't workingSomething isn't workingwaiting on submitterWaiting for the submitter to provide more infoWaiting for the submitter to provide more info
Description
Describe the bug
When I connect my server it and open MCP Inspector in the browser and hit connect, it appears to be cycling through starting new instances of the server every few seconds.
To Reproduce
Here's my server
#!/usr/bin/env node --no-warnings
import path from 'path';
import { fileURLToPath } from 'url';
import fs from 'fs/promises'; // Use promises API for async file reading
import dotenv from 'dotenv';
// Fix imports to match the actual file paths
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; // Revert to McpServer
import { McpError, ErrorCode, ReadResourceRequestSchema } from '@modelcontextprotocol/sdk/types.js';
// Direct ESM imports now that modules have been converted
import { log } from './src/utils/logger.js';
import { z } from 'zod'; // Re-add Zod import
import { runSlurpWorkflow } from './src/slurpWorkflow.js';
// Replicate __dirname behavior in ESM
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Explicitly load .env from the script's directory
dotenv.config({ path: path.resolve(__dirname, '.env') });
/**
* Main function to initialize and run the MCP server.
* @async
*/
async function main() {
log.info("Initializing Slurp MCP Server...");
// 1. Initialize MCP Server
const server = new McpServer( // Revert to McpServer
{
// Server Information
name: "slurp-mcp-server",
version: "1.0.0", // TODO: Maybe pull from package.json later?
// Add any other relevant server info here
},
{
// Server Capabilities
capabilities: {
// Declare support for tools and resources as planned
tools: {}, // Empty object indicates basic support
resources: {}, // Empty object indicates basic support
// Add other capabilities like prompts if needed later
}
}
);
// --- Tool and Resource Handlers ---
// Schema defined inline below
// Register the slurp_url tool
server.tool(
'slurp_url',
'Scrapes documentation starting from a given URL, compiles it into a single Markdown file, and returns a resource URI to the compiled content.',
{ // Define schema inline as an object literal
url: z.string().describe("The starting URL for documentation scraping.")
},
async (args, extra) => { // Add 'extra' parameter
log.debug(`Raw args received: ${JSON.stringify(args)}`);
let url;
let progressToken;
let actualArgs = args; // Assume args is the correct object initially
// Check if args itself is the object containing the url and _meta,
// or if args.url contains a JSON string that needs further parsing.
if (actualArgs && typeof actualArgs.url === 'string') {
// Check if the url property *value* looks like JSON
try {
const innerData = JSON.parse(actualArgs.url);
// If parsing succeeds AND it contains a 'url' property, assume double encoding
if (innerData && typeof innerData.url === 'string') {
log.debug('Detected double-encoded args, parsing inner url property.');
actualArgs = innerData; // Use the parsed inner object
} else {
// If it parsed but doesn't have inner url, treat args.url as the actual URL
log.debug('args.url is a string but not double-encoded JSON, using it directly.');
// No change needed, actualArgs.url is the URL
}
} catch (e) {
// If parsing args.url fails, assume it's just the URL string itself
log.debug('args.url is a simple string URL.');
// No change needed, actualArgs.url is the URL
}
} else if (actualArgs && typeof actualArgs.url !== 'string') {
// If args.url is not a string, log a warning, something is wrong upstream
log.warn(`Expected args.url to be a string, but got ${typeof actualArgs.url}. Attempting to proceed.`);
// Attempt to use actualArgs.url anyway, might fail later
}
// Extract data from the potentially corrected args object
url = actualArgs.url; // This should now be the actual URL string
progressToken = actualArgs._meta?.progressToken;
// Add extra check to ensure url is a string before proceeding
if (typeof url !== 'string') {
log.error(`Failed to extract a valid URL string. Value received: ${JSON.stringify(url)}`);
throw new McpError(ErrorCode.InvalidParams, `Invalid URL parameter type received: ${typeof url}`);
}
log.debug(`Final extracted URL: ${url}`);
log.debug(`Final extracted progressToken: ${progressToken}`);
log.info(`Received slurp_url request for URL: ${url}`); // Use extracted url variable
try {
// Define progress update function
const sendProgressUpdate = (progress, total, message) => {
// Check if a progress token was provided by the client
if (progressToken !== undefined) {
// Use the underlying 'server.server' instance and its 'notification' method
// server.server.notification({ // Call the base notification method
// method: 'notifications/progress', // Specify the correct method name
// params: {
// progressToken,
// progress,
// ...(total !== undefined && { total }), // Conditionally add total
// ...(message && { message }), // Conditionally add message
// },
// });
log.verbose(`Sent progress update via server.server.notification: ${progress}${total !== undefined ? '/' + total : ''} - ${message || ''}`);
} else {
log.verbose(`Progress update skipped (no progressToken): ${progress}${total !== undefined ? '/' + total : ''} - ${message || ''}`);
}
};
// Call the refactored workflow function
log.debug('Starting runSlurpWorkflow...');
log.debug(`Calling runSlurpWorkflow with URL: ${url}`); // Use extracted url variable
// Pass the signal from the 'extra' object to the workflow options
const result = await runSlurpWorkflow(url, { onProgress: sendProgressUpdate, signal: extra.signal });
if (result.success && result.compiledFilePath) {
// Construct the resource URI using the 'slurp' scheme
// Ensure the path is relative and uses forward slashes for URI consistency
const relativePath = result.compiledFilePath.replace(/\\/g, '/');
const resourceUri = `slurp://${relativePath}`;
log.success(`Workflow successful for ${url}. Compiled file: ${result.compiledFilePath}`);
return {
// Return the resource URI in the tool result
resource_uri: resourceUri,
message: `Successfully scraped and compiled documentation. Resource available at: ${resourceUri}`
};
} else {
// Workflow reported failure
const errorMessage = result.error?.message || 'Unknown error during Slurp workflow.';
log.error(`Slurp workflow failed for ${url}: ${errorMessage}`);
// Return a structured MCP error
throw new McpError(ErrorCode.InternalError, `Slurp workflow failed: ${errorMessage}`);
// Alternatively, return error content:
// return {
// isError: true,
// content: [{ type: 'text', text: `Slurp workflow failed: ${errorMessage}` }]
// };
}
} catch (error) {
// Catch unexpected errors during the handler execution
log.error(`Unexpected error in slurp_url handler for ${url}: ${error.message}`);
if (error.stack) {
log.verbose(error.stack);
}
// Throw structured MCP error
throw new McpError(ErrorCode.InternalError, `Unexpected server error: ${error.message}`);
// Alternatively, return error content:
// return {
// isError: true,
// content: [{ type: 'text', text: `Unexpected server error: ${error.message}` }]
// };
}
}
);
// --- Resource Handler ---
// ReadResourceRequestSchema is imported at the top now
server.resource(ReadResourceRequestSchema, async (request) => { // Try server.resource() for McpServer // Revert to setRequestHandler
const requestedUri = request.params.uri;
log.verbose(`Received resources/read request for URI: ${requestedUri}`);
const SLURP_SCHEME = 'slurp://';
if (!requestedUri || !requestedUri.startsWith(SLURP_SCHEME)) {
// This shouldn't happen if client uses resources correctly, but good to check
throw new McpError(ErrorCode.InvalidParams, `Invalid or unsupported URI scheme for resources/read: ${requestedUri}`);
}
// Extract relative path, remove scheme prefix
const relativePath = requestedUri.substring(SLURP_SCHEME.length);
// Basic path sanitization/validation
if (relativePath.includes('..') || path.isAbsolute(relativePath)) {
throw new McpError(ErrorCode.InvalidParams, `Invalid path specified in URI: ${relativePath}`);
}
// Construct absolute path relative to the project root directory
const absolutePath = path.resolve(process.cwd(), relativePath);
// Security check: Ensure the resolved path is still within the project directory
// This prevents accessing files outside the intended scope via tricky relative paths
if (!absolutePath.startsWith(process.cwd())) {
throw new McpError(ErrorCode.InvalidParams, `Attempted to access path outside project directory: ${relativePath}`);
}
try {
log.verbose(`Attempting to read file at: ${absolutePath}`);
const fileContent = await fs.readFile(absolutePath, { encoding: 'utf-8' });
log.success(`Successfully read file for URI: ${requestedUri}`);
// Return the content in the expected MCP format
return {
contents: [
{
uri: requestedUri,
mimeType: 'text/markdown', // Assume compiled output is Markdown
text: fileContent,
},
],
};
} catch (error) {
if (error.code === 'ENOENT') {
log.error(`File not found for URI ${requestedUri} at path ${absolutePath}`);
throw new McpError(ErrorCode.InvalidParams, `Resource not found: ${requestedUri}`); // Use InvalidParams as per spec suggestion for unknown URIs
} else {
log.error(`Error reading file for URI ${requestedUri}: ${error.message}`);
throw new McpError(ErrorCode.InternalError, `Server error reading resource: ${error.message}`);
}
}
});
// --- Connect Transport and Start ---
// 2. Initialize Transport (Stdio for local execution)
const transport = new StdioServerTransport();
// 3. Connect Server to Transport and Start Listening
try {
await server.connect(transport);
log.success(`Slurp MCP Server running on stdio transport.`);
log.verbose(`Capabilities declared: ${JSON.stringify(server.capabilities)}`);
// Keep the server running until the transport closes
await new Promise((resolve) => {
transport.onclose = resolve;
// Optional: Add specific error handling for transport errors
transport.onerror = (error) => {
log.error(`Transport error: ${error.message}`);
// Depending on the error, you might want to exit or attempt recovery
process.exit(1); // Exit on transport error for simplicity
};
});
log.info("Slurp MCP Server transport closed. Exiting.");
} catch (error) {
log.error(`Failed to start or connect Slurp MCP Server: ${error.message}`);
if (error.stack) {
log.verbose(error.stack);
}
process.exit(1); // Exit if server fails to start
}
} // <-- Closing brace for main function now goes here
// Run the server
// Run the server using an IIAFE
(async () => {
try {
await main();
} catch (error) {
// Catch any uncaught errors during async main execution
log.error(`Unhandled error during server execution: ${error.message}`);
if (error.stack) {
log.verbose(error.stack);
}
process.exit(1);
}
})();
Expected behavior
I would expect it to just maintain it's initial connection to the server.
Logs
Node.js v23.4.0
mkwudfhe@Jareds-MacBook-Pro-10 slurpai % npx @modelcontextprotocol/inspector node mcp-server.js
Starting MCP inspector...
⚙️ Proxy server listening on port 6277
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
🔍 MCP Inspector is up and running at http://127.0.0.1:6274 🚀
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
Received message for sessionId 2af3e12f-0f6f-4068-96af-ae10b4ba24cc
Received message for sessionId 2af3e12f-0f6f-4068-96af-ae10b4ba24cc
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
New SSE connection
Query parameters: {
transportType: 'stdio',
command: 'node',
args: 'mcp-server.js',
env: '{"HOME":"/Users/mkwudfhe","LOGNAME":"mkwudfhe","PATH":"/Users/mkwudfhe/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/mkwudfhe/Projects/slurpai/node_modules/.bin:/Users/mkwudfhe/Projects/node_modules/.bin:/Users/mkwudfhe/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/opt/homebrew/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/mkwudfhe/.codeium/windsurf/bin:/usr/local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/mkwudfhe/.codeium/windsurf/bin:/Users/mkwudfhe/.local/bin:/opt/homebrew/bin/:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Users/mkwudfhe/.lmstudio/bin:/Users/mkwudfhe/.lmstudio/bin","SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"mkwudfhe"}'
}
Stdio transport: command=/opt/homebrew/bin/node, args=mcp-server.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Created web app transport
Set up MCP proxy
bolinfest
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingwaiting on submitterWaiting for the submitter to provide more infoWaiting for the submitter to provide more info