Skip to content

Panic using mcp server from openapi spec #141

@djoreilly

Description

@djoreilly

Reproduce steps:

Create a mcp server using FastMCP with the petstore openapi spec:

$ uv init
$ uv add fastmcp

Change main.py to have the example from https://gofastmcp.com/integrations/openapi#create-a-server but with the petstore spec :

import httpx
from fastmcp import FastMCP

client = httpx.AsyncClient(base_url="http://localhost:3000")

openapi_spec = httpx.get("https://petstore3.swagger.io/api/v3/openapi.json").json()

mcp = FastMCP.from_openapi(openapi_spec=openapi_spec, client=client, name="petstore-mcp")

if __name__ == "__main__":
    mcp.run()

Run the mcp server:

$ FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER=true uv run fastmcp run main.py:mcp --transport streamable-http --port 3000 

mcphost-http-3000.json

{
    "mcpServers": {
        "http-3000": {
            "type": "remote",
            "url": "http://localhost:3000/mcp"
        }
    }
}

Run mcphost with stderr redirected to a file because the terminal gets messed up

$ ./mcphost -m ollama:qwen2.5:3b  --config ../mcphost-http-3000.json -p hi 2>/tmp/mcphost.log
$ cat /tmp/mcphost.log 
panic: assignment to entry in nil map

goroutine 1 [running]:
github.com/cloudwego/eino/schema.openapiV3ToJSONSchema(0xc000594a80)
	/home/doreilly/go/pkg/mod/github.com/cloudwego/[email protected]/schema/tool.go:421 +0xe7d
github.com/cloudwego/eino/schema.(*ParamsOneOf).ToJSONSchema(0x0?)
	/home/doreilly/go/pkg/mod/github.com/cloudwego/[email protected]/schema/tool.go:195 +0x17d
github.com/cloudwego/eino-ext/components/model/ollama.toOllamaTools({0xc000ab0400, 0x13, 0x50?})
	/home/doreilly/go/pkg/mod/github.com/cloudwego/eino-ext/components/model/[email protected]/chatmodel.go:431 +0xca
github.com/cloudwego/eino-ext/components/model/ollama.(*ChatModel).genRequest(0xc0000c22d0, {0x1801a08?, 0x9?}, 0x1, {0xc000536068, 0x1, 0x1}, {0xc00012b188, 0x1, 0x1})
	/home/doreilly/go/pkg/mod/github.com/cloudwego/eino-ext/components/model/[email protected]/chatmodel.go:290 +0x472
github.com/cloudwego/eino-ext/components/model/ollama.(*ChatModel).Stream(0xc0000c22d0, {0x1cc1148, 0xc000578360}, {0xc000536068, 0x1, 0x1}, {0xc00012b188, 0x1, 0x1})
	/home/doreilly/go/pkg/mod/github.com/cloudwego/eino-ext/components/model/[email protected]/chatmodel.go:149 +0x11d
github.com/mark3labs/mcphost/internal/agent.(*Agent).generateWithStreamingFirstAndCallback(0xc000a88420, {0x1cc1110, 0x29ec320}, {0xc000536068, 0x1, 0x1}, {0xc000ab0400, 0x13, 0x20}, 0xc000756a80)
	/home/doreilly/dev/ai/mcp/mcphost/internal/agent/agent.go:319 +0x15c
github.com/mark3labs/mcphost/internal/agent.(*Agent).generateWithCancellationAndStreaming(0xc0007568c0?, {0x1cc1110?, 0x29ec320?}, {0xc000536068?, 0x0?, 0x0?}, {0xc000ab0400?, 0x0?, 0x0?}, 0xc000756a80)
	/home/doreilly/dev/ai/mcp/mcphost/internal/agent/agent.go:289 +0x59
github.com/mark3labs/mcphost/internal/agent.(*Agent).GenerateWithLoopAndStreaming(0xc000a88420, {0x1cc1110, 0x29ec320}, {0xc000756f70?, 0x1, 0x0?}, 0xc000756de0, 0xc000756d20, 0xc000756c50, 0xc000756bc8, ...)
	/home/doreilly/dev/ai/mcp/mcphost/internal/agent/agent.go:162 +0x555
github.com/mark3labs/mcphost/cmd.runAgenticStep({0x1cc1110?, 0x29ec320?}, 0xc000a88420?, 0xc0008fe0c0, {0xc000756f70, 0x1, 0x4?}, {0x0, {0x7ffdc1366f30, 0x2}, ...}, ...)
	/home/doreilly/dev/ai/mcp/mcphost/cmd/root.go:901 +0x5bb
github.com/mark3labs/mcphost/cmd.runAgenticLoop({0x1cc1110, 0x29ec320}, 0xc000a88420, 0xc0008fe0c0, {0x0, 0x0, 0x0}, {0x0, {0x7ffdc1366f30, 0x2}, ...}, ...)
	/home/doreilly/dev/ai/mcp/mcphost/cmd/root.go:817 +0x449
github.com/mark3labs/mcphost/cmd.runNonInteractiveMode({0x1cc1110, 0x29ec320}, 0xc000a88420, 0xc0008fe0c0, {0x7ffdc1366f30, 0x2}, {0x7ffdc1366eff, 0xa}, {0x0, 0x0, ...}, ...)
	/home/doreilly/dev/ai/mcp/mcphost/cmd/root.go:1297 +0x453
github.com/mark3labs/mcphost/cmd.runNormalMode({0x1cc1110, 0x29ec320})
	/home/doreilly/dev/ai/mcp/mcphost/cmd/root.go:720 +0x25ed
github.com/mark3labs/mcphost/cmd.runMCPHost(...)
	/home/doreilly/dev/ai/mcp/mcphost/cmd/root.go:340
github.com/mark3labs/mcphost/cmd.init.func4(0xc00048f300?, {0x17fa509?, 0x7?, 0x17f2528?})
	/home/doreilly/dev/ai/mcp/mcphost/cmd/root.go:119 +0x25
github.com/spf13/cobra.(*Command).execute(0x294a380, {0xc000138010, 0x6, 0x6})
	/home/doreilly/go/pkg/mod/github.com/spf13/[email protected]/command.go:1015 +0xb02
github.com/spf13/cobra.(*Command).ExecuteC(0x294a380)
	/home/doreilly/go/pkg/mod/github.com/spf13/[email protected]/command.go:1148 +0x465
github.com/spf13/cobra.(*Command).Execute(...)
	/home/doreilly/go/pkg/mod/github.com/spf13/[email protected]/command.go:1071
github.com/spf13/cobra.(*Command).ExecuteContext(...)
	/home/doreilly/go/pkg/mod/github.com/spf13/[email protected]/command.go:1064
github.com/charmbracelet/fang.Execute({0x1cc1110, 0x29ec320}, 0x294a380, {0x0, 0x0, 0x47aca5?})
	/home/doreilly/go/pkg/mod/github.com/charmbracelet/[email protected]/fang.go:169 +0x372
main.main()
	/home/doreilly/dev/ai/mcp/mcphost/main.go:23 +0x17e

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions