MCP 服务器实现
基于 Flask 的完整模型上下文协议 (MCP) 实现,用于通过外部工具增强大型语言模型功能。
概述
此存储库演示了如何构建一个处理模型上下文协议 (MCP) 的服务器。MCP 是一种通过直接在模型的文本输出中调用工具来扩展 LLM 功能的方法。与函数调用不同,MCP 将工具定义直接放置在上下文窗口中,并解析模型的自然语言响应以识别工具的使用情况。
特征
🔧完整的 MCP 实现:完整的解析、执行和响应处理
🌤️示例工具:带有参数验证的天气和计算器工具
🔄对话流:在多个交互中保持上下文
🧩基于正则表达式的解析:用于工具调用的灵活文本解析
🚀 Flask API :用于聊天集成的 REST API 端点
项目结构
安装
克隆存储库:
git clone https://github.com/yourusername/mcp-server.git cd mcp-server创建虚拟环境:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate安装依赖项:
pip install -r requirements.txt设置环境变量:
# Create a .env file with: LLM_API_KEY=your_llm_api_key_here WEATHER_API_KEY=your_weather_api_key_here FLASK_APP=app.py FLASK_ENV=development
用法
运行服务器
启动Flask开发服务器:
对于生产:
API 端点
POST /chat :使用 MCP 处理聊天消息
curl -X POST http://localhost:5000/chat \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "user", "content": "What's the weather like in Boston?" } ] }'
独立示例
运行示例脚本来查看 MCP 的运行情况:
工作原理
工具注册:工具及其参数和执行逻辑进行注册
工具定义注入:将 XML 格式的工具描述添加到提示中
LLM 响应处理:正则表达式模式识别 LLM 文本输出中的工具调用
工具执行:参数被解析并传递给适当的工具处理程序
结果注入:工具执行结果被插入到响应中
MCP 与函数调用
特征 | 微胶囊钙 | 函数调用 |
定义位置 | 在提示文本中 | 在 API 参数中 |
调用格式 | 自然语言 | 结构化 JSON |
执行 | 文本解析 | API 集成 |
能见度 | 可见响应 | 可能被隐藏 |
平台支持 | 任何基于文本的法学硕士 | 需要 API 支持 |
对话示例
用户:波士顿的天气怎么样?
法学硕士:
处理后:
添加您自己的工具
创建一个继承自
Tool的新类定义参数和执行逻辑
向 MCP 处理程序注册
例子:
MCP 配置和调用流程
工具注册:
MCP 工具已向处理程序注册
每个工具都提供其名称、描述和参数定义
工具定义注入:
工具定义已添加到系统消息中
格式遵循 MCP 的 XML 结构
LLM 响应处理:
LLM 生成可能包含工具调用的响应
模式匹配识别文本中的工具调用
工具参数被解析并传递给工具执行方法
工具执行:
使用提供的参数执行工具
结果被重新注入到对话中
对话管理:
已处理且包含工具结果的回复将添加到对话历史记录中
未来的 LLM 请求将包括此历史作为背景
对话示例
以下是对话的示例:
用户:波士顿的天气怎么样?
系统:向 LLM 发送带有 MCP 工具定义的提示
LLM 回复:
MCP Handler :解析响应,找到工具调用,并执行天气工具
工具执行结果:
已处理的响应(发送回用户):
用户:你能计算 144 的平方根吗?
LLM 回复:
MCP Handler :解析响应,执行计算器工具
工具执行结果:
已处理的响应(发送回用户):
这演示了 MCP 工具使用的完整流程,从 LLM 的基于文本的调用到执行和响应处理。
执照
麻省理工学院
贡献
欢迎贡献代码!欢迎提交 Pull 请求。
This server cannot be installed
Related Resources
Related MCP Servers
- Asecurity-licenseAqualityA Model Context Protocol server that provides basic mathematical and statistical functions to LLMs, enabling them to perform accurate numerical calculations through a simple API.Last updated -131139MIT License
- -securityAlicense-qualityA comprehensive toolkit that enhances LLM capabilities through the Model Context Protocol, allowing LLMs to interact with external services including command-line operations, file management, Figma integration, and audio processing.Last updated -25Apache 2.0
- -security-license-qualityA Model Context Protocol server that enables LLMs to interact with databases (currently MongoDB) through natural language, supporting operations like querying, inserting, deleting documents, and running aggregation pipelines.Last updated -MIT License
- Asecurity-licenseAqualityA Model Context Protocol server that allows LLMs to interact with Python environments, enabling code execution, file operations, package management, and development workflows.Last updated -9