
用MCP扩展NOOA能力边界把外部MCP服务器变成Agent的即插即用工具【免费下载链接】labs-OO-AgentsNVIDIA Object Oriented Agents: the Pythonic way to build AI Agents.项目地址: https://gitcode.com/gh_mirrors/la/labs-OO-Agents如果你正在用 NOOANVIDIA Object Oriented Agents构建 AI Agent那么 Model Context ProtocolMCP是你扩展能力的最佳入口只需一个配置文件和一行代码就能把任意外部 MCP 服务器变成 Agent 的即插即用工具而不用手写任何工具定义。本文带你用 3 步完成接入并讲清楚 NOOA 背后的工作方式。MCP 能为 Agent 做什么 NOOA 的核心理念是Agent 就是一个 Python 对象字段是状态方法是能力docstring 是提示词。但再强大的 Agent 也需要手脚——查询知识库、调用数据库、操作浏览器等能力往往封装在外部服务中。MCP 正是为这类场景而生的开放协议。一个 MCP 服务器会声明一组带 JSON Schema 的工具tools任何符合协议的客户端都能发现并调用它们。NOOA 在 src/nooa/mcp/ 模块中完整实现了客户端侧能力自动发现连接服务器后自动拉取工具列表动态生成为每个 MCP 工具生成带类型注解的异步方法即插即用工具实例作为一个普通字段挂到 Agent 上LLM 即可直接调用三步完成即插即用接入 NOOA 官方提供了一个零网络依赖的完整示例一个内置的 wiki 知识搜索服务器examples/assets/wiki_mcp_server.py配合 examples/quickstart/11_mcp.py 即可跑通全流程。第一步安装 MCP 扩展依赖MCP 支持是独立扩展包安装方式uv sync --extra mcp # 仓库内开发环境 # 或 uv add nooa[mcp] # 在项目中安装第二步用 .mcp.json 注册 MCP 服务器NOOA 直接复用了 VS Code / Claude Code 的.mcp.json配置格式你在别处写过的配置可以原样搬过来。示例中的配置见 examples/quickstart/.mcp.json{ mcpServers: { wiki: { command: python, args: [examples/assets/wiki_mcp_server.py], transport: stdio } } }第三步把 MCP 工具声明为 Agent 字段核心代码只有几行完整版本见 examples/quickstart/11_mcp.pyclass WikiAgent(Agent, llmllm): Agent with MCP tool access to an internal wiki. wiki: MCPTool def __init__(self, **kwargs): super().__init__(**kwargs) self.wiki MCPManager.create_from_server( wiki, mcp_fileMCP_CONFIG, args[WIKI_SERVER] ) async def respond(self, prompt: str) - str: Answer the users question using the wiki search tool. ... ...调用MCPManager.create_from_server(wiki)后self.wiki就是一个活的工具对象——服务器上每声明一个 MCP 工具它就会多出一个对应的异步方法如search_wikiLLM 在推理时像调用普通 Python 方法一样调用它。NOOA 让 MCP 工具原生化的三个细节 ⚡1. JSON Schema 变 Python 签名NOOA 会读取每个工具的 input schema自动生成带类型注解的方法string→str、integer→int 等并把 min/max、pattern、enum 等约束写进 docstring让 LLM 在生成调用代码时看得见参数约束。相关实现在 src/nooa/mcp/tool.py。2. 每个实例独占一条连接每个MCPTool实例与一个 MCP 客户端一一对应src/nooa/mcp/tool.py连接状态互相隔离多 Agent、多服务器并存时不会串线。3. 连接失败报错可读工具调用失败时NOOA 会展开 ExceptionGroup把真正的底层错误如 HTTP 401、超时原因提炼成人话抛给 Agent方便其自我纠错若配置了 OAuth遇到 401 还会自动刷新令牌并重试一次src/nooa/mcp/oauth.py。选对传输方式stdio / SSE / streamable-httpcreate_from_server支持三种传输src/nooa/mcp/client.py传输适用场景特点stdio本地脚本型服务器子进程启动零网络配置开发调试首选sse现有 HTTP 服务兼容老式 Server-Sent Events 服务器streamable-http云端/远程 MCP 服务现代主流方案支持 OAuth 鉴权经验法则本地开发用 stdio生产接云服务用 streamable-http。对于调用慢工具如内部再套一次 LLM 调用的服务器记得调大tool_call_timeout默认 60 秒。上手清单与常见坑 忘记装扩展ImportError: nooa[mcp] not installed→ 执行uv sync --extra mcpstdio 服务器路径错误相对路径受工作目录影响示例中通过Path(__file__).resolve()做了修正建议照抄这个习惯一个 Agent 实例一个 MCPTool工具实例持有连接状态请在__init__中创建不要跨实例共享工具方法名冲突MCP 工具名会规范化为 Python 方法名避免与 Agent 已有方法重名深入阅读 完整示例代码examples/quickstart/11_mcp.py配套 MCP 服务器源码examples/assets/wiki_mcp_server.pyMCP 管理器与工具生成实现src/nooa/mcp/tool.py工具可见性机制说明docs/concepts/tools-and-visibility.md更多可运行示例索引examples/README.md从.mcp.json到 Agent 字段MCP 服务器在 NOOA 里只需要名字 一个字段。把生态里现成的 MCP 工具搬进来你的 Agent 能力边界也随之打开。【免费下载链接】labs-OO-AgentsNVIDIA Object Oriented Agents: the Pythonic way to build AI Agents.项目地址: https://gitcode.com/gh_mirrors/la/labs-OO-Agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考