ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何创建 mcp: true 的 Composio 会话并把 MCP 端点接入 MCP 客户端

如何创建 mcp: true 的 Composio 会话并把 MCP 端点接入 MCP 客户端 如何创建 mcp: true 的 Composio 会话并把 MCP 端点接入 MCP 客户端【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio如果你的应用需要把一个用户的 Composio 会话通过 MCP 暴露给 MCP 兼容客户端做法是用 SDK 创建一个带mcp: true的 Composio 会话从返回的会话对象上读取托管的 MCP 端点session.mcp.url与session.mcp.headers再把这两个值传给你的框架的 MCP 客户端。本路径适用于自建应用如果你只是想给 Codex / Claude Code 这类现成客户端接应用文档指向了 Composio agent plugin 或 Composio Connect不在本文范围见 Using sessions via MCP 开头的说明。准备条件Python 3.10或Node.js 22.22.3TypeScript SDK 为 ESM-only使用import语法不能require()。安装 SDK只需 MCP 端点时不需要Composio 的 provider 包# Python uv add composio # TypeScript npm install composio/core从 Composio dashboard 获取项目 API key放入环境变量key 由你的应用持有COMPOSIO_API_KEYyour_composio_api_key按你接入的框架再装对应客户端依赖OpenAI Agents 路线加openai-agentsPython或openai/agentsTSClaude Agent SDK 路线加claude-agent-sdkPython或anthropic-ai/claude-agent-sdkTSVercel AI SDK 路线加ai ai-sdk/mcpTS。一个安装上的坑Python 侧当前的包是composio不要安装composio-core——那是 legacy v1 SDK调用已弃用的 API 且不支持 sessions见 Quickstart 的警告。创建 mcp: true 的会话Python 中通过composio.sessions.create()传入mcpTrueTypeScript 中通过composio.create()传入mcp: true。创建后端点的 URL 和请求头都在session.mcp上from composio import Composio composio Composio() session composio.sessions.create(user_iduser_123, mcpTrue) mcp_url session.mcp.url mcp_headers session.mcp.headersimport { Composio } from composio/core; const composio new Composio(); const session await composio.create(user_123, { mcp: true }); const mcpUrl session.mcp.url; const mcpHeaders session.mcp.headers;这里user_123只是本地示例 ID文档明确要求生产环境换成你数据库里稳定的用户 ID——每个 ID 有自己独立的连接与工具调用。恢复一个已保存的会话时也要传入同样的 flag才能让复用的会话带上session.mcpsession composio.use(session_id, mcpTrue)const session await composio.use(sessionId, { mcp: true });注意一点作用域MCP 端点和session.tools()背后是同一个会话。你在配置会话时设置的 toolkits、auth configs、connected accounts 对两者都生效。把端点接入 MCP 客户端接入动作只有一件事把session.mcp.url和session.mcp.headers传给你的框架的 MCP 客户端。以下示例均直接来自文档Using sessions via MCP按你用的框架选一个。OpenAI AgentsPythonfrom agents import Agent, HostedMCPTool agent Agent( nameAssistant, tools[ HostedMCPTool( tool_config{ type: mcp, server_label: composio, server_url: session.mcp.url, headers: session.mcp.headers, require_approval: never, } ) ], )Claude Agent SDKPythonfrom claude_agent_sdk import ClaudeAgentOptions options ClaudeAgentOptions( mcp_servers{ composio: { type: http, url: session.mcp.url, headers: session.mcp.headers, } }, )Vercel AI SDKTypeScriptimport { Composio } from composio/core; import { createMCPClient } from ai-sdk/mcp; const composio new Composio(); const { mcp } await composio.create(user_123, { mcp: true }); const client await createMCPClient({ transport: { type: http, url: mcp.url, headers: mcp.headers, }, }); const tools await client.tools();这个示例里createMCPClient建好连接后调client.tools()拿到工具列表——这也是下面验证接入的直接依据。可选固定工具清单direct-tools preset默认情况下端点背后是动态工具发现agent 运行时搜索。如果你想要一个“只服务固定几个工具”的端点——最接近传统 hosted MCP server 的形态——把mcp: true和 direct-tools preset 组合使用from composio import Composio, SESSION_PRESET_DIRECT_TOOLS composio Composio() session composio.sessions.create( user_iduser_123, toolkits[gmail], tools{gmail: {enable: [GMAIL_FETCH_EMAILS, GMAIL_CREATE_EMAIL_DRAFT]}}, session_presetSESSION_PRESET_DIRECT_TOOLS, mcpTrue, ) # 一个只暴露这两个工具的 MCP URL print(session.mcp.url)import { Composio, SessionPreset } from composio/core; const composio new Composio(); const session await composio.create(user_123, { toolkits: [gmail], tools: { gmail: { enable: [GMAIL_FETCH_EMAILS, GMAIL_CREATE_EMAIL_DRAFT] } }, sessionPreset: SessionPreset.DIRECT_TOOLS, mcp: true, }); console.log(session.mcp.url);指向该 URL 的任何 MCP 客户端只会看到GMAIL_FETCH_EMAILS和GMAIL_CREATE_EMAIL_DRAFT前面没有搜索和 meta tools。GMAIL_FETCH_EMAILS/GMAIL_CREATE_EMAIL_DRAFT是文档示例中的工具名请替换成你的 toolkit 实际工具名完整的 toolkit/tool/auth 过滤规则见 Configuring Sessions。版本提示来自该文档preload.tools、sessionPreset/session_preset等需要composio/core≥0.9.0TypeScript或composio≥0.13.0Python旧版 SDK 不支持。验证接入是否完成文档给出的可执行验证路径有两条让 MCP 客户端列工具。把客户端指向session.mcp.url后看它列出的工具是否符合预期默认配置客户端看到会话的 meta tools如COMPOSIO_SEARCH_TOOLS加 preloaded 工具direct-tools preset客户端只看到你在tools里enable的那几个工具没有 meta tools 在前。用 SDK 侧核对。direct-tools preset 下可直接打印工具名文档示例输出示意非固定预期tools session.tools() print([tool.name for tool in tools]) # GMAIL_FETCH_EMAILS # GMAIL_CREATE_EMAIL_DRAFTconst tools await session.tools(); console.log(tools.map((tool) tool.name)); // GMAIL_FETCH_EMAILS // GMAIL_CREATE_EMAIL_DRAFTsession.tools()和 MCP 端点背后是同一个会话两侧列出的工具应一致——这是判断会话配置是否按预期生效的直接依据。边界与限制tool-call modifiers 不会执行。beforeExecute/afterExecutehooks 和modifySchema转换在 SDK 的执行路径里走 MCP 时客户端直连 Composio 服务器执行工具绕过这些 hooks——无法像直接调用那样拦截、改写、记录或门控调用。会话绑定的自定义工具/toolkit 不可用。TypeScript 里experimental_createTool/experimental_createToolkit、Python 里composio.experimental.tool/composio.experimental.Toolkit创建的工具运行在你的进程内MCP 服务器只暴露 Composio 托管的工具本地自定义工具在该端点上不存在。需要以上任一项时改用 provider 直接调用工具而不是走 MCP。正向的一面MCP 路线不需要 provider 包任何 MCP 兼容客户端Claude Desktop、Cursor、OpenAI Responses API 等有 URL 即可接入。从旧版 MCP server 端点迁移过来如果你现在用的是按 toolkit 创建 server 配置的旧 MCP APIcomposio.mcp.create/composio.mcp.generateSingle Toolkit MCP 流程该 API 已弃用文档明确指向会话的 MCP 端点作为替代见 MCP API 概览 的弃用说明。迁移路径迁移指南# Before已弃用先建 server 配置再按用户生成 URL # server composio.mcp.create( # namemy-gmail-server, # toolkits[{toolkit: gmail, auth_config: ac_xyz123}], # allowed_tools[GMAIL_FETCH_EMAILS, GMAIL_SEND_EMAIL], # ) # instance composio.mcp.generate(user_iduser-123, mcp_config_idserver.id) # mcp_url instance[url] # After一个会话toolkit auth config tools 不变 session composio.create( user_iduser-123, toolkits[gmail], auth_configs{gmail: ac_xyz123}, tools{gmail: {enable: [GMAIL_FETCH_EMAILS, GMAIL_SEND_EMAIL]}}, mcpTrue, ) mcp_url session.mcp.url// Before已弃用 // const server await composio.mcp.create(my-gmail-server, { // toolkits: [{ toolkit: gmail, authConfigId: ac_xyz123 }], // allowedTools: [GMAIL_FETCH_EMAILS, GMAIL_SEND_EMAIL], // }); // const instance await composio.mcp.generate(user-123, server.id); // After const session await composio.create(user-123, { toolkits: [gmail], authConfigs: { gmail: ac_xyz123 }, tools: { gmail: { enable: [GMAIL_FETCH_EMAILS, GMAIL_SEND_EMAIL] } }, mcp: true, }); const mcpUrl session.mcp.url;迁移中的关键点同user_id 同 auth configac_…ID→ 已有 connected accounts 自动带上用户不重新认证。客户端侧只换 URL旧的https://backend.composio.dev/v3/mcp/SERVER_ID?user_idUSER_ID换成session.mcp.url其余不变。想要和旧 server 一样的静态固定工具列表行为加 direct-tools preset本文“可选”一节已给出写法不加则默认动态发现可以跨多个 toolkit 而不撑爆上下文。多个单 toolkit server 可合并进一个会话toolkits[gmail, slack, github]。triggers 不在会话里继续用composio.triggers.*和 webhooks。下一步会话是可复用的创建一次多轮对话复用同一个会话 IDcomposio.use(session_id, mcpTrue)不要每次请求都新建。需要限制 toolkit、指定 auth config、选择 connected account 时完整参数见 Configuring Sessions。用 Logs API 可检查工具调用的输入、响应与耗时见 Quickstart 末尾。【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表