我们可以把MCP理解成Cursor和外部功能之间的"翻译官",它能让Cursor和专门处理PDF的工具"对话",实现PDF解析、向量化存储和检索这些功能。
一、MCP到底是什么
MCP全称是Model Context Protocol,简单来说就是一套"沟通规则",它规定了Cursor怎么和外部的服务、工具交流。比如你想让Cursor处理PDF,Cursor本身没有这个能力,就需要通过MCP这个"翻译官",把你的需求"翻译"成外部PDF处理工具能听懂的语言,再把工具处理好的结果"翻译"回Cursor能展示的内容。
二、Windows电脑上怎么创建或获取MCP
- 先确认基础环境
确保你的Windows电脑已经安装了Python(推荐3.8及以上版本),可以从Python官网下载安装。
安装好Python后,打开命令提示符(Win+R输入cmd),输入pip --version,确认pip(Python的包管理工具)能正常工作。 - 创建MCP服务端(以PDF解析为例)
这里我们用一个简单的开源框架来搭建,步骤如下:
安装依赖工具
在命令提示符里输入以下命令,安装文档解析、向量处理需要的工具:
bash
Copy Code
pip install pdfplumber sentence-transformers faiss-cpu langchain
pdfplumber:负责把PDF里的文字提取出来
sentence-transformers:把提取的文字转换成计算机能理解的"向量"
faiss-cpu:用来存储和检索这些向量
langchain:帮我们快速搭建MCP服务的框架
编写MCP服务代码
新建一个叫pdf_mcp_server.py的文件,把下面的代码复制进去:
c
python
Copy Code
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import SentenceTransformerEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI # 如果用本地模型,可替换为LocalLLM
import json
import socket
# 1. 加载PDF并拆分文本
loader = PyPDFLoader("你的PDF文件路径.pdf")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
texts = text_splitter.split_documents(documents)
# 2. 转换成向量并存储
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
vectorstore = FAISS.from_documents(texts, embeddings)
# 3. 创建MCP服务接口
def handle_mcp_request(request):
# 解析请求(这里简化处理,实际可根据MCP协议规范调整)
query = request.get("query", "")
if not query:
return {"error": "缺少查询内容"}
# 用向量检索回答问题
retriever = vectorstore.as_retriever()
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=retriever)
result = qa.run(query)
return {"answer": result}
# 4. 启动服务(监听本地端口)
def start_server():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("localhost", 9000))
server.listen(1)
print("MCP服务已启动,监听端口9000")
while True:
client, addr = server.accept()
request = json.loads(client.recv(1024).decode())
response = handle_mcp_request(request)
client.send(json.dumps(response).encode())
client.close()
if __name__ == "__main__":
start_server()
注意把代码里的"你的PDF文件路径.pdf"替换成你电脑里实际的PDF文件路径
如果不想用OpenAI的在线模型,也可以换成本地的开源模型,比如LlamaCpp,需要额外安装pip install llama-cpp-python
启动MCP服务
把代码保存好后,在命令提示符里进入这个文件所在的文件夹,输入python pdf_mcp_server.py,就会启动MCP服务,它会在本地的9000端口等待Cursor的连接。
- 在Cursor里配置MCP
打开Cursor,进入设置界面(快捷键Ctrl+Comma)
找到Model Context Protocol相关设置,添加一个新的MCP服务:
服务名称:可以随便起,比如PDF解析服务
服务地址:填写http://localhost:9000
协议版本:选择最新版本
保存设置后,重启Cursor,现在你就可以在Cursor里上传PDF,然后提问,它就会通过MCP调用我们搭建的服务来处理PDF啦
三、快速获取现成MCP服务(不想自己搭建)
如果你不想自己写代码,也可以用一些开源的现成工具,比如:
PrivateGPT:一个开源的本地PDF处理工具,它本身就支持MCP协议,你可以直接下载安装,然后在Cursor里配置它的服务地址
quivr:另一个开源的RAG工具,也支持MCP,安装后可以快速和Cursor对接
从截图来看,你同事的 Cursor 目前没有安装任何 MCP 工具(显示 "No MCP Tools")。
添加 MCP 的两种方式

方式一:通过 UI 添加(截图中的按钮)
点击 "Add Custom MCP" 按钮,然后填写:
| 字段 | 说明 |
|---|---|
| Name | 工具名称,如 yocto-builder |
| Type | 选择 stdio(本地命令)或 sse(远程服务) |
| Command | 启动命令,如 python3 或 node |
| Arguments | 参数,如 /path/to/yocto_mcp_server.py |
方式二:直接编辑配置文件(推荐 ⭐)
创建或编辑项目根目录的 .cursor/mcp.json:
json
{
"mcpServers": {
"yocto-sa522": {
"command": "python3",
"args": ["/home/user/yocto-mcp/yocto_mcp_server.py"],
"env": {
"YOCTO_BUILD_DIR": "/path/to/yocto/build"
}
},
"android-adb": {
"command": "npx",
"args": ["-y", "android-debug-bridge-mcp"]
}
}
}
然后 重启 Cursor 或按 Cmd/Ctrl + Shift + P → Developer: Reload Window
快速测试步骤
bash
# 1. 创建目录
mkdir -p ~/cursor-mcp && cd ~/cursor-mcp
# 2. 保存之前提供的 yocto_mcp_server.py
# [粘贴代码]
# 3. 安装依赖
pip install mcp
# 4. 测试服务器能否独立运行
python3 yocto_mcp_server.py
# 应该没有报错,等待输入
# 5. 配置 Cursor
# 按上面的方式二创建 .cursor/mcp.json
验证安装成功
配置完成后,在 Cursor 中:
- 查看 Tools 面板 → 应该显示
yocto-sa522和可用工具列表 - 在 Composer 中测试 : "使用 yocto 工具编译 linux-qcom"
如果成功,Cursor 会自动调用 bitbake_compile 工具。
常见问题
| 问题 | 解决 |
|---|---|
| 显示 "Connection refused" | 检查 Python 路径是否正确 |
| 工具不显示 | 确保 mcp.json 语法正确,重启 Cursor |
| 命令执行失败 | 在终端先测试 python3 yocto_mcp_server.py 是否能运行 |
| 权限不足 | 确保有执行权限:chmod +x yocto_mcp_server.py |
需要我提供一个 简化版的 yocto_mcp_server.py 吗?只保留最核心的编译和日志功能,方便快速测试。