LLM MCP服务器
一个简单的MCP(模型上下文协议)服务器,提供查询Claude、ChatGPT和Gemini的工具。
特性
query_claude:向Claude(Anthropic API)发送消息,支持多回合对话query_chatgpt:向支持多回合对话的ChatGPT(OpenAI API)发送消息query_gemini:向Gemini(Google API)发送消息,支持多点对话export_conversation:将对话导出到markdown文件- AI到AI对话上下文自动包含在系统提示中
- 跨对话的系统提示持久性
设置
- 创建虚拟环境:
python -m venv venv
source venv/bin/activate- 安装依赖项:
pip install -e .- 创建一个
.env使用API密钥文件:
cp .env.example .env
# Edit .env and add your actual API keys用法
运行MCP服务器:
python server.py配置
配置您的Claude Desktop或其他MCP客户端以连接到此服务器。
Claude Desktop的示例配置(claude_desktop_config.json):
{
"mcpServers": {
"llm": {
"command": "python",
"args": ["/absolute/path/to/server.py"]
}
}
}服务器将自动从 .env 文件。或者,您可以通过添加 env 将部分添加到上面的配置中。
可用工具
query_chatgpt
向ChatGPT(OpenAI)发送消息。使用服务器端上下文管理支持多回合对话。
参数:
message(必填):要发送的消息model(可选):要使用的型号(默认:“gpt-5.1-2025-11-13”)system_prompt(可选):系统提示上下文(除非被覆盖,否则在整个对话中持续存在)temperature(可选):0.0到2.0(如果未指定,则使用模型默认值)max_tokens(可选):最大响应长度conversation_id(可选):来自上一次通话的对话ID,用于继续对话
多回合对话: 该工具在输出中返回对话ID(格式: chatgpt_...).将此ID传递给 conversation_id 在随后的通话中继续对话。服务器将对话历史记录存储在内存中,并自动限制以防止内存问题。
会话id是特定于提供商的,不能在不同的提供商之间使用(例如,ChatGPT会话_id不能与Claude一起使用)。
系统提示持久性: 当你提供 system_prompt 在对话的第一条消息中,除非被明确覆盖,否则它将自动重用于该对话中的所有后续消息。
工作流程示例:
- 第一通电话:
query_chatgpt("Hello!")→ 退货[Conversation ID: chatgpt_abc123def456] - 跟进:
query_chatgpt("How are you?", conversation_id="chatgpt_abc123def456")
query_claude
给克劳德(Anthropic)发一条信息。使用服务器端上下文管理支持多回合对话。
参数:
message(必填):要发送的消息model(可选):要使用的型号(默认:“claude-sonnet-4-5-20250929”)system_prompt(可选):系统提示上下文(除非被覆盖,否则在整个对话中持续存在)temperature(可选):0.0到1.0(如果未指定,则使用模型默认值)max_tokens(可选):最大响应长度(默认值:4096)conversation_id(可选):来自上一次通话的对话ID,用于继续对话
多回合对话: 该工具在输出中返回对话ID(格式: claude_...).将此ID传递给 conversation_id 在随后的通话中继续对话。服务器将对话历史记录存储在内存中,并自动限制以防止内存问题。
会话id是特定于提供商的,不能在不同的提供商之间使用(例如,Claude Conversation_id不能与Gemini一起使用)。
系统提示持久性: 当你提供 system_prompt 在对话的第一条消息中,除非被明确覆盖,否则它将自动重用于该对话中的所有后续消息。
工作流程示例:
- 第一通电话:
query_claude("Hello!")→ 退货[Conversation ID: claude_abc123def456] - 跟进:
query_claude("How are you?", conversation_id="claude_abc123def456")
query_gemini
向Gemini(谷歌)发送消息。使用服务器端上下文管理支持多回合对话。
参数:
message(必填):要发送的消息model(可选):要使用的型号(默认:“gemini-2.5-flash”)system_prompt(可选):系统提示上下文(除非被覆盖,否则在整个对话中持续存在)temperature(可选):0.0到2.0(如果未指定,则使用模型默认值)max_tokens(可选):最大响应长度(如果未指定,则使用模型默认值)conversation_id(可选):来自上一次通话的对话ID,用于继续对话
多回合对话: 该工具在输出中返回对话ID(格式: gemini_...).将此ID传递给 conversation_id 在随后的通话中继续对话。服务器将对话历史记录存储在内存中,并自动限制以防止内存问题。
会话id是特定于提供商的,不能在不同的提供商之间使用(例如,Gemini会话_id不能与Claude一起使用)。
系统提示持久性: 当你提供 system_prompt 在对话的第一条消息中,除非被明确覆盖,否则它将自动重用于该对话中的所有后续消息。
工作流程示例:
- 第一通电话:
query_gemini("Hello!")→ 退货[Conversation ID: gemini_abc123def456] - 跟进:
query_gemini("How are you?", conversation_id="gemini_abc123def456")
export_conversation
将对话导出到markdown文件。对话将保存到指定的目录中 LLM_CONVERSATIONS_DIR 环境变量。
参数:
conversation_id(必填):要导出的对话ID(例如,“chatgpt_abc123def456”)calling_llm_name(必填):拨打电话的法学硕士的姓名(例如,“Claude”、“ChatGPT”、“Gemini”)
输出格式: 导出的文件将是一个标记文件,其中对话ID作为文件名(例如。, chatgpt_abc123def456.md).对话的格式是由参与者姓名标记的交替消息组成的。
