Context7 MCP 简明教程
直到最近,我的“提示工程工作流”看起来像是一场永无止境的复制粘贴马拉松。每当 Copilot 幻觉出一个不存在的方法或调用已弃用的 API 时,我就会打开官方文档,复制一大段文本,并希望这些额外的上下文能修正建议。有时它有效,但往往无效,而且每次这样的偏离都会打断我的专注。
Context7 从根源上解决了这种疲劳。该服务自动拉取正确的代码片段(按库和版本过滤),而不是我手动向模型灌输文档,并将其提供给助手。这一单一的改变意味着我可以留在编辑器中,Copilot 能够使用与我的依赖项相同的语言,而且它生成的代码通常第一次就能编译通过。
1、MCP 带来了什么
这里的“神奇粘合剂”是模型上下文协议 (MCP)。可以将 MCP 想象成一个标准插座,任何支持 LLM 的工具都可以在生成时向其请求外部服务(如 Context7)以获取额外知识。Upstash 提供了一个现成的 MCP 服务器来封装 Context7,因此 Copilot、Cursor 或 Windsurf 可以在没有定制插件的情况下进行集成。
2、在 GitHub Copilot 中设置
安装过程出奇地简单。以下是我的设置步骤:
- 打开 VSCode 设置:导航到您的 VSCode 设置
- 搜索 MCP:在搜索栏中输入 "mcp"
- 编辑 settings.json:点击第一个结果中的“在 settings.json 中编辑”
- 添加配置:包含以下 JSON 代码片段:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
您的最终 settings.json 应如下所示:
{
"mcp": {
"servers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
}
5. 重启 Copilot:重启 Copilot 后,MCP 即可使用 🙂
3、测试差异
我想展示这个 MCP 为项目带来的切实价值。因此,我使用 OpenAI 的 GPT-4 模型,在有和没有 MCP 的情况下测试了 Copilot 在“代理”模式下的输出。
测试提示:
帮助我使用 OpenAI Agents SDK 在此模块中创建一个包含多个代理的管道:1. WebSearch 代理:使用 OpenAI 的 WebSearch 工具执行互联网搜索
2. 内容生成代理:三个并行代理,生成不同风格的散文草稿变体
3. 评判代理:评估三个草稿并根据定义的标准选择最佳草稿
该管道应编排代理并处理它们之间的数据流。
让我们看看 Copilot 如何处理 OpenAI Agents SDK!
没有 MCP 的结果:
"""
使用 OpenAI Agents SDK 的管道:
1. WebSearch 代理:执行互联网搜索。
2. 三个内容生成代理:并行生成散文草稿。
3. 评判代理:选择最佳草稿。
"""
from openai import agents
# 1. WebSearch 代理
def websearch_agent(query):
"""使用 OpenAI 的 WebSearch 工具收集信息。"""
# 替换为实际的 OpenAI Agents SDK 调用
response = agents.WebSearch.run(query=query)
return response['results']
# 2. 内容生成代理(3 个变体)
def content_generation_agent(info, style=None):
"""从信息生成散文草稿。可选地改变风格。"""
prompt = f"根据以下信息撰写一篇详细、引人入胜的散文草稿:{info}\n"
if style:
prompt += f"使用以下风格:{style}\n"
# 替换为实际的 OpenAI Agents SDK 调用
return agents.Completion.run(prompt=prompt)['text']
# 3. 评判代理
def judge_agent(drafts):
"""评估草稿并选择最佳草稿。"""
prompt = (
"你是一个评判者。给定这三个草稿,根据清晰度、连贯性、创造力和事实准确性选择最佳草稿。\n"
f"草稿 1:{drafts[0]}\n"
f"草稿 2:{drafts[1]}\n"
f"草稿 3:{drafts[2]}\n"
"回复最佳草稿的编号(1、2 或 3)以及简短的理由。"
)
# 替换为实际的 OpenAI Agents SDK 调用
return agents.Completion.run(prompt=prompt)['text']
# 管道编排
def run_pipeline(query):
# 步骤 1:WebSearch
info = websearch_agent(query)
# 步骤 2:内容生成(并行)
styles = [None, "更具创意", "更简洁"]
drafts = [content_generation_agent(info, style=s) for s in styles]
# 步骤 3:评判
result = judge_agent(drafts)
return result
if __name__ == "__main__":
user_query = "喝绿茶对健康有什么好处?"
best_draft = run_pipeline(user_query)
print("管道结果:\n", best_draft)
不要费心阅读代码,只需看导入语句。说它“幻觉”都太抬举它了 🤣
import asyncio
from agents import Agent, Runner, WebSearchTool
from dotenv import load_dotenv
load_dotenv()
# 1. WebSearch 代理
def create_websearch_agent():
return Agent(
name="WebSearch Agent",
instructions="你使用 WebSearch 工具为任何查询收集相关信息。",
tools=[WebSearchTool()],
)
# 2. 内容生成代理(3 个变体)
def create_content_agent(style: str):
return Agent(
name=f"内容生成器 ({style})",
instructions=f"你是一位创意作家。使用提供的信息,以 {style} 风格撰写散文草稿。要求清晰、引人入胜且准确。",
)
# 3. 评判代理
def create_judge_agent():
return Agent(
name="评判代理",
instructions=(
"你是一位专业的评估者。你将收到三份散文草稿。"
"根据清晰度、连贯性、创造力和事实准确性选择最佳草稿。"
"只返回最佳草稿,并解释你的推理。"
),
)
async def pipeline(query: str):
websearch_agent = create_websearch_agent()
# 步骤 1:网络搜索
websearch_result = await Runner.run(websearch_agent, query)
info = websearch_result.final_output
# 步骤 2:并行生成 3 个草稿
styles = ["简洁", "叙述性", "分析性"]
content_agents = [create_content_agent(style) for style in styles]
tasks = [Runner.run(agent, info) for agent in content_agents]
drafts = await asyncio.gather(*tasks)
prose_drafts = [draft.final_output for draft in drafts]
# 步骤 3:评判代理选择最佳草稿
judge_agent = create_judge_agent()
judge_prompt = (
"以下是基于相同信息的三份散文草稿。\n"
f"草稿 1:\n{prose_drafts[0]}\n\n草稿 2:\n{prose_drafts[1]}\n\n草稿 3:\n{prose_drafts[2]}\n\n"
"选择最佳草稿并解释你的推理。"
)
judge_result = await Runner.run(judge_agent, judge_prompt)
return judge_result.final_output
if __name__ == "__main__":
import sys
user_query = sys.argv[1] if len(sys.argv) > 1 else "喝绿茶对健康有什么好处?"
result = asyncio.run(pipeline(user_query))
print(result)
差异是天壤之别。MCP 增强版本使用了正确的导入、正确的异步模式,并且实际上实现了一个工作的管道结构。
4、结束语
Context7 感觉像是一个提升生活质量的开发者工具,而不仅仅是另一个 AI 创新。集成只需五分钟,就会消失在编辑器的后台,并默默提升每个涉及外部库的 Copilot 建议。
如果您尝试这个工作流,我很乐意听到它如何改变您的编码会话。Upstash 团队正在快速推出功能——对私有包和语言过滤器的支持已经在路线图上。我们越早分享反馈,我们的 AI 助手就会变得越准确。
原文链接:How Context7 MCP by Upstash Transformed My VSCode and Copilot Workflow
汇智网翻译整理,转载请标明出处