MCP学习文章
使用Python和DockerMCP(模型上下文协议)的结构,LLM(Gemini)自主地利用工具ReAct代理中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
1.概述和目录配置
该项目是一个Docker容器,可在不污染主机环境(您的电脑或虚拟机)的情况下进行开发。由于将主机的UID/GID设置为接管容器,因此可以通过VScode等舒适地编辑文件。
playground/: 🌟 MCP学习用样本代码集src/:系统核心模块组
- mcp/:实施自制MCP服务器(local_fs_mcp.py, google_drive_mcp.py) - llm/gcp/:Gemini协作客户端和GCP Secret Manager协作模块
tmp/:由示例代码或MCP服务器自动生成的文件放置处scripts/:用于辅助容器启动和运行的命令组test/:pytest各模块的单体测试群
______________________________________________________________________
2.环境的启动、停止方法
使用Docker启动并销毁隔离的安全实验环境。
①赋予脚本执行权限(仅限第一次)
chmod +x scripts/*.sh②启动集装箱
./scripts/start.sh③进入集装箱中
./scripts/enter.sh※以后的命令(脚本的执行等)全部在该容器中进行。作业结束后返回原来的终端时 exit 中所述修改相应参数的值。
④停止集装箱(清理) 如果您的工作已完全完成,并且您想要销毁Docker容器,请选择主机端(从容器 exit 中所述的工具,调整墙的布局和几何形状。
./scripts/stop.sh※即使停止、废弃容器,也会装载主机侧的目录tmp/ 自动制作的文件和自己编辑的代码等不会消失,直接留在身边。
______________________________________________________________________
3.预准备(API密钥设置)
在存储库的根目录中 .env 的文件其中一个的规格化距离的幂函数。
方法A(面向简单、本地开发) .env 中描述的相应参数的值。
GEMINI_API_KEY=AIza...方法B(面向安全・GCP运用) 将API密钥存储在GCP Secret Manager中,使用容器的认证信息动态地进行拉拽的高级设计。
GCP_PROJECT_ID=your-gcp-project-id
GEMINI_SECRET_ID=gemini-api-key方法C(Google Drive MCP用:高安全设置) 使用Google Drive MCP时,可以在GCP的Secret Manager中保存服务帐户的JSON密钥并安全连接。另外,允许操作的文件夹名称也可以通过环境变量进行限制(定向复位栏对策)。
GCP_PROJECT_ID=your-gcp-project-id
DRIVE_CREDENTIALS_SECRET_ID=drive-credentials
ALLOWED_DRIVE_FOLDER_NAME=article-for-learning【必须】使用Google Drive MCP时的驱动器侧准备
为了移动谷歌Drive MCP,为了保证安全,需要在自己的谷歌Drive方面制作“可以访问LLM的专用隔离文件夹”,邀请服务账户。
- 创建专用文件夹:在自己的Google Drive内,允许LLM操作、阅览的文件夹(例如:
article-for-learning),模板名称将采用不同的格式。 - 授予访问权限(共享):按下创建的文件夹的“共享”按钮,将本次使用的GCP服务帐户的邮件地址(
〇〇@〇〇.iam.gserviceaccount.com等),作为“编辑”追加(邀请)。 - 注册环境变量:上述环境变量
ALLOWED_DRIVE_FOLDER_NAME请在中设置正确的名称,所创建的文件夹一字一句都没错。这可以完全阻止对非指定文件夹的专用文件的访问。
______________________________________________________________________
4.学习步骤
在进入集装箱状态下playground/ 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
第一步: 01_basic_mcp_client.py
“MCP客户端和MCP服务器是怎么对话的?」 不使用AI(LLM),从Python的纯粹的代码自制的「本地文件操作MCP服务器(src/mcp/local_fs_mcp.py),获取服务器的工具列表,或者手动 write_file 这是运行工具创建文件的基础脚本。
python playground/01_basic_mcp_client.py第二步: 02_gemini_react_agent.py
“LLM如何自律地使用工具?(ReAct Agent)” 给Gemini MCP服务器的「文件操作的工具箱」,给予「日本的首都哪里调查,把那个保存到文件」的提示。 Gemini自己思考(Reasoning)、运行工具(Acting)、接受结果并进一步思考……可以体验完美的自主代理循环。
python playground/02_gemini_react_agent.py※这里生成的文件是资料库内的 tmp/ 输出到文件夹。
步骤3: 03_gemini_drive_agent.py
“LLM理解外部云(Google Drive)的文件结构,下载所需的文件” 自制的高级“谷歌Drive MCP服务器(src/mcp/google_drive_mcp.py),Gemini用自然语言发出“寻找〇〇文件夹中的〇〇下载”的指示。 可以体验“一览获取文件夹内容”→“确定对象的文件ID”→“下载到保存地”这样复杂的自律行动和阻止无意中的外部文件的获取请求(定向复位对策)坚固的安全机制。
python playground/03_gemini_drive_agent.py步骤4: 04_gemini_arxiv_agent.py
“LLM从arXiv获取并解释论文的源代码。” 自制的“ArXiv MCP服务器(src/mcp/arxiv_mcp.py将条目添加到文档注册表。 MCP工具在背面自动进行PDF和TeX源的下载·解压缩展开·文本数据的结合,可以体验将论文的全部文本直接传递给LLM(透明的数据提取机构)。
python playground/04_gemini_arxiv_agent.py※提取的PDF、TeX文件组、已结合文本(raw_text),模板名称将采用不同的格式 tmp/arxiv/ 输出到文件夹。
______________________________________________________________________
5.运行测试
为了确认自制的MCP服务器和Gemini客户端是否正确动作,准备了单体测试。请在容器中执行以下操作:。
pytest test/ -v