跳转到主要内容
from dedalus_mcp import MCPServer, tool

@tool(description="两数相加")
def add(a: int, b: int) -> int:
    return a + b

server = MCPServer("calculator")
server.collect(add)

if __name__ == "__main__":
    import asyncio
    asyncio.run(server.serve())
类型注解会自动转换为 JSON Schema。使用 collect() 注册工具。相同的模式同样适用于资源和 prompt。
服务器名称必须与你的 slug 匹配。 MCPServer("my-server") 中的 name 必须与你的部署 slug 和 ctx.dispatch() 调用保持一致。这样才能确保 OAuth 回调和请求路由正常工作。

使用 Dedalus SDK

集成模型上下文协议 (MCP) 非常简单。直接将服务器传递给 mcp_servers
from dedalus_labs import AsyncDedalus, DedalusRunner

client = AsyncDedalus()
runner = DedalusRunner(client)

# 托管的 MCP 服务器(marketplace slug)
response = await runner.run(
    input="Search for authentication docs",
    model="anthropic/claude-sonnet-4-20250514",
    mcp_servers=["your-org/your-server"],
)

# Local MCP server URL
response = await runner.run(
    input="Search for authentication docs",
    model="anthropic/claude-sonnet-4-20250514",
    mcp_servers=["http://localhost:8000/mcp"],
)
就是这样。软件开发工具包(SDK)会负责处理连接、tool 发现和执行。

服务器原语

MCP 服务器暴露三种类型的能力:
PrimitiveControlDescription
ToolsModelLLM 在推理过程中调用的函数。
ResourcesModel/UserLLM 可以读取用于获取上下文的数据。
PromptsUser由用户选择并渲染的消息模板。
Tools(工具)由模型控制:LLM 决定何时调用它们。Prompts(prompts)由用户控制:用户选择要运行的 prompt。Resources(资源)则既可以由模型控制,也可以由用户控制。

其他能力

能力使用方式
进度用于长时间运行任务的 ctx.progress()
日志ctx.info(), ctx.debug()
取消ctx.cancelled 标志位