modelcontextprotocol / modelcontextprotocol/python-sdk

Specifying capabilities w/ FastMCP Server

未關閉
#1,126 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

  • #1043 來自 @gspencergoog —— 已關閉,未合併
enhancement needs decision P2 v2
主要語言
Python
星號
24.3k
分支
4k
平均合併
1 天 1 小時
30 天內合併 PR
31

描述

Question

I noticed that the FastMCP server does not have the options to manually specify the capabilities of the server, however it is possible to do so with the low-level server.

My current workaround to advertise the capabilities is like so:

mcp = FastMCP("test-server")

# Manually set notification options
lowlevel_server: Server = mcp._mcp_server
lowlevel_server.notification_options.resources_changed = True
lowlevel_server.notification_options.tools_changed = True

# Now, we override the mcp.run()
async def main():
    async with stdio_server() as (r, w):
        init_opts = lowlevel_server.create_initialization_options(
            lowlevel_server.notification_options,
            {}
        )
        await lowlevel_server.run(r, w, init_opts)

if __name__ == "__main__":
    anyio.run(main)

Is there any other way to specify the capabilities of the FastMCP server? Is there a reason not to?

Thanks!

Additional Context

No response

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

研究方向

先閱讀報告中展示的 FastMCP 入口點,以及 Server 的低階方法:notification_options、create_initialization_options 和 run。確認 FastMCP 初始化目前如何公開 capabilities,並將 done 定義為:允許指定這些 capabilities,而不必覆寫 mcp.run()。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
python
領域
api
Issue 類型
功能
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。