使用说明
🌐 MCP-Server-101
🌟 项目概述
MCP-Server-101是模型上下文协议(MCP)的稳健实现,旨在促进与各种文档源的无缝集成和交互。它提供了从文档中查询和提取相关信息的工具,使其成为使用以下库的开发人员的重要资源 langchain, openai,以及 llama-index.
📔 模型上下文协议(MCP)
模型上下文协议(MCP)是一种开放的标准化协议,将AI模型与外部数据源和工具连接起来,就像AI应用程序的“USB-C端口”一样。MCP使用客户端-服务器架构:主机(AI应用程序)通过MCP客户端与轻量级MCP服务器通信,轻量级MCP服务器通过与本地文件、数据库、API或其他服务接口来公开特定功能。
关键组件包括:
- 主机:需要访问外部数据或工具的AI应用程序。
- 客户:与MCP服务器保持一对一连接。
- MCP服务器:轻量级服务器通过MCP公开功能。
- 本地数据源:服务器访问的文件或数据库。
- 远程服务:服务器访问的外部API或服务。
MCP服务器可以提供三种主要功能:
- 资源:可以由客户端读取的类文件数据(如API响应或文件内容)
- 工具:LLM可以调用的函数(经用户批准)
- 提示:帮助用户完成特定任务的预先编写的模板
例如,像Cursor这样的主机指示其MCP客户端更新Google Sheet并发送Slack消息;客户端然后连接到Google Sheets和Slack的单独MCP服务器,这些服务器调用相应的API并通过客户端将结果返回给主机。
🏗️ 关键功能
1.环境配置
该项目使用 dotenv 加载环境变量,确保安全灵活的配置管理。
2.网络搜索
这 search_web 函数使用Serper.dev API执行web搜索。它为给定的查询检索最多两个结果,并优雅地处理超时。
3.网络内容获取
这 fetch_url 函数从网页获取并解析可见文本内容。使用 httpx 用于异步HTTP请求和 BeautifulSoup 用于HTML解析。
4.文档搜索工具
这 get_docs MCP工具允许用户在支持的库中搜索特定查询的文档(langchain, openai, llama-index).它执行受限于所选库的文档域的网络搜索,并从顶部结果中提取可见的文本内容。
5.服务器执行
MCP服务器使用 mcp.run 方法与 stdio 运输,使其适合与其他工具和系统集成。
💻 入门指南
先决条件
- Python 3.12或更高版本
pip(Python包管理器)- 访问Serper.dev API(需要API密钥)
安装uv包管理器
在MacOS/Linux上:
curl -LsSf https://astral.sh/uv/install.sh | sh
确保之后重新启动终端,以确保 uv 命令被接收。
项目设置
- 创建并初始化项目:
# Create a new directory for our project
uv init mcp-server
cd mcp-server
# Create virtual environment and activate it
uv venv
source .venv/bin/activate # On Windows use: .venv\Scripts\activate
# Install dependencies
uv add "mcp[cli]" httpx
- 创建服务器实现文件:
touch main.py
运行服务器
- 启动MCP服务器:
uv run main.py
- 服务器将启动并准备接受连接
连接到克劳德桌面
- 从官方网站安装Claude Desktop
- 配置Claude Desktop以使用您的MCP服务器:
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mcp-server": {
"command": "uv", # It's better to use the absolute path to the uv command
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/YOUR/mcp-server",
"run",
"main.py"
]
}
}
}
- 重新启动克劳德桌面
🧑🏼💻 功能和架构
1.模块化设计
该项目的结构确保了模块化和可维护性。关键组件包括:
main.py:使用网络搜索和文档检索工具实现MCP服务器。pyproject.toml:定义项目元数据和依赖关系,确保兼容性和易于设置。uv.lock:锁定一致环境的依赖版本。
2.异步操作
该服务器利用异步编程实现高效的网络搜索和内容获取,使用以下库 httpx 和 BeautifulSoup.
3.依赖关系管理
依赖关系是通过以下方式进行管理的 pyproject.toml 并锁定 uv.lock关键依赖关系包括:
beautifulsoup4:用于HTML解析。dotenv:用于环境变量管理。httpx:用于异步HTTP请求。mcp[cli]:用于MCP服务器实现。
4.文档搜索工具
这 get_docs 该工具允许用户查询特定库的文档(langchain, openai, llama-index).它集成了网络搜索和内容提取,以提供相关结果。
5.可扩展性
该项目旨在实现可扩展性,允许开发人员以最小的努力添加新工具或集成其他库。
6.环境配置
环境变量通过以下方式进行管理 .env 文件,确保安全灵活的配置。
7.标准合规性
该项目遵循现代Python标准,要求Python 3.12或更高版本,并使用 pyproject.toml 用于配置。
8.依赖锁定
这 uv.lock 该文件确保所有依赖关系都固定到特定版本,从而防止跨环境的兼容性问题。
9.未来的增强功能
- 在中添加对其他库的支持
get_docs工具。 - 对频繁访问的文档实施缓存。
- 增强对web请求的错误处理。
🤝 贡献
欢迎投稿!请随时提交拉取请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
📜 许可证
根据MIT许可证分发。看 LICENSE 文件以获取更多信息。
👋 与我联系
欢迎随时寻求合作、问题或潜在机会!我总是很乐意讨论
- 🧠 智能AI代理
- 📊 风险分析与金融技术
- 🤖 机器学习解决方案
- 🚀 人工智能驱动的决策支持系统
