Skip to content

AgentKit MCP Quick Start

环境要求

开始前你需要准备:

  1. 一个开通了 AgentKit 的火山账号的 AccessKey & SecretKey

    Tips: 需要确保 AccessKey 有 AgentKitFullAccess 权限。

  2. MCP 服务(可以部署在 VeFaas 或公网可访问的位置)

    • 现存支持 MCP 的服务后端
    • 现存的 HTTP 服务和服务的 Swagger 接口定义Json,具体可以参考Swagger
  3. Python 3.10+ installed

  4. 方舟APIKEY

第一步:配置本地环境

可以使用 uv 或者 python3 -m venv 进行虚拟环境管理,下文将以 uv做为示例

uv 安装参考:uv install

虚拟环境配置

bash
mkdir agentkit-mcp-quickstart
cd agentkit-mcp-quickstart
uv venv --python 3.12.0
source .venv/bin/activate

安装依赖

可以通过 --index 指定源,加快安装速度

bash
uv pip install veadk-python
uv pip install google-adk
pip install agentkit-sdk-python

第二步:创建 AgentKit MCP

  1. 登录火山引擎 AgentKit 控制台

  2. 为准备好的后端 创建 MCP 服务

  3. 获取到创建后的 MCP 服务 Endpoint 和 ApiKey。会看到以下类似的输出:

httpUrl即为 MCP 服务的 Endpoint,Authorization 即为 ApiKey。

json
{
  "mcpServers": {
    "create-http-334df4": {
      "httpUrl": "https://sd4fc6lpoh486npgcaav0.apigateway-cn-beijing.volceapi.com/mcp/create-http-334df4",
      "headers": {
        "Authorization": "Bearer P66l-rpaLbxxxxxxxxxxxxxxo2PQ"
      }
    }
  }
}

第三步:设置环境环境变量,运行 Agent

环境变量配置

bash
export MCP_ENDPOINT={{第三步中获取的Endpoint}}
export MCP_AUTH_KEY={{第三步中获取的ApiKey}}
export API_KEY={{方舟的APIKEY}}

代码示例

代码示例中,我们使用 VeADK 框架,创建了一个简单的智能体,用于调用 MCP 服务。

python
import logging

from veadk import Agent, Runner
from veadk.config import getenv
from agentkit.apps import AgentkitSimpleApp
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StreamableHTTPConnectionParams

logger = logging.getLogger(__name__)


url = getenv("MCP_ENDPOINT")
mcp_auth_key = getenv("MCP_AUTH_KEY")
apikey = getenv("API_KEY")

mcp_ecs_toolset = MCPToolset(
        connection_params=StreamableHTTPConnectionParams(
        url=url,
        headers={"Authorization": f"Bearer {mcp_auth_key}"}
    ),
)

app = AgentkitSimpleApp()

root_agent = Agent(
    name="ecs_helper",
    model_name="doubao-1-5-pro-256k-250115",
    instruction='''
        Help user find ECS instances and their details.
    ''',
    description="ECS Helper Agent",
    tools=[mcp_ecs_toolset]
)

runner = Runner(agent=root_agent)


@app.entrypoint
async def run(payload: dict, headers: dict) -> str:
    prompt = payload["prompt"]
    user_id = headers["user_id"]
    session_id = headers["session_id"]

    logger.info(
        f"Running agent with prompt: {prompt}, user_id: {user_id}, session_id: {session_id}"
    )
    
    # 运行智能体,自动处理工具调用
    response = await runner.run(
        messages=prompt, 
        user_id=user_id, 
        session_id=session_id
    )

    logger.info(f"Run response: {response}")
    return response

@app.ping
def ping() -> str:
    """健康检查接口"""
    return "pong!"

if __name__ == "__main__":
    # 启动本地开发服务器
    app.run(host="0.0.0.0", port=8000)

执行请求

curl
curl --location 'http://localhost:8000/invoke' \
  --header 'Content-Type: application/json' \
  --header 'user_id: veadk-test' \
  --header 'session_id: local_session' \
  --data '{"prompt": "分析下我的ecs实例"}'

运行结果

text
2025-10-24 20:17:33 | INFO | ark_veauth.py:25 - Fetching ARK token...
2025-10-24 20:17:33 | INFO | agent.py:118 - Model extra config: {'extra_headers': {'x-is-encrypted': 'true', 'veadk-source': 'veadk', 'veadk-version': '0.2.13', 'User-Agent': 'VeADK/0.2.13', 'X-Client-Request-Id': 'veadk/0.2.13'}, 'extra_body': {'caching': {'type': 'enabled'}, 'expire_at': 1761311852}}
2025-10-24 20:17:33 | DEBUG | agent.py:127 - LiteLLM client created with config: {'extra_headers': {'x-is-encrypted': 'true', 'veadk-source': 'veadk', 'veadk-version': '0.2.13', 'User-Agent': 'VeADK/0.2.13', 'X-Client-Request-Id': 'veadk/0.2.13'}, 'extra_body': {'caching': {'type': 'enabled'}, 'expire_at': 1761311852}}
2025-10-24 20:17:33 | INFO | agent.py:153 - VeADK version: 0.2.13
2025-10-24 20:17:33 | INFO | agent.py:155 - Agent `ecs_helper` init done.
2025-10-24 20:17:33 | DEBUG | agent.py:156 - Agent: {'name': 'ecs_helper', 'tools': [<google.adk.tools.mcp_tool.mcp_toolset.MCPToolset object at 0x7f8b4f24b9b0>], 'model_name': 'doubao-1-5-pro-256k-250115', 'model_api_base': 'https://ark.cn-beijing.volces.com/api/v3/'}
2025-10-24 20:17:33 | WARNING | runner.py:198 - No short term memory or session service provided, use an in-memory one instead.
2025-10-24 20:17:33 | INFO | runner.py:217 - No long term memory provided.
INFO:     Started server process [1330124]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
2025-10-24 20:18:35 | INFO | runner.py:250 - Run config: speech_config=None response_modalities=None save_input_blobs_as_artifacts=False support_cfc=False streaming_mode=<StreamingMode.NONE: None> output_audio_transcription=AudioTranscriptionConfig() input_audio_transcription=AudioTranscriptionConfig() realtime_input_config=None enable_affective_dialog=None proactivity=None session_resumption=None context_window_compression=None save_live_audio=False max_llm_calls=100
2025-10-24 20:18:35 | DEBUG | runner.py:265 - Auto create session: local_session, user_id: veadk-test, app_name: veadk_default_app
2025-10-24 20:18:38 | DEBUG | runner.py:280 - Function call: id='call_xbyfcvc86wc26mbxz39vst12' args={'region': 'cn-beijing', 'needNum': 10} name='describe_instances'
2025-10-24 20:19:14 | DEBUG | runner.py:288 - Event output: 以下是您的ECS实例详情:
1. **实例1**:
    - **实例ID**:i-ye7irm2sqobw80cqxd40
    - **创建时间**:2025-10-23T21:36:31+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Windows Server 2022 Datacenter Edition 64 - bit Chinese
    - **镜像ID**:image-ye5907jc6ikhx1exow93
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
2. **实例2**:
    - **实例ID**:i-ye7ipm0dtsqc6imh310d
    - **创建时间**:2025-10-23T21:05:44+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Debian 12 64 bit
    - **镜像ID**:image-ydzwsvy72n46nmxzvafi
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
3. **实例3**:
    - **实例ID**:i-ye7ilsbbpcbw80ca2ymj
    - **创建时间**:2025-10-23T20:06:54+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Windows Server 2022 Datacenter Edition 64 - bit Chinese
    - **镜像ID**:image-ye5907jc6ikhx1exow93
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
4. **实例4**:
    - **实例ID**:i-ye7fg1hgqoxjd1utrfy3
    - **创建时间**:2025-10-22T14:57:49+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Windows Server 2022 Datacenter Edition 64 - bit Chinese
    - **镜像ID**:image-ye5907jc6ikhx1exow93
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
5. **实例5**:
    - **实例ID**:i-ye5ejwoow0cva4fqydfc
    - **创建时间**:2025-09-24T14:25:37+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Windows Server 2022 Datacenter Edition 64 - bit Chinese
    - **镜像ID**:image-ye5907jc6ikhx1exow93
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
6. **实例6**:
    - **实例ID**:i-ye5ejub08wbw80bpd7hr
    - **创建时间**:2025-09-24T14:24:35+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Windows Server 2022 Datacenter Edition 64 - bit Chinese
    - **镜像ID**:image-ye5907jc6ikhx1exow93
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
7. **实例7**:
    - **实例ID**:i-ye5e5jyq68bw80c889i5
    - **创建时间**:2025-09-24T10:44:54+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Windows Server 2022 Datacenter Edition 64 - bit Chinese
    - **镜像ID**:image-ye5907jc6ikhx1exow93
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
8. **实例8**:
    - **实例ID**:i-ye5c4jbx8gqc6ily6b30
    - **创建时间**:2025-09-23T16:02:05+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Windows Server 2022 Datacenter Edition 64 - bit Chinese
    - **镜像ID**:image-ye5907jc6ikhx1exow93
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
9. **实例9**:
    - **实例ID**:i-ye5c4end34xjd1umbfns
    - **创建时间**:2025-09-23T16:00:05+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Debian 12 64 bit
    - **镜像ID**:image-ydzwsvfxhokhx11pdmlv
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a
10. **实例10**:
    - **实例ID**:i-ye5blj0xdsxjd1tk1vfh
    - **创建时间**:2025-09-23T11:09:46+08:00
    - **计费方式**:PostPaid(按量计费)
    - **实例规格**:ecs.e-c1m2.xlarge
    - **CPU**:4核(核心数2,每核心线程数2)
    - **内存**:8192MB
    - **操作系统**:Debian 12 64 bit
    - **镜像ID**:image-ydzwsvfxhokhx11pdmlv
    - **状态**:RUNNING(运行中)
    - **所属可用区**:cn - beijing - a

以上10个实例均为按量计费,规格为ecs.e-c1m2.xlarge ,且大部分使用Windows Server 2022 Datacenter Edition 64 - bit Chinese操作系统,少数使用Debian 12 64 bit操作系统,目前状态均为运行中,所属可用区为cn - beijing - a 。若您还需要进一步分析或有其他操作需求,可继续向我提问。

Released under the Apache-2.0 License.