Kiro中MCP Tools 完全指南:让 AI 助手直接操作你的开发环境
Kiro中MCP Tools 完全指南让 AI 助手直接操作你的开发环境一、什么是 MCP ToolsMCPModel Context Protocol是一种标准化协议让 AI 助手能够与外部工具和服务交互。MCP Tools 就是通过这个协议暴露给 AI 的工具函数——AI 可以像调用 API 一样直接调用这些工具操作数据库、消息队列、文件系统等。简单理解MCP Tools 是 AI 助手的手让它从只能说变成能动手做。与传统开发工具的区别对比项传统命令行工具MCP Tools操作者人手动输入命令AI 自动调用交互方式命令行/GUI自然语言描述需求上下文每次独立执行AI 保持对话上下文组合能力需要写脚本串联AI 自动编排多个工具注博客https://blog.csdn.net/badao_liumang_qizhi二、MCP 架构概览┌─────────────┐ ┌─────────────┐ ┌──────────────────┐ │ AI 助手 │ ──→ │ MCP Client │ ──→ │ MCP Server │ │ (Kiro) │ ←── │ (内置) │ ←── │ (提供 Tools) │ └─────────────┘ └─────────────┘ └──────────────────┘ │ ▼ ┌──────────────────┐ │ 实际服务 │ │ (MySQL/Redis/ │ │ RabbitMQ等) │ └──────────────────┘MCP Client内置在 AI 助手如 Kiro中负责发现和调用工具MCP Server独立进程暴露一组 Tools 供 AI 调用通信方式通过 stdio标准输入输出或 HTTP 传递 JSON-RPC 消息三、MCP Server 配置方式配置文件位置工作区级别.kiro/settings/mcp.json仅当前项目生效用户级别~/.kiro/settings/mcp.json所有项目生效配置结构{mcpServers:{server-name:{command:执行命令,args:[参数列表],env:{环境变量KEY:环境变量VALUE},disabled:false,autoApprove:[tool1,tool2]}}}字段说明command启动 MCP Server 的命令如python、npx、uvxargs命令参数env传给 MCP Server 的环境变量disabled是否禁用autoApprove不需要人工确认就能自动执行的工具列表四、常用 MCP Tools 分类与示例4.1 数据库类MySQL MCP Server安装方式{mysql:{command:uvx,args:[mcp-server-mysqllatest],env:{MYSQL_HOST:localhost,MYSQL_PORT:3306,MYSQL_USER:root,MYSQL_PASSWORD:password,MYSQL_DATABASE:my_database}}}提供的 ToolsTool功能使用示例list_tables列出所有表“查看数据库有哪些表”describe_table查看表结构“查看 user 表的字段”fetch_data执行 SELECT 查询“查询最近10条订单”execute_query执行任意 SQL“更新订单状态为已取消”create_table创建表“创建一个日志表”insert_data插入数据“往 config 表插入一条配置”实际对话示例用户查看 xxmaster 表中已取消的订单 AI调用fetch_data(SELECT id, order_code, order_status FROM xxmaster WHERE order_status 0 LIMIT 5) 返回[(53, KE.191108.000004, 0), (55, KE.191108.000006, 0)]4.2 消息队列类RabbitMQ MCP Server配置方式自建本地版{rabbitmq:{command:python,args:[/absolute/path/to/rabbitmq_mcp_server.py],env:{RABBITMQ_HOST:localhost,RABBITMQ_PORT:5672,RABBITMQ_USERNAME:guest,RABBITMQ_PASSWORD:guest,RABBITMQ_VHOST:/}}}提供的 ToolsTool功能使用示例test_connection测试连接“测试下 MQ 能不能连上”check_queue查看队列状态“看看 order-queue 有多少条消息”publish_message发送消息“发一条测试消息到 order-queue”get_message读取消息“看看队列里第一条消息内容”实际对话示例用户查看待发货队列有多少未消费的消息 AI调用check_queue(xxx.delivery.save.wait.delivery.info) 返回{queue: ..., message_count: 15, consumer_count: 2} AI回答队列中有15条待消费消息当前有2个消费者在处理。4.3 缓存类Redis MCP Server配置方式{redis:{command:npx,args:[-y,modelcontextprotocol/server-redis,redis://:passwordlocalhost:6379/0]}}提供的 ToolsTool功能使用示例get获取 key 的值“查看 user:1001 的缓存”set设置 key-value“设置限流开关为开启”delete删除 key“清除这个用户的缓存”list_keys列出匹配的 key“查看所有以 order: 开头的缓存”4.4 版本控制类Git MCP Server配置方式{git:{command:mcp-server-git,args:[--repository,/path/to/your/repo]}}提供的 ToolsTool功能使用示例git_status查看文件变更状态“看看改了哪些文件”git_diff_unstaged未暂存的变更“看看具体改了什么”git_log查看提交历史“最近5次提交是什么”git_commit提交代码“提交当前变更”git_create_branch创建分支“创建一个 fix 分支”4.5 网络请求类Fetch MCP Server配置方式{fetch:{command:uvx,args:[mcp-server-fetchlatest]}}提供的 ToolsTool功能使用示例fetch发送 HTTP 请求“调用本地接口测试一下”4.6 文件系统类Filesystem MCP Server配置方式{filesystem:{command:npx,args:[-y,modelcontextprotocol/server-filesystem,/allowed/path]}}提供的 ToolsTool功能read_file读取文件内容write_file写入文件list_directory列出目录内容search_files搜索文件move_file移动/重命名文件4.7 其他常用 MCP Server类别MCP Server用途Dockermcp-server-docker管理容器、镜像Kubernetesmcp-server-kubernetes查看 Pod、服务状态PostgreSQLmcp-server-postgresPostgreSQL 数据库操作MongoDBmcp-server-mongodbMongoDB 操作Elasticsearchmcp-server-elasticsearch搜索引擎操作AWSaws-documentation-mcp-server查询 AWS 文档GitHubmcp-server-githubPR、Issue 管理Slackmcp-server-slack发送消息通知五、自建 MCP Server 开发指南当现有开源 MCP Server 不满足需求时如连接阿里云私有服务可以自己开发。5.1 Python 版推荐自定义 MCP Server 模板.importosfrommcp.server.fastmcpimportFastMCP mcpFastMCP(my-custom-server)mcp.tool()defmy_tool(param1:str,param2:int10)-str:工具描述-AI会根据这个描述决定何时调用此工具. Args: param1: 参数1的说明 param2: 参数2的说明默认值10 Returns: 执行结果的字符串描述 # 实现你的业务逻辑resultdo_something(param1,param2)returnf执行成功:{result}mcp.tool()defanother_tool(name:str)-str:另一个工具的描述.returnfHello,{name}!if__name____main__:mcp.run(transportstdio)5.2 开发要点要点说明函数签名参数需有类型注解AI 依赖类型信息理解如何调用文档字符串AI 根据 docstring 决定何时调用哪个工具写清楚返回值必须返回字符串AI 需要能理解返回内容异常处理用 try-except 包裹返回错误信息而不是抛异常环境变量敏感信息密码等通过 env 传入不要硬编码传输方式默认用stdio适合本地进程间通信5.3 完整自定义示例HTTP API 测试工具HTTP API 测试 MCP Server.importjsonimportosimporturllib.requestimporturllib.errorfrommcp.server.fastmcpimportFastMCP BASE_URLos.environ.get(API_BASE_URL,http://localhost:8080)AUTH_TOKENos.environ.get(API_AUTH_TOKEN,)mcpFastMCP(api-tester)mcp.tool()defapi_get(path:str)-str:发送GET请求到指定路径. Args: path: API路径如 /api/users/1 Returns: 响应内容 try:urlf{BASE_URL}{path}requrllib.request.Request(url)ifAUTH_TOKEN:req.add_header(Authorization,fBearer{AUTH_TOKEN})withurllib.request.urlopen(req,timeout30)asresponse:bodyresponse.read().decode(utf-8)returnf状态码:{response.status}\n响应体:{body}excepturllib.error.HTTPErrorase:returnf请求失败:{e.code}{e.reason}exceptExceptionase:returnf请求异常:{str(e)}mcp.tool()defapi_post(path:str,body:str)-str:发送POST请求. Args: path: API路径 body: 请求体JSON字符串 Returns: 响应内容 try:urlf{BASE_URL}{path}databody.encode(utf-8)requrllib.request.Request(url,datadata,methodPOST)req.add_header(Content-Type,application/json)ifAUTH_TOKEN:req.add_header(Authorization,fBearer{AUTH_TOKEN})withurllib.request.urlopen(req,timeout30)asresponse:resp_bodyresponse.read().decode(utf-8)returnf状态码:{response.status}\n响应体:{resp_body}excepturllib.error.HTTPErrorase:error_bodye.read().decode(utf-8)ife.fpelsereturnf请求失败:{e.code}{e.reason}\n{error_body}exceptExceptionase:returnf请求异常:{str(e)}if__name____main__:mcp.run(transportstdio)配置{api-tester:{command:python,args:[/path/to/api_tester_mcp_server.py],env:{API_BASE_URL:http://localhost:8080,API_AUTH_TOKEN:your-token-here}}}六、Tools 组合使用场景MCP Tools 的真正威力在于组合使用。AI 可以在一次对话中调用多个不同的 Tools 完成复杂任务。场景1MQ 消息驱动的功能验证1. [MySQL] 查询测试数据找到合适的订单 2. [MySQL] 修改订单状态模拟业务场景 3. [RabbitMQ] 发送消息到目标队列 4. [RabbitMQ] 检查消息是否被消费 5. [MySQL] 验证数据库状态是否正确变更 6. [MySQL] 还原测试数据场景2问题排查1. [MySQL] 查询异常订单数据 2. [Redis] 查看相关缓存状态 3. [Git] 查看最近变更了什么代码 4. [MySQL] 对比上下游数据一致性 → AI 综合分析给出问题原因场景3自动化部署验证1. [Git] 检查当前分支和状态 2. [API-Tester] 调用健康检查接口 3. [MySQL] 验证数据库迁移是否完成 4. [Redis] 确认缓存预热完成 → AI 输出部署验证报告七、开发注意事项7.1 MCP Server 脚本路径// ❌ 错误相对路径不可靠args:[.kiro/tools/my_server.py]// ✅ 正确使用绝对路径args:[D:\\Project\\my-app\\.kiro\\tools\\my_server.py]7.2 消息序列化兼容性如果目标系统使用 Java 序列化如 SpringSimpleMessageConverterPython MCP Server 发送的 JSON 消息无法被正确反序列化。这种情况下用 MCP Tools 做查看和验证查队列状态、读消息用Java 单元测试做消息发送7.3 安全性敏感信息通过env环境变量传递不要硬编码在脚本中autoApprove谨慎配置只允许只读操作自动执行生产环境的连接信息不要配置在 MCP 中7.4 连接稳定性MCP Server 是长驻进程网络不稳定时可能断连在 Kiro 的 MCP Server 面板中可以手动重连配置保存后 Kiro 会自动重连八、总结核心概念说明MCP Server提供 Tools 的独立进程Tool一个可被 AI 调用的函数配置通过mcp.json声明 Server 的启动方式和参数调用AI 根据用户需求自动选择合适的 Tool 调用组合多个 Server 的多个 Tools 可以在一次对话中串联使用MCP Tools 的价值在于将 AI 从纸上谈兵升级为亲自动手。通过配置合适的 ToolsAI 可以直接查询数据、发送消息、验证结果将原本需要开发者在多个终端窗口手动操作的验证流程变成一段自然语言对话。