使用说明
MCP Project — Model Context Protocol
Overview
该项目实现了一个最小的、实用的模型上下文协议(MCP),用于存储、版本和检索LLM和模型驱动代理的上下文片段。MCP的想法:一个轻量级的HTTP API,它允许工具/代理存储简短的上下文项(文档、信号、嵌入元数据),并通过id、标签或相关性获取相关上下文。这是作为面试或作品集工作的演示。
Goals
-
展示清晰的协议设计(端点、语义)。
-
提供一个小型、注重生产的服务器(FastAPI+SQLite)。
-
包括在模型驱动的应用程序中使用MCP的客户端示例和最佳实践解释。
Features implemented
-
创建/注册上下文项(JSON有效载荷)
-
按id检索
-
通过标签或文本搜索进行查询(简单的SQL LIKE搜索)
-
将其他内容附加到上下文项
-
版本控制:每次更新都会创建一个与原始id链接的新的不可变版本
-
通过API密钥头进行基本访问控制(降级)
File layout (in repo)
mcp-project/
├─ main.py # FastAPI server
├─ models.py # Pydantic / SQLModel models
├─ db.py # DB helpers (sqlite)
├─ client_example.py # Python client showing usage
├─ requirements.txt
├─ README.md # This doc summarized
Protocol (HTTP endpoints)
-
POST /contexts--注册新的上下文项-
body: { "title": "...", "content": "...", "tags": ["..."], "metadata": {...} } -
回报
201随着{ "id": "<uuid>", "version": 1 }
-
-
GET /contexts/{id}--获取上下文项的最新版本- 返回带有版本数组的项目
-
GET /contexts--查询上下文- 查询参数:
tag,q(文本搜索),limit,offset
- 查询参数:
-
POST /contexts/{id}/append--向项目添加新内容(创建新版本)- body:`{“append_content”:“…”,“元数据”:{…}}```
All endpoints require ```x-api-key``` header.
How to run (local)
-
创建virtualenv:
python -m venv .venv && source .venv/bin/activate -
安装:
pip install -r requirements.txt -
运行服务器:
uvicorn main:app --reload -
运行客户端:
python client_example.py
Extensions
-
为什么MCP与传递完整上下文:网络+成本+隐私。MCP允许选择性检索、缓存和治理。
-
缩放:添加向量存储(FAISS)进行语义检索,并返回ANN索引。
-
安全性:使用每个用户的密钥、审计日志、速率限制、编辑敏感字段。
-
MLOps:将模型决策存储为元数据,以实现模型解释和RLHF监督。
-
改进(下一步)
-
使用SQLite FTS或ElasticSearch进行强大的文本搜索。
-
添加嵌入:存储向量(float[])并使用FAISS或Milvus进行语义查找。
-
添加访问策略(ACL)和签名令牌。
-
构建一个小UI来检查上下文和版本。
-
OR
-
使用FAISS+neneneba API组合添加Dockerfile+docker-compose。
-
替换简单的SQL
LIKE使用基于嵌入的语义搜索管道进行搜索。
