法学硕士理事会MCP
MCP服务器允许 克劳德代码 通过多轮会议咨询外部LLM(GPT、Gemini)。在不离开Claude Code工作流程的情况下,获取第二意见、进行平行咨询或进行基于网络的研究。
为什么?
Claude Code功能强大,但有时你想:
- 获取第二意见 GPT或Gemini的架构决策
- 交叉引用答案 通过向多个模型提出同一个问题
- 基于网络的研究 使用Gemini的谷歌搜索或OpenAI的网络搜索
- 多回合对话 与外部模型合作,而克劳德则负责编排
这个MCP服务器通过一个简单的工具界面使这一切成为可能。
工具
| 工具 | 说明 |
|---|---|
council | 与外部LLM进行多回合聊天。自动创建会话。 |
council_research | 通过LLM+实时搜索进行基于网络的研究。无国籍。 |
council_inject | 在没有LLM调用的情况下将上下文(文件、文档)注入会话。 |
council_sessions | 列出所有活动会话及其使用统计数据。 |
council_delete | 删除会话及其历史记录。 |
council_reset | 清除对话历史记录,保持会话配置。 |
支持的提供商
| 提供者 | 默认模型 | 功能 |
|---|---|---|
| 开放人工智能 | gpt-5.4 | 推理(低/中等努力),网络搜索 |
| 双子座 | gemini-3.1-pro-preview | 思维层次,谷歌搜索基础 |
快速开始
1.获取API密钥
您至少需要一个:
2.添加到克劳德代码
将此添加到您的 .mcp.json (在您的主目录或项目根目录中):
{
"mcpServers": {
"llm-council": {
"command": "uvx",
"args": ["llm-council-mcp"],
"env": {
"OPENAI_API_KEY": "sk-...",
"GEMINI_API_KEY": "AI..."
}
}
}
}替代方案——使用uv在本地安装:
{
"mcpServers": {
"llm-council": {
"command": "uv",
"args": ["--directory", "/path/to/llm-council-mcp", "run", "python", "-m", "llm_council_mcp"],
"env": {
"OPENAI_API_KEY": "sk-...",
"GEMINI_API_KEY": "AI..."
}
}
}
}3.重新启动克劳德代码
Claude Code将在重新启动时接收新的MCP服务器。你应该看看 llm-council 工具可用。
使用模式
派遣:代理团队或背景子代理
理事会的工具是 阻止呼叫 (每次响应10-30秒)。永远不要在主要谈话中给他们打电话。两种调度模式:
代理团队(首选克劳德代码): 使用 TeamCreate 每个提供者有一个队友。队友可以通过以下方式发送实时状态更新 SendMessage --错误会立即出现,结果会随着每个提供者的响应而返回。
背景子代理(后备): 使用 Agent 和 run_in_background=true,每个供应商一个。更简单,但没有中间状态更新——调用者只看到最终结果。
User: "Ask GPT and Gemini what they think about this architecture"
Claude Code dispatches:
-> Teammate/Agent 1: calls council(provider="openai", ...)
-> Teammate/Agent 2: calls council(provider="gemini", ...)
Results arrive independently as each provider responds.每个提供商一个代理
咨询多个提供商时,请始终使用 独立代理人 --每个供应商一个。这确保了更快的提供者的结果立即到达,而无需等待较慢的提供者。
会话管理
会话在对话中的通话中持续存在:
# First call creates the session
council(session="arch-review", message="Review this design...", provider="openai")
# Follow-up uses the same session (conversation continues)
council(session="arch-review", message="What about error handling?")
# Inject context without an LLM call
council_inject(session="arch-review", content="", label="schema.sql")
# Clean up when done
council_delete(session="arch-review")网络研究
# Stateless web-grounded research
council_research(query="What are the latest MCP server best practices?", provider="gemini")配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
OPENAI_API_KEY | 对于OpenAI提供商 | OpenAI API密钥 |
GEMINI_API_KEY | 对于Gemini提供商 | Google AI Studio API密钥 |
LLM_COUNCIL_DATA_DIR | 否 | 数据目录(默认: ~/.local/share/llm-council-mcp/) |
LLM_COUNCIL_LOG_DIR | 否 | 日志目录(默认: $LLM_COUNCIL_DATA_DIR/logs/) |
您只需要您使用的提供程序的API密钥。如果你只使用Gemini,你不需要OpenAI密钥(反之亦然)。首次调用提供程序时,密钥会延迟加载。
默认系统提示
创建 $LLM_COUNCIL_DATA_DIR/config.json 要设置应用于所有会话的默认系统提示,请执行以下操作:
{
"default_system_prompt": "You are a senior software architect. Be concise."
}自定义系统提示传递给 council() 在默认值之后附加。
错误处理
议会工具将错误作为MCP返回 CallToolResult 和 isError: true 而不是抛出异常。这确保了调用代理始终获得可解析的结果,并可以将其转发给用户。
错误响应包括结构化字段:
{
"error": true,
"provider": "gemini",
"model": "gemini-3.1-pro-preview",
"error_type": "RuntimeError",
"phase": "headers",
"retryable": true,
"http_status": 503,
"message": "Gemini API error 503: This model is currently experiencing high demand."
}| 字段 | 描述 |
|---|---|
error_type | 异常类名(RuntimeError, timeout等等) |
phase | 故障发生地点: connect, headers, stream, timeout, unknown |
retryable | 错误是否是暂时的,是否可以安全重试 |
http_status | HTTP状态码(如适用)(429、503等) |
流媒体
这两家提供商都在内部使用流式HTTP(SSE)。这意味着:
- 即时错误检测:HTTP错误(503429)会立即从响应标头中出现,而不是挂起,直到超时触发。
- 没有任意超时:只要提供者正在生成令牌,连接就会保持活动状态。没有切断合法长回复的风险。
- 中游恢复力:如果连接在部分数据后断开,则会报告错误以及接收到的数据量。
成本跟踪
每 council 呼叫返回使用统计数据,包括估计成本:
{
"provider": "openai",
"model": "gpt-5.4",
"session": "review-gpt",
"response": "...",
"usage": {
"input_tokens": 1250,
"output_tokens": 890,
"reasoning_tokens": 2048,
"cost_usd": 0.021
}
}会话级成本跟踪可通过以下方式获得 council_sessions.
发展
# Clone and install
git clone https://github.com/Envious-Labs-LLC/llm-council-mcp.git
cd llm-council-mcp
uv sync
# Run directly
uv run python -m llm_council_mcp
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run python -m llm_council_mcp添加新提供者
- 创建
src/llm_council_mcp/providers/yourprovider.py实施LLMProvider - 添加定价
pricing.py - 将模型配置文件添加到
model_profiles.py - 注册于
providers/__init__.py
许可证
麻省理工学院——见 许可证.
