Skip to main content
Glama
vmridul

my-server

by vmridul

my-server

一个带有 weather widget 的 MCP 服务器。server.tool({ widget: { dir: "weather" } }) 指向 src/widgets/weather/(React)。mcpfy-sdk 会把它打包好 — 不需要 server.widget(),不需要 HTML 文件, 也不要求 prompt/resource。

weather 工具在服务端从 Open-Meteo 获取温度。 widget 中的查询通过宿主调用该工具(callTool),iframe 不会直接 fetch 这个 API。

如果后续 main.tsx 要 fetch 另一个源,请取消注释 src/server.ts 中的 widget.csp.connectDomains。ChatGPT 和 Claude Desktop 会应用该配置;Inspector 通常不会。

运行

本地(启动 MCP 服务器;widgets 在监听时打包 — 无需先单独构建):

npm run dev          # default transport: http
npm run dev:stdio
npm run dev:http     # HTTP on port 4000

生产环境 / ChatGPT(iframe 不能同样使用一次性的 dev 打包):

npm run build        # mcpfy build && tsc
npm start

Related MCP server: EightyAndSunny

在 MCP host 中使用

{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["mcpfy", "dev", "--", "--stdio"],
      "cwd": "/absolute/path/to/this-project"
    }
  }
}

接下来

  • UI:src/widgets/weather/main.tsx(mcpfy-sdk/widget hooks)

  • 无 UI 的工具:在 server.tool() 上省略 widget

  • mcpfy docs

Related MCP Connectors

Related MCP Servers