Roundtable MCP
🏛️ 圆桌 MCP (roundtable-mcp)
基于角色的混合多模型编排 MCP 服务器
roundtable-mcp 是一个开源的模型上下文协议(MCP)服务器,它编排一组专业 AI 模型——将本地零成本模型(通过 Ollama)与云端 API(Anthropic Claude、Google Gemini、OpenAI、DeepSeek 等)相结合。
与对通用答案进行投票不同,Roundtable 为每个模型分配不同的专家角色(架构师、实现工程师、叙事专家、系统重构专家、深度推理专家),并将它们的见解综合成统一顾问委员会报告。
✨ 主要特性
基于角色的面板:每个模型从指定的领域视角出发,而非提供通用的重复回答。
混合执行:无缝混合本地模型(Ollama Gemma 4、Qwen Coder、Llama 3)与云端 API(Claude 3.7/4.6、Gemini 3.5、DeepSeek R1、GPT-4o)。
并行扇出:
run_roundtable使用Promise.allSettled()并行查询所有活跃面板模型,实现快速执行和高容错性。配置驱动:随时通过编辑
config.json添加或调整模型,无需修改代码。跨平台 MCP:原生兼容 Claude Code、Cursor、Windsurf、Antigravity、OpenCode 和 VS Code。
Related MCP server: AI Orchestrator
📦 快速开始
1. 安装
git clone https://github.com/YOUR_USERNAME/roundtable-mcp.git
cd roundtable-mcp
npm install
npm run build2. 配置
将 config.example.json 复制为 config.json:
cp config.example.json config.json为云模型设置所需的环境变量:
export ANTHROPIC_API_KEY="sk-ant-..."
export DEEPSEEK_API_KEY="sk-..."
export OPENAI_API_KEY="sk-..."
export GEMINI_API_KEY="AIzaSy..."🛠️ MCP 工具参考
工具名称 | 描述 |
| 在所有启用的 Roundtable 专家上并行运行提示,并输出结构化的顾问委员会报告。如果启用,自动记录到 Obsidian。 |
| 将提示路由到特定专家模型,或根据关键词触发自动检测( |
| 列出所有注册的专家模型、它们的角色以及当前提供商状态。 |
| 列出内置预设角色(QA 测试员、CI/CD 工程师、安全审计员、数据库架构师等)。 |
| 在 Obsidian Vault 中搜索过往 Roundtable 会话笔记,获取相关上下文片段。 |
| 手动或自动将自定义笔记和会话直接记录到 Obsidian Vault。 |
📋 预置角色目录(role_preset)
无需编写自定义角色描述,您可以在 config.json 中通过 "role_preset" 使用内置预设键:
qa_tester:QA 与边界案例测试专家cicd_engineer:DevOps 与 CI/CD 流水线专家security_auditor:网络安全与漏洞审计员database_architect:数据库架构师与查询优化专家architect:首席系统架构师与编排者performance_tuner:底层性能与重构专家frontend_ux:前端与 UI/UX 无障碍专家game_engineer:游戏引擎与机制专家tech_writer:技术文档与 API 编写专家
{
"id": "claude-qa",
"name": "Claude Sonnet 4.6",
"role_preset": "qa_tester",
"provider": "anthropic",
"model": "claude-3-7-sonnet-20250219",
"enabled": true
}🎯 为模型分配专业技能(skill)
是的!您可以根据每个模型的角色,为其分配特定的领域技能指南、编码标准或检查清单。
在 config.json 中使用 "skill"(或 "skill_prompt")属性,将自定义指令注入到该模型的系统提示中:
{
"id": "gemma-godot",
"name": "Gemma 4 (Local)",
"role": "GDScript Implementation Specialist",
"skill": "Follow Godot 4 GDScript standards: strict static typing, signal decoupling, and node path verification.",
"provider": "ollama",
"endpoint": "http://localhost:11434/api/generate",
"model": "gemma4-26b-128k:latest",
"enabled": true
}📓 Obsidian Vault 集成(长期记忆)
roundtable-mcp 直接连接到您的本地 Obsidian Vault,自动记录会话笔记并提供跨会话的持久记忆——即使对于上下文窗口较小的本地模型也是如此!
config.json 中的配置:
{
"obsidian": {
"enabled": true,
"vault_path": "C:/Users/yourname/Documents/ObsidianVault",
"folder": "Roundtable/Sessions",
"auto_save": true,
"max_context_notes": 3
}
}自动记录会话:每个
run_roundtable会话都会格式化为干净的 Markdown 笔记,包含元数据、日期和标签(#roundtable #council #gemma #claude)。记忆检索:使用
search_obsidian_memory获取紧凑的过去笔记片段,使上下文窗口较小的模型也能保持信息同步,避免上下文溢出!
🔧 与 AI 编码平台集成
Claude Code / Claude Desktop / Antigravity / OpenCode
将 roundtable-mcp 添加到您的 MCP 配置文件(mcpServers 部分):
{
"mcpServers": {
"roundtable": {
"command": "node",
"args": ["/path/to/roundtable-mcp/dist/index.js"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"DEEPSEEK_API_KEY": "sk-...",
"OPENAI_API_KEY": "sk-...",
"GEMINI_API_KEY": "AIzaSy..."
}
}
}
}⚙️ 向 config.json 添加新模型
您可以轻松添加任何兼容 OpenAI 的提供商(DeepSeek、Groq、Together AI、Mistral、LM Studio、vLLM):
{
"id": "qwen-coder-local",
"name": "Qwen 2.5 Coder (Local)",
"role": "Low-Level Shader & GPU Optimization Specialist",
"provider": "ollama",
"endpoint": "http://localhost:11434/api/generate",
"model": "qwen2.5-coder:32b",
"enabled": true
}💡 完全免费的多模型栈示例
您可以通过结合本地 Ollama 模型和免费云端 API 层级(GitHub Models、Google AI Studio、Groq),完全免费运行一个完整的多模型 Roundtable 设置:
{
"models": [
{
"id": "gpt4o-free",
"name": "GPT-4o (GitHub Free)",
"role": "Systems Performance & Refactoring Specialist",
"provider": "openai-compatible",
"endpoint": "https://models.github.ai/inference/chat/completions",
"model": "gpt-4o",
"api_key_env": "GITHUB_TOKEN",
"enabled": true
},
{
"id": "gemini-free",
"name": "Gemini 2.5 Flash (Google Free)",
"role": "Lead Architect & Synthesizer",
"provider": "google",
"model": "gemini-2.5-flash",
"api_key_env": "GEMINI_API_KEY",
"enabled": true
},
{
"id": "gemma-local",
"name": "Gemma 4 (Local Ollama)",
"role": "Primary Implementation Engineer",
"provider": "ollama",
"endpoint": "http://localhost:11434/api/generate",
"model": "gemma4-26b-128k:latest",
"enabled": true
},
{
"id": "deepseek-free",
"name": "DeepSeek R1 (Groq Free)",
"role": "Deep Reasoning & Math Specialist",
"provider": "openai-compatible",
"endpoint": "https://api.groq.com/openai/v1/chat/completions",
"model": "deepseek-r1-distill-llama-70b",
"api_key_env": "GROQ_API_KEY",
"enabled": true
}
]
}📄 许可证
MIT 许可证。欢迎使用、修改和分发!
Available Tools
6 toolslist_preset_rolesA
Lists all pre-built preset roles available to assign in Roundtable (e.g., qa_tester, cicd_engineer, security_auditor).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It states the tool lists *all* pre-built roles, which indicates a complete, unfiltered read operation, and adds examples to clarify what types of roles are included. However, it does not mention the return format or any potential for empty results, which would be even more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and resource with helpful examples. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description covers the essential purpose and gives concrete examples. It could mention whether the list is exhaustive or just a subset, but 'all' addresses that. It lacks explicit return format details, but that is not critical for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so the baseline is 4. The description provides contextual value by giving examples of valid role names, which helps the agent understand what to expect. No parameter details are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lists' and clearly identifies the resource as 'all pre-built preset roles available to assign in Roundtable'. It includes concrete examples, which distinguishes it from sibling tools like list_roundtable_models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used when you need to see available preset roles, but it does not explicitly state when to use it over alternatives or provide exclusions. The sibling tool list_roundtable_models exists for models, not roles, but the description does not make this differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_roundtable_modelsA
Lists all registered expert models and their roles on the Roundtable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It correctly identifies the tool as read-only ('lists'), which implies no destructive side effects. However, it does not state whether results are cached, require authentication, or reflect real-time changes. A 3 is appropriate as it meets the minimum for a safe read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 10 words, concise and front-loaded with the verb 'lists.' Every word earns its place, and there is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description is reasonably complete for a simple listing operation. It explains what is listed (models and roles). A missing piece is whether the list is of all available models or only those currently activated, but 4 is fair given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0 parameters with 100% coverage, so the baseline is 3. The description adds value beyond the schema by specifying that the output includes not just model names but also 'their roles,' giving context about what each model does. This justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'lists' and specifies the resource ('all registered expert models and their roles on the Roundtable'), providing a clear and specific purpose. It distinguishes itself from siblings like 'run_roundtable' and 'route_prompt' by focusing on listing models, not executing or routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'list_preset_roles' (which likely lists roles rather than model-role mappings). There is no mention of prerequisites, such as whether the Roundtable must be initialized first, or when listing models is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_promptA
Routes prompt to a single specific expert model or auto-detects target based on prompt triggers.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| target_model_id | No | ID of the target model (e.g., 'gemma-local', 'claude-sonnet', 'deepseek-r1'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It only states the core action and auto-detection, but omits details like what happens when both parameters are provided, error handling, authentication requirements, or how auto-detection triggers work.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence of 16 words that conveys the essential function without any redundancy. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description covers the basic purpose but leaves gaps around auto-detection behavior, error scenarios, and parameter interaction. It is minimally adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (prompt missing description). The description adds context that 'prompt' is the input to be routed, which is helpful but does not specify format or constraints. For 'target_model_id', the schema already provides a clear description with examples, so the description adds no extra value. Baseline 3 is appropriate given borderline coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('routes prompt') and resource ('specific expert model'), distinguishing it from siblings like 'run_roundtable' which likely sends to multiple models. The mention of 'auto-detects' further clarifies the tool's dual mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly suggests when to use this tool (single model routing vs. auto-detection) but does not explicitly contrast with alternatives like 'run_roundtable' or state when not to use it. No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_roundtableA
Executes a prompt across the Roundtable of expert models in parallel and synthesizes a role-based council report. Automatically logs session notes to Obsidian vault if configured.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The task or question to submit to the Roundtable panel. | |
| include_models | No | Optional filter: array of model IDs to include (e.g. ['gemma-local', 'claude-sonnet']). Omit to run all enabled models. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full transparency burden. It discloses the parallel execution and automatic logging side-effect, but does not cover failure modes, required permissions, rate limits, or whether the tool modifies any state. The logging behavior is useful but partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The main action is front-loaded and the optional side-effect is stated clearly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should explain return values more clearly. While it states the output is a 'role-based council report', it does not specify format, structure, or how the agent can use it. The description is adequate but leaves ambiguity about the result, which is important for a tool that produces synthesized output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters (prompt and include_models) with descriptions, achieving 100% schema description coverage. The tool description itself adds no additional meaning for either parameter beyond what the schema already provides. Baseline 3 is appropriate as no extra semantic value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a prompt across multiple expert models in parallel and synthesizes a role-based report, with an optional side-effect of logging to Obsidian. This is a specific verb+resource combination that distinguishes it from siblings like route_prompt (single model) or list_roundtable_models (listing only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for parallel multi-model queries and mentions automatic logging, but it does not explicitly state when to use this tool versus route_prompt or other alternatives. There are no exclusion criteria or prerequisites, though the context of sibling tools provides indirect guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_to_obsidianB
Saves a session summary or custom markdown note directly into the configured Obsidian Vault.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the note. | |
| content | Yes | Markdown content to save. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It does not mention that this tool is a write operation (could overwrite existing files), schema constraints (e.g., content size limits, character limits), or whether it requires specific configuration or authentication. This leaves the agent with critical unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the key action and resource. It is concise with no wasted words, though it could benefit from minor behavioral disclosure without losing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (2 params, no nested objects, no enums, no output schema) and lack of annotations, the description should be more complete. It does not explain return behavior, overwrite semantics, or note location, leaving significant gaps for an agent to determine success or errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters: 'title' is 'Title of the note' and 'content' is 'Markdown content to save.' The description itself does not add new meaning beyond the schema, so a baseline score of 3 is appropriate given perfect schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a session summary or custom markdown note into a configured Obsidian Vault. The verb 'saves' and the resource 'Obsidian Vault' are specific, and the description distinguishes it from siblings like search_obsidian_memory which searches rather than saves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for saving notes, but it does not explicitly state when to use it versus alternatives like search_obsidian_memory. No exclusions or when-not-to-use guidance is provided, which would help the agent avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_obsidian_memoryB
Searches past Roundtable session notes in the configured Obsidian Vault for relevant memory snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keywords or topic to search for in past Obsidian vault notes. | |
| max_results | No | Maximum number of past note snippets to return (default: 3). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It does not mention result format (snippets vs full notes), limitations (e.g., scope of vault, recency, required setup), or error conditions. The agent lacks critical context about what a 'memory snippet' contains or how results are ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core action. Every word is functional with no redundancy. Achieves maximum conciseness while remaining clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite few parameters and no output schema, the description omits essential context: what a 'memory snippet' looks like, whether results are ranked by relevance, and prerequisites (e.g., must have configured Obsidian vault). This forces the agent to guess the tool's behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds no extra semantic value beyond the schema's own descriptions (e.g., 'Keywords or topic' and 'Maximum number of past note snippets'). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches Roundtable session notes in Obsidian Vault for memory snippets. The verb 'searches' and resource are explicit, distinguishing it from sibling tools like save_to_obsidian (write) or run_roundtable (conversational).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The sibling list includes other tools but no contrast or exclusion criteria (e.g., 'use this when you need specific facts, otherwise use route_prompt'). The agent must infer use case from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
list_preset_roles - First observed
list_roundtable_models - First observed
route_prompt - First observed
run_roundtable - First observed
save_to_obsidian - First observed
search_obsidian_memory
TDQS
Scored across 6 tools
Tools are mostly distinct: run_roundtable vs route_prompt target different execution modes (parallel council vs single expert), while list_roundtable_models and list_preset_roles list different types of entities. However, save_to_obsidian and run_roundtable's auto-logging could slightly overlap in concept, though descriptions clarify separate intents.
All tools follow a consistent verb_noun pattern in snake_case (run_roundtable, route_prompt, list_roundtable_models, etc.), with verbs like 'run', 'route', 'list', 'search', 'save' clearly indicating the action. No mixing of conventions.
6 tools is a reasonable size for a niche server focused on AI council orchestration and Obsidian integration. The count feels slightly lean (no tool for managing models directly), but it's well within the optimal range and each tool serves a distinct function.
Core workflows (listing models/roles, running roundtables, routing prompts, and saving/searching notes) are covered. However, missing operations like registering/updating custom models or deleting roundtable history leave notable gaps for a fully autonomous workflow.
Maintenance
Related MCP Connectors
Multi-LLM council: 25+ frontier models in parallel, consensus scoring, verdict-first code review.
Multi-expert decision intelligence with transparent synthesis and auditable workflows.
Convene a panel of expert AI personas to debate any decision from every side.
Multi-agent governance: task orchestration, compliance, decision validation, and ML predictions.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to create council hearings where multiple LLMs (Claude, GPT, Gemini, Grok) debate topics and synthesize verdicts with trust scores and diverse perspectives.22 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables multi-strategy AI orchestration including council decision review, debate, brainstorming, evaluation, and spec review, with support for multiple LLM providers and advisor personas.2 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables multi-model reasoning via Mixture-of-Agents orchestration, allowing complex task processing with diverse perspectives and reduced hallucinations.6-
- AlicenseAqualityCmaintenanceRoutes questions to a council of AI models (local and cloud) and synthesizes their answers in five configurable modes: individual, categorized, deconflicted, pooled, and dialectic.9Apache 2.0