Merge pull request #81 from modelcontextprotocol/ashwin/serverport

Respect custom server port
This commit is contained in:
ashwin-ant
2024-11-27 08:59:59 -05:00
committed by GitHub
3 changed files with 20 additions and 13 deletions

View File

@@ -61,8 +61,9 @@ async function main() {
// Make sure our server/client didn't immediately fail // Make sure our server/client didn't immediately fail
await Promise.any([server, client, delay(2 * 1000)]); await Promise.any([server, client, delay(2 * 1000)]);
const portParam = SERVER_PORT === "3000" ? "" : `?proxyPort=${SERVER_PORT}`;
console.log( console.log(
`\n🔍 MCP Inspector is up and running at http://localhost:${CLIENT_PORT} 🚀`, `\n🔍 MCP Inspector is up and running at http://localhost:${CLIENT_PORT}${portParam} 🚀`,
); );
try { try {

View File

@@ -57,6 +57,10 @@ import ToolsTab from "./components/ToolsTab";
const DEFAULT_REQUEST_TIMEOUT_MSEC = 10000; const DEFAULT_REQUEST_TIMEOUT_MSEC = 10000;
const params = new URLSearchParams(window.location.search);
const PROXY_PORT = params.get("proxyPort") ?? "3000";
const PROXY_SERVER_URL = `http://localhost:${PROXY_PORT}`;
const App = () => { const App = () => {
const [connectionStatus, setConnectionStatus] = useState< const [connectionStatus, setConnectionStatus] = useState<
"disconnected" | "connected" | "error" "disconnected" | "connected" | "error"
@@ -82,7 +86,8 @@ const App = () => {
const [args, setArgs] = useState<string>(() => { const [args, setArgs] = useState<string>(() => {
return localStorage.getItem("lastArgs") || ""; return localStorage.getItem("lastArgs") || "";
}); });
const [url, setUrl] = useState<string>("http://localhost:3001/sse");
const [sseUrl, setSseUrl] = useState<string>("http://localhost:3001/sse");
const [transportType, setTransportType] = useState<"stdio" | "sse">("stdio"); const [transportType, setTransportType] = useState<"stdio" | "sse">("stdio");
const [requestHistory, setRequestHistory] = useState< const [requestHistory, setRequestHistory] = useState<
{ request: string; response?: string }[] { request: string; response?: string }[]
@@ -191,7 +196,7 @@ const App = () => {
}, [args]); }, [args]);
useEffect(() => { useEffect(() => {
fetch("http://localhost:3000/config") fetch(`${PROXY_SERVER_URL}/config`)
.then((response) => response.json()) .then((response) => response.json())
.then((data) => { .then((data) => {
setEnv(data.defaultEnvironment); setEnv(data.defaultEnvironment);
@@ -404,7 +409,7 @@ const App = () => {
}, },
); );
const backendUrl = new URL("http://localhost:3000/sse"); const backendUrl = new URL(`${PROXY_SERVER_URL}/sse`);
backendUrl.searchParams.append("transportType", transportType); backendUrl.searchParams.append("transportType", transportType);
if (transportType === "stdio") { if (transportType === "stdio") {
@@ -412,7 +417,7 @@ const App = () => {
backendUrl.searchParams.append("args", args); backendUrl.searchParams.append("args", args);
backendUrl.searchParams.append("env", JSON.stringify(env)); backendUrl.searchParams.append("env", JSON.stringify(env));
} else { } else {
backendUrl.searchParams.append("url", url); backendUrl.searchParams.append("url", sseUrl);
} }
const clientTransport = new SSEClientTransport(backendUrl); const clientTransport = new SSEClientTransport(backendUrl);
@@ -469,8 +474,8 @@ const App = () => {
setCommand={setCommand} setCommand={setCommand}
args={args} args={args}
setArgs={setArgs} setArgs={setArgs}
url={url} sseUrl={sseUrl}
setUrl={setUrl} setSseUrl={setSseUrl}
env={env} env={env}
setEnv={setEnv} setEnv={setEnv}
onConnect={connectMcpServer} onConnect={connectMcpServer}

View File

@@ -22,8 +22,8 @@ interface SidebarProps {
setCommand: (command: string) => void; setCommand: (command: string) => void;
args: string; args: string;
setArgs: (args: string) => void; setArgs: (args: string) => void;
url: string; sseUrl: string;
setUrl: (url: string) => void; setSseUrl: (url: string) => void;
env: Record<string, string>; env: Record<string, string>;
setEnv: (env: Record<string, string>) => void; setEnv: (env: Record<string, string>) => void;
onConnect: () => void; onConnect: () => void;
@@ -38,8 +38,8 @@ const Sidebar = ({
setCommand, setCommand,
args, args,
setArgs, setArgs,
url, sseUrl,
setUrl, setSseUrl,
env, env,
setEnv, setEnv,
onConnect, onConnect,
@@ -75,6 +75,7 @@ const Sidebar = ({
</SelectContent> </SelectContent>
</Select> </Select>
</div> </div>
{transportType === "stdio" ? ( {transportType === "stdio" ? (
<> <>
<div className="space-y-2"> <div className="space-y-2">
@@ -99,8 +100,8 @@ const Sidebar = ({
<label className="text-sm font-medium">URL</label> <label className="text-sm font-medium">URL</label>
<Input <Input
placeholder="URL" placeholder="URL"
value={url} value={sseUrl}
onChange={(e) => setUrl(e.target.value)} onChange={(e) => setSseUrl(e.target.value)}
/> />
</div> </div>
)} )}