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

长沙做网站咨询公司网站搭建工具视频

长沙做网站咨询公司,网站搭建工具视频,项目可行性研究报告,中国建设银行阆中分行网站在 OCI 生成式 AI 上搭一个「指定地区拉面店 MCP Server」——从 0 到 1 实战记录1. 项目缘起2. 运行环境3. 15 分钟极速搭环境3.1 安装 uv 并初始化项目3.2 依赖一次到位4. MCP Server 代码(ramen.py)5. MCP Client 代码(client.py&#xff…

在 OCI 生成式 AI 上搭一个「指定地区拉面店 MCP Server」——从 0 到 1 实战记录

    • 1. 项目缘起
    • 2. 运行环境
    • 3. 15 分钟极速搭环境
      • 3.1 安装 uv 并初始化项目
      • 3.2 依赖一次到位
    • 4. MCP Server 代码(ramen.py)
    • 5. MCP Client 代码(client.py)
    • 6. 跑起来!
      • 典型输出节选
    • 7. 小结

参考文章:OCI生成AIサービスで指定した地域のラーメン屋情報を教えてくれるMCPサーバを作ってみた


1. 项目缘起

顺手把最近很火的 MCP(Model Context Protocol) 拿来练手,做了一个「你报地名、我给拉面店」的小服务,跑在 Oracle Cloud Infrastructure(OCI)最新发布的 cohere.command-a-03-2025 大模型上。

一句话需求:
用户说「帮我找つくば的拉面店」,Agent 自动返回店铺列表。


2. 运行环境

组件说明
计算OCI Compute – Oracle Linux 8(1 OCPU / 16 GB)
Python3.11(uv 管理)
LLMcohere.command-a-03-2025(东京/大阪区域均可)
数据ホットペッパーグルメ Web サービス API

3. 15 分钟极速搭环境

3.1 安装 uv 并初始化项目

curl -LsSf https://astral.sh/uv/install.sh | sh
uv init ramen && cd ramen
uv venv && source .venv/bin/activate

3.2 依赖一次到位

uv add "mcp[cli]" httpx langchain_community langchain_mcp_adapters langgraph oci

还需要本地安装/配置 oci-cli。


4. MCP Server 代码(ramen.py)

核心思路:

  1. 根据用户给出的城市名 → 查 小エリアコード
  2. 拿小エリアコード → 查拉面店列表
import os, httpx
from dotenv import load_dotenv
from typing import Annotated
from mcp.server.fastmcp import FastMCPload_dotenv()
API_KEY = os.environ["API_KEY"]
API_BASE = "http://webservice.recruit.co.jp/hotpepper"
USER_AGENT = "ramen-app/1.0"mcp = FastMCP("ramen")@mcp.tool()
async def get_small_area_code(area_name: Annotated[str, "市区町村名 例: 京都市"]
) -> str:url = f"{API_BASE}/small_area/v1/?key={API_KEY}&format=json"async with httpx.AsyncClient() as c:r = await c.get(url, headers={"User-Agent": USER_AGENT}, timeout=30)r.raise_for_status()for a in r.json()["results"]["small_area"]:if area_name in a["name"]:return a["code"]return ""@mcp.tool()
async def get_gourmet_info(small_area_code: Annotated[str, "小エリアコード 例: X587"]
) -> str:url = (f"{API_BASE}/gourmet/v1/?key={API_KEY}&small_area={small_area_code}"f"&genre=G013&format=json")async with httpx.AsyncClient() as c:r = await c.get(url, headers={"User-Agent": USER_AGENT}, timeout=30)r.raise_for_status()shops = "\n".join([f"店名: {s['name']} {s['name_kana']}\n特徴: {s['catch']}\n"for s in r.json()["results"]["shop"]])return shopsif __name__ == "__main__":mcp.run(transport="stdio")

5. MCP Client 代码(client.py)

LangGraph ReAct Agent 自动调用上面两个工具。

import asyncio, oci
from langchain_community.chat_models import ChatOCIGenAI
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agentconfig = oci.config.from_file("~/.oci/config", "DEFAULT")
llm = ChatOCIGenAI(model_id="cohere.command-a-03-2025",service_endpoint="https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com",compartment_id="your-compartment-id",model_kwargs={"temperature": 0.7, "max_tokens": 500}
)async def main():async with MultiServerMCPClient({"ramen": {"command": "python","args": ["/home/opc/ramen/ramen.py"],"transport": "stdio",}}) as client:tools = await client.get_tools()agent = create_react_agent(llm, tools)ans = await agent.ainvoke({"messages": "つくばのラーメン屋を教えて下さい。"})for m in ans["messages"]:print(f"\n--- {type(m).__name__} ---\n{m.content}")if __name__ == "__main__":asyncio.run(main())

6. 跑起来!

$ uv run client.py

典型输出节选

--- HumanMessage ---
content='つくばのラーメン屋を教えて下さい。'--- AIMessage ---
tool_calls=[{'name': 'get_small_area_code', 'args': {'area_name': 'つくば'}, ...}]--- ToolMessage ---
content='X587'--- AIMessage ---
tool_calls=[{'name': 'get_gourmet_info', 'args': {'small_area_code': 'X587'}, ...}]--- AIMessage ---
content='以下のラーメン屋がつくばにあります。
- 山岡家 つくば中央店
- 天下一品 つくば店
- 丸源ラーメン つくば店
- 龍郎
- 活龍'

7. 小结

  • MCP Server 不到 100 行即可完成,可插拔 地接入任何兼容 MCP 的 Agent 框架。
http://www.dtcms.com/a/475500.html

相关文章:

  • 网站怎样优化关键词好视频推广方案模板
  • 坪山网站建设渠道技术好的手机网站建设
  • Lorax_linux构建软件
  • 网站建设管理维护责任书好看的团队官网源码
  • 不利于优化网站的因素wordpress做微信支付
  • wordpress快速加载企业网站seo优帮云
  • 马尾网站建设相册制作
  • 类和对象(类的默认6个成员函数以及操作符重载,日期类的实现)
  • Speedtest by Ookla:网速测速工具
  • 网站建设借鉴wordpress 教育主题
  • 百度怎么注册自己的网站湘潭企业网站建设 磐石网络
  • 基于加密技术的RFID标签数据安全保护方案
  • 培训心得网站建设互联网平台运营是做什么的
  • 辛集建设局网站优化方案英语
  • 网站建设采购项目王野天个人简历
  • 【微知】Mellanox mft工具的shell工具 mft-shell的基础用法(fw info、port info)
  • 集团网站网页模板腾讯云域名注册入口
  • wap网站建设公司互联网推广属于什么经营范围
  • 个人网站是什么意思一个人的免费高清影院
  • Go语言技术与应用(六):命令行工具开发基础
  • 网站建设通ipv6地址可以做网站吗
  • 北京网站设计工资多少西宁网站制作多少钱
  • 做张家界旅游网站多少钱苏州市市政建设管理处网站
  • 【图像处理基石】遥感图像地物识别从0到1:流程、实战与避坑指南
  • 西安集团网站建设趣丁号友情链接
  • sql优化之部分索引(Using index condition简称ICP)
  • 网站建设西安wordpress微交易
  • 滴滴出行网站建设Python爬取wordpress
  • 容器运维管理技能完全指南
  • 网站定位包括哪些内容电商是做什么的?