大家好,欢迎阅读这份《智能体(AI+Agent)开发指南》!
在大模型和智能体快速发展的今天,很多朋友希望学习如何从零开始搭建一个属于自己的智能体。本教程的特点是 完全基于国产大模型与火山推理引擎实现,不用翻墙即可上手,非常适合国内开发者快速实践。
通过循序渐进的讲解,你将学会从 环境配置、基础构建、进阶功能到实际案例 的完整流程,逐步掌握智能体开发的核心技能。无论你是初学者还是有经验的工程师,相信这份教程都能为你带来启发。
一. MCP简介
Anthropic提出的Model Context Protocol(MCP) 是一种开放协议,它标准化了应用程序如何为大型语言模型 (LLM) 提供上下文。它如同一个专门为AI 应用设计的 USB-C 端口。让大模型非常轻易地调用外部工具。
二. MCP组成

MCP 架构的主要参与者是:
• MCP Host
协调和管理一个或多个 MCP 客户端的 AI 应用程序
• MCP Client
维护与 MCP 服务器的连接并从 MCP 服务器获取上下文供 MCP 主机使用的组件
• MCP Server
向 MCP 客户端提供上下文的程序
MCP 支持两种传输机制:
• Stdio transport
使用标准输入/输出流在同一台机器上的本地进程之间进行直接进程通信,提供最佳性能,没有网络开销。
• HTTP with Server-Sent Events(SSE) 或Streamable HTTP transport
将 HTTP POST 用于客户端到服务器消息,并使用可选的服务器发送事件来实现流式处理功能。
MCP 定义了server可以公开的三个核心基本操作:
• Tools
AI 应用程序可以调用action的可执行函数(例如,文件作、API 调用、数据库查询)
• Resources
向 AI 应用程序提供上下文信息的数据源(例如,文件内容、数据库记录、API 响应)
• Prompts
可重用的模板,有助于构建与语言模型的交互(例如,系统提示、少量示例)
三. 创建一个简单的 MCP server,功能是暴露出计算器工具和数据
参考:https://github.com/modelcontextprotocol/python-sdk
# hello_MCP.py
"""
FastMCP quickstart example.
"""
from mcp.server.fastmcp import FastMCP
# Create an MCP server
mcp = FastMCP("Demo")
# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!"
# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
"""Generate a greeting prompt"""
styles = {
"friendly": "Please write a warm, friendly greeting",
"formal": "Please write a formal, professional greeting",
"casual": "Please write a casual, relaxed greeting",
}
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
if __name__ == "__main__":
mcp.run(transport='stdio')
这里在本地使用 inspector 来测试,在终端中运行下面的代码,会自动打开一个浏览器:
npx -y @modelcontextprotocol/inspector python hello_MCP.py
1. 先链接server,点击 connect

2. 查看Resource功能

3. 查看Prompts功能

4. 查看Tools功能

四. 定义一个帮忙查询arxiv最新论文的MCP
1. 环境准备
# 通过输入查询的关键词,获取arxiv上最新的论文,例如这里搜索关键词为“GTP”
pip install "mcp[cli]"
pip install arxiv
2. 代码实现
# sse_arxiv_search.py
import httpx
import arxiv
import json
from mcp.server import FastMCP
app = FastMCP('arxiv-search', port=9000)
@app.tool()
async def arxiv_search(query: str) -> str:
"""
{
"name": "arxiv_search",
"description": "根据需要搜索的关键词,返回arxiv上相关的最新论文",
"inputSchema":
{
"type": "object",
"properties":
{
"query":
{
"description": "论文搜索关键词",
"type": "string"
}
},
"required":
[
"query"
]
},
}
"""
client = arxiv.Client()
search = arxiv.Search(
query=query,
max_results=2,
sort_by=arxiv.SortCriterion.SubmittedDate
)
search_results = []
for result in client.results(search): # 用新的调用方式
single_result = {
'url': result.entry_id,
'title': result.title,
# 'summary': result.summary
}
search_results.append(single_result)
return json.dumps(search_results)
if __name__ == "__main__":
app.run(transport='sse')
启动server
python sse_arxiv_search.py
client代码:
import asyncio
from mcp.client.sse import sse_client
from mcp import ClientSession
import json
async def main():
async with sse_client('http://127.0.0.1:9000/sse') as streams:
async with ClientSession(*streams) as session:
await session.initialize()
tools = await session.list_tools()
print(tools)
res = await session.call_tool('arxiv_search', {'query': 'GPT'})
print(res)
if __name__ == '__main__':
asyncio.run(main())
使用client调用,返回结果如下:

欢迎关注微信公众号:AIWorkshopLab,自动获取完整教程:智能体(AI+Agent)开发指南.pdf。
2万+

被折叠的 条评论
为什么被折叠?



