演员休息室
一个python包,其中包含一个协调多个LLM外联的MCP服务器, 与外部内容提供商集成,并为代理提供定制工具,以实现目标 制作高价值的、混合的人工智能娱乐推荐。
截至2026年,greenroom为电影和电视内容提供建议。我计划 与其他数据提供商和LLM服务整合,以扩大服务范围。
使用混合人工智能策展发现电影和电视
比较多个代理和模型的输出
用例
绿屋MCP服务器可用于回答与娱乐相关的各种问题。 下面是一些将触发使用多个MCP工具的示例提示,但这些只是示例。
建议
What kinds of entertainment can you recommend?I'm in the mood for something serious. Recommend some entertainment content.Recommend spanish language documentary films from the 2010s.I loved Atlanta and Black Mirror. Recommend other entertainment options that I would like.
活动策划
I'm hosting a French film night. Recommend highly-rated French films across genres.Plan a binge-watching weekend including recent dramas and comedies.Let's host a sci-fi movie marathon. Recommend 5 sci-fi films from different decades.
行业分析
Analyze which genres have the highest average ratings in film vs television.Compare action films made in the 1980s to those made in the 2020s.What are the top-rated spanish language television shows in each genre?
比较多个代理的输出
Using compare_llm_responses, what makes a great science fiction film?Using the compare_llm_reponses tool, how is machine learning used in modern filmmaking?
特性
工具
MCP工具是代理执行的可调用操作,类似于POST请求。 它们被注释为 @mcp.tool() 在FastMCP框架中。
greenroom服务器的工具包括:
- list_genres -获取所有娱乐类型,返回一个统一的地图,显示哪些媒体类型支持每种类型
- 类别_流派 -将人类情绪映射到媒体类型,以提高人类提示的点击率
- 发现电影 -根据发现标准检索电影,返回知情回应的元数据,并改进分类
- 发现_电视 -根据发现标准检索电视节目,返回知情响应的元数据并改进分类
_注意: @mcp.tool() 装饰器将函数封装到FunctionTool对象中,这防止了它被直接调用,包括被测试调用。工具方法的逻辑被委托给助手方法,这些方法由测试套件涵盖。_
代理人的协调
此服务器支持多个代理协调处理单个任务。
- 比较llm响应 -收到提示并将其发送给两个代理。它通过温度和令牌限制来约束响应。
To trigger this tool, ask Claude: Using the compare_llm_reponses tool, why is the ocean blue?
You should see:
Both Claude* and Ollama responses
Response lengths comparison
Structured JSON output showing both LLM outputs side-by-side_截至2026年,这默认为将人择客户端的重新采样响应与新的ollama客户端的响应进行比较。 一般来说,重新采样的响应将为空,因为人为因素禁止重新采样。 我希望很快将能力扩展到更广泛的法学硕士客户。_
语境
上下文感知工具使用FastMCP Context 参数访问高级MCP功能,如LLM采样。
例子:
- list_genres_简化 -使用以下命令返回流派名称的简化列表
ctx.sample()利用代理的LLM功能进行数据转换。
资源
这些资源提供只读数据,类似于GET请求。代理读取信息,但不执行操作。 资源注释如下 @mcp.resource() 在FastMCP框架中。
- config://version -获取服务器版本
错误处理
greenroom服务器引发的所有错误都使用基于的自定义异常层次结构 GreenroomError. 这意味着MCP呼叫者可以捕获 GreenroomError 处理任何服务器端故障,或捕获特定子类以进行更精细的控制:
- API响应错误 -HTTP错误、JSON无效、来自外部API的意外响应体
- API连接错误 -访问外部API时出现网络或连接故障
- API类型错误 -反序列化后,响应具有意外的Python类型
- 采样错误 -LLL采样过程中的错误
内置异常,如 ValueError 仍然会引发输入验证(例如无效参数)。
建筑
Tools Layer (MCP Interface)
↓
Services Layer (Business Logic)
↓
Client Layer (Provider-specific HTTP Communication)
↓
Models Layer (Provider-agnostic Data Structures)项目结构
该项目遵循python包src/layout,以支持方便的打包和测试。 下面是该项目的简图。
greenroom/ # project root
├── src/
│ └── greenroom/ # python package
│ │
│ ├── server.py # primary entry point to server
│ ├── config.py # centralized configuration
│ ├── utils.py # shared utilities
│ │
│ │
│ ├── models/ # data models
│ │
│ ├── services/ # business logic
│ │ ├── llm/ # LLM agent services and clients
│ │ ├── tmdb/ # TMDB provider services and clients
│ │ └── protocols.py # standardizes methods across media providers
│ │
│ └── tools/ # MCP tools (exposed via FastMCP)
│ ├── agent_tools.py # coordinate multiple agents and LLMs
│ ├── discovery_tools.py # search for specific entertainment content
│ └── genre_tools.py # optimize genre discovery and presentation to user
│
├── tests/greenroom/ # test suite
│
├── pyproject.toml # configuration and dependencies
└── uv.lock # dependency lock file (auto-generated)依赖项
- Python 3.12
- 快速MCP>=2.13.0 -MCP服务器框架;需要Python 3.10+
- 紫外线 -包管理器; 安装说明
- 孵化 -构建系统
- httpx -用于API对TMDB(社区驱动数据库)的调用
- python dotenv -用于API密钥管理
- 奥拉玛 (可选)-用于compare_lilm_responses等多代理工具的本地LLM运行时; 安装说明
_该项目使用 FastMCP 框架,它比其他框架(例如MCP Python SDK)需要更少的样板。_ _看 mcp-server-1 例如功能更明确的示例。_
设置
- 营造当地发展环境
# Clone the repository
git clone
cd greenroom
# Install dependencies (uv will create a virtual environment automatically)
uv sync- 添加TMDB api密钥作为环境变量
- 在获取免费API密钥 TMDB 通过创建帐户、转到帐户设置并导航到API部分。
- 创建一个名为的文件
.env在项目的顶层。(为了防止泄露机密,此文件是合法的。) - 复制以下内容
.env.example到您的新文件。 - 替换
your_tmdb_api_key_here在.env中使用实际TMDB API密钥。
(可选)设置Ollama
使用奥利玛作为第二剂(除了克劳德)。使用的一个例子是 比较llm响应 工具。
- 安装Ollama
# macOS
brew install ollama
# Or download from https://ollama.com/download- 启动Ollama服务
# macOS (Ollama runs as a background service after installation)
ollama serve
# Or simply open the Ollama application- 拉取默认模型
# The compare_llm_responses tool defaults to llama3.2:latest
ollama pull llama3.2
# Verify the model is available
ollama list- 测试Ollama是否有效
curl http://localhost:11434/api/generate -d '{"model": "llama3.2", "prompt": "Why is the sky blue?", "stream": false}'
# expected response might be something like
{
"model":"llama3.2",
"created_at":"2025-11-30T12:01:32.314915Z",
"response":"The sky appears blue because of a phenomenon called Rayleigh scattering...
...
}发展
在本地运行MCP服务器
服务器将启动并通过stdin/stdout进行通信。默认情况下,它使用stdio,这是本地MCP服务器的标准传输方式。
# best approach uses the MCP entry point
uv run greenroom# alternative: via python
uv run python src/greenroom/server.py_注意:您不应该直接运行服务器(例如。 uv run )因为服务器是python包的一部分。 直接运行它会破坏模块分辨率。_
使用MCP检查器(web ui)进行检查
npx @modelcontextprotocol/inspector uv --directory /ABSOLUTE/PATH/TO/PROJECT run python src/greenroom/server.py运行测试
uv run python -m pytest
# alternative to printout test names for quicker debugging
uv run python -m pytest -v
# only run static type checker
uv run mypy src/greenroom/与MCP服务器交互
这个项目还没有包括一个用来运行服务器的前端,但你可以使用人工工具与服务器交互。
通过克劳德代码
- 启动服务器
# update local claude settings and run the MCP server
claude mcp add greenroom -- uv --directory /ABSOLUTE/PATH/TO/PROJECT run python src/greenroom/server.py- 打开claude代码
- 进入 /mcp 查看可用的MCP服务器。 - 确认greenroom是其中一个状态为:已连接。
- 练习服务器
- 资源可以用@提及来引用 - 对话过程中会自动使用工具 - 提示显示为/sharsh命令 - 要显式测试工具,请claude调用该工具。例如 Call the tool from the MCP server called greenroom.
更新MCP服务器上的方法时,必须重新运行上述步骤,以便更新可用于claude会话。
通过克劳德桌面
- 下载克劳德桌面应用程序 这里.
- 打开claude桌面应用程序。
- 确认桌面应用程序已连接到休息室服务器:
- 导航到“设置”。 - 点击“开发者”。应出现本地MCP服务器。 - 绿屋服务器应该列在那里,并且应该具有状态:正在运行。 - 如果它没有运行,请单击“编辑配置”。然后按照下面故障排除部分的说明进行操作。
故障排除
确认本地claude设置/配置的正确性。
运行setup命令时(claude mcp add),该MCP服务器的配置将添加到您的本地claude设置中。 克劳德将它们存储在一个名为 claude_desktop_config.json. 这些设置将由claude桌面应用程序用于连接到MCP服务器。
- 将您的本地配置与以下内容对齐。
- 替换
/ABSOLUTE/PATH/TO/PROJECT使用本地计算机上项目目录(而不是包目录)的实际路径。 - 替换
/ABSOLUTE/PATH/TO/UV/LIBRARY在本地计算机上显示紫外线的实际路径。
{
"mcpServers": {
"greenroom": {
"command": "/ABSOLUTE/PATH/TO/UV/LIBRARY",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PROJECT",
"run",
"python",
"src/greenroom/server.py"
]
}
}
}遇到配置问题时,有时从本地计算机中删除mcp服务器并重新添加会有所帮助。
# remove the local configuration
claude mcp remove greenroom
# update the local configuration and run the MCP server
claude mcp add greenroom -- uv --directory /ABSOLUTE/PATH/TO/PROJECT run python src/greenroom/server.py运作原理
- 这
pyproject.toml文件声明fastmcp紫外线管理的依赖性 - 当代理(例如claude代码)启动时,它使用配置的命令将此MCP服务器作为子进程启动
uv自动管理虚拟环境和依赖关系- 服务器通告其可用资源和工具(例如
tools/listJSON-RPC方法) - 在对话过程中,代理可以在相关时自动调用这些工具
- 服务器执行请求的工具并将结果返回给代理
- 代理将结果纳入其对您的回复中
未来发展
- 添加更多媒体类型(例如播客、书籍)
- 添加提供者以增强数据源
- 创造娱乐礼宾体验(例如,经理-代理流程)
