当前位置: 首页 > news >正文

Kiro中MCP Tools 完全指南:让 AI 助手直接操作你的开发环境

Kiro中MCP Tools 完全指南:让 AI 助手直接操作你的开发环境

一、什么是 MCP Tools

MCP(Model 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 的命令(如pythonnpxuvx
args命令参数
env传给 MCP Server 的环境变量
disabled是否禁用
autoApprove不需要人工确认就能自动执行的工具列表

四、常用 MCP Tools 分类与示例

4.1 数据库类:MySQL MCP Server

安装方式:

{"mysql":{"command":"uvx","args":["mcp-server-mysql@latest"],"env":{"MYSQL_HOST":"localhost","MYSQL_PORT":"3306","MYSQL_USER":"root","MYSQL_PASSWORD":"password","MYSQL_DATABASE":"my_database"}}}

提供的 Tools:

Tool功能使用示例
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":"/"}}}

提供的 Tools:

Tool功能使用示例
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://:password@localhost:6379/0"]}}

提供的 Tools:

Tool功能使用示例
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"]}}

提供的 Tools:

Tool功能使用示例
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-fetch@latest"]}}

提供的 Tools:

Tool功能使用示例
fetch发送 HTTP 请求“调用本地接口测试一下”

4.6 文件系统类:Filesystem MCP Server

配置方式:

{"filesystem":{"command":"npx","args":["-y","@modelcontextprotocol/server-filesystem","/allowed/path"]}}

提供的 Tools:

Tool功能
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 mcp=FastMCP("my-custom-server")@mcp.tool()defmy_tool(param1:str,param2:int=10)->str:"""工具描述-AI会根据这个描述决定何时调用此工具. Args: param1: 参数1的说明 param2: 参数2的说明,默认值10 Returns: 执行结果的字符串描述 """# 实现你的业务逻辑result=do_something(param1,param2)returnf"执行成功:{result}"@mcp.tool()defanother_tool(name:str)->str:"""另一个工具的描述."""returnf"Hello,{name}!"if__name__=="__main__":mcp.run(transport="stdio")

5.2 开发要点

要点说明
函数签名参数需有类型注解,AI 依赖类型信息理解如何调用
文档字符串AI 根据 docstring 决定何时调用哪个工具,写清楚
返回值必须返回字符串,AI 需要能理解返回内容
异常处理用 try-except 包裹,返回错误信息而不是抛异常
环境变量敏感信息(密码等)通过 env 传入,不要硬编码
传输方式默认用stdio,适合本地进程间通信

5.3 完整自定义示例:HTTP API 测试工具

"""HTTP API 测试 MCP Server."""importjsonimportosimporturllib.requestimporturllib.errorfrommcp.server.fastmcpimportFastMCP BASE_URL=os.environ.get("API_BASE_URL","http://localhost:8080")AUTH_TOKEN=os.environ.get("API_AUTH_TOKEN","")mcp=FastMCP("api-tester")@mcp.tool()defapi_get(path:str)->str:"""发送GET请求到指定路径. Args: path: API路径,如 /api/users/1 Returns: 响应内容 """try:url=f"{BASE_URL}{path}"req=urllib.request.Request(url)ifAUTH_TOKEN:req.add_header("Authorization",f"Bearer{AUTH_TOKEN}")withurllib.request.urlopen(req,timeout=30)asresponse:body=response.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:url=f"{BASE_URL}{path}"data=body.encode("utf-8")req=urllib.request.Request(url,data=data,method="POST")req.add_header("Content-Type","application/json")ifAUTH_TOKEN:req.add_header("Authorization",f"Bearer{AUTH_TOKEN}")withurllib.request.urlopen(req,timeout=30)asresponse:resp_body=response.read().decode("utf-8")returnf"状态码:{response.status}\n响应体:{resp_body}"excepturllib.error.HTTPErrorase:error_body=e.read().decode("utf-8")ife.fpelse""returnf"请求失败:{e.code}{e.reason}\n{error_body}"exceptExceptionase:returnf"请求异常:{str(e)}"if__name__=="__main__":mcp.run(transport="stdio")

配置:

{"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 完成复杂任务。

场景1:MQ 消息驱动的功能验证

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 序列化(如 SpringSimpleMessageConverter),Python 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 从"纸上谈兵"升级为"亲自动手"。通过配置合适的 Tools,AI 可以直接查询数据、发送消息、验证结果,将原本需要开发者在多个终端窗口手动操作的验证流程,变成一段自然语言对话。

http://www.jsqmd.com/news/1236870/

相关文章:

  • Java+Vue+SpringBoot毕业设计:从“能跑”到“能讲”的课程作业管理系统实战
  • 積家官方聲明:2026年7月香港售後網點地址全換,客服電話同步啟用 - 积家官方售后服务中心
  • 如何高效解决CLIProxyAPI的5种常见技术问题:实战深度排查指南
  • 当传统笔记软件无法满足深度思考需求时:思源笔记的块级知识管理解决方案
  • 卡地亚中国官方售后服务中心|服务热线及全部维修详细地址权威信息通知(2026年7月更新) - 卡地亚官方售后中心
  • OpenCV-Python实战(4)——OpenCV常见图像处理技术
  • 终极多模型数据库解决方案:SurrealDB如何重新定义实时数据管理
  • HDMI矩阵静电防护技术与关键业务应用解析
  • Starship终端提示符:3分钟打造你的个性化开发环境
  • Bilibili-Cleaner:打造专属纯净B站观影体验的终极指南
  • 终极指南:如何在Obsidian中通过Iconize插件快速美化知识库
  • 大模型推理工具vLLM、llama.cpp与Ollama性能对比评测
  • 吴江区打井找瑞溪泉:适配湖荡平原地质,纺织印染工业井专业服务商 - 瑞溪泉水利
  • 工业级单串口服务器NCOM510:零丢包Modbus网关技术解析
  • Qt模型/视图框架深度解析:从MVC对比到自定义Model实战
  • mimalloc内存分配器实战指南:解决高并发场景下的内存管理难题
  • 亲身到店探访广州卡地亚官方售后服务中心|全新电话和维修门店地址(2026年7月最新) - 卡地亚服务中心
  • 为什么92%的团队AI提效不到2倍?破解“伪自动化”陷阱的4层诊断法(含内部审计清单)
  • TMS320F2807x DCSM与MEM_CFG寄存器实战:内存安全与多核通信配置
  • 如何用DeepTutor打造你的终身AI学习助手:5大核心功能深度解析
  • AI资讯简报如何支撑真实工程决策:从信息过载到技术选型落地
  • SpringBoot整合MyBatis-Plus实战与优化指南
  • 华为非AI方向笔试真题 7月1号【字符串压缩与模式验证】
  • Jupynium.nvim 常见问题解答:解决安装、配置与使用中的难题
  • 国民级App Skill集成指南:从API到SDK的高效开发实践
  • 抖音批量下载终极指南:5分钟搞定全自动视频收藏管理
  • Unity游戏角色系统架构解析:从预制体到动画状态机的完整实现
  • 2026 年吉木萨尔靠谱的别墅温泉泡池厂家综合实力解析,揭秘:顶级私享温泉,如何定义你的奢华生活? - 行业甄选官
  • ZotMoov vs ZotFile:哪个更适合你的学术工作流?终极对比指南
  • 毕业设计项目 基于深度学习的安检管制物品识别系统