绿色MCP服务器
来自Grüne Hamburg的用于政治决议(Beschlüsse)语义搜索的模型上下文协议(MCP)服务器。使用Spring Boot和pgvector构建,用于向量相似性搜索。
特性
- 语义搜索:使用自然语言查询查找相关解决方案
- 文档特定搜索:在特定决议文档中搜索
- 文档列表:列出所有可用的解决方案文档
- 向量相似性:使用具有余弦相似性的pgvector获得准确的结果
先决条件
- Docker和Docker Compose
- Mistral AI API密钥(用于查询嵌入)
- Node.js(用于通过mcp-remote集成Claude Desktop)
快速开始
1.克隆和配置
git clone https://github.com/KyleKreuter/green-mcp.git
cd green-mcp创建 .env 使用Mistral AI API密钥提交文件:
nano .env
# Edit .env and add your MISTRAL_API_KEY2.添加嵌入数据
服务器需要预先计算的嵌入才能运行。将这些文件放入 src/main/resources/data/:
embeddings.csv-包含带有嵌入的文档块metadata.csv-包含每个块的元数据
CSV格式 embeddings.csv:
"id","pdf_url","chunk_index","content","embedding"
"uuid","https://...","0","Text content here","[0.1, 0.2, ...]"CSV格式 metadata.csv:
"id","filename","title","topic","sequence_number","word_count","created_at"
"uuid","document.pdf","Title","Topic","0","150","2024-01-01T00:00:00"备注:嵌入必须是1024维向量(Mistral AI嵌入格式)。 如需获取Grüne Hamburg嵌入数据集,请联系我。 要创建自己的嵌入,请使用Mistral AI嵌入API。
3.启动服务器
docker compose up -d --buildMCP服务器将在 http://localhost:2228/sse
4.连接到克劳德桌面
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"green-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:2228/sse"]
}
}
}重新启动Claude Desktop以加载MCP服务器。
可用工具
beschluesseSuchen
使用语义相似性搜索所有分辨率。
参数:
query(string):自然语言搜索查询limit(整数,可选):结果数量(1-20,默认值:5)
例子: “查找有关气候保护的决议”
inBeschlussSuchen
在特定的解决方案文档中搜索。
参数:
beschlussName(string):文件名或文件名的一部分query(string):自然语言搜索查询limit(整数,可选):结果数量(1-20,默认值:5)
例子: 在“Wahlprogram-2024.pdf”中搜索“可再生能源”
beschluesseListen
列出所有可用的解决方案文档。
参数: 无
退货: 所有文档文件名列表
建筑
┌─────────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Claude Desktop │◄──SSE──►│ Spring Boot │◄───────►│ PostgreSQL │
│ (MCP Client) │ │ MCP Server │ │ + pgvector │
└─────────────────┘ └──────────────────┘ └─────────────┘
│
▼
┌──────────────────┐
│ Mistral AI │
│ (Embeddings) │
└──────────────────┘数据流:
- 用户查询→ 米斯特拉尔AI→ 查询嵌入(1024 dim)
- 查询嵌入→ pg向量余弦相似度搜索
- Top-K结果→ MCP对克劳德的回应
发展
地方发展
# Start only PostgreSQL
docker compose up -d postgres
# Run Spring Boot locally
MISTRAL_API_KEY=your-key ./mvnw spring-boot:run运行测试
./mvnw test建筑
./mvnw package -DskipTests配置
环境变量
| 变量 | 描述 | 必填 |
|---|---|---|
MISTRAL_API_KEY | 用于嵌入的Mistral AI API密钥 | 是 |
SPRING_DATASOURCE_URL | PostgreSQL连接URL | 否(Docker中的默认值) |
SPRING_DATASOURCE_USERNAME | 数据库用户名 | 否(默认值:greenmcp) |
SPRING_DATASOURCE_PASSWORD | 数据库密码 | 否(默认值:greenmcp) |
应用程序属性
中的关键设置 application.properties:
server.port=2228
spring.ai.mcp.server.sse-message-endpoint=/mcp/message
spring.jpa.hibernate.ddl-auto=update创建自己的嵌入
要将此MCP服务器与您自己的文档一起使用:
- 提取文本 从您的PDF文档
- 压缩文本 分成有意义的片段(建议:每块200-500个单词)
- 生成嵌入 使用Mistral AI的嵌入API:
from mistralai.client import MistralClient
client = MistralClient(api_key="your-key")
response = client.embeddings(
model="mistral-embed",
input=["Your text chunk here"]
)
embedding = response.data[0].embedding # 1024-dimensional vector- 创建CSV文件 按照要求的格式(见上文)
- 放置文件 在
src/main/resources/data/
许可证
麻省理工学院
联系
有关Grüne Hamburg嵌入数据集或此项目的问题,请打开一个问题。
