remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Supports configuration of rate limiting settings through .env file for managing DraCor API usage.
Offers containerized deployment of the MCP server through Docker, with configurable implementation options.
Uses Pydantic for structured data models of DraCor entities, ensuring type safety and validation.
DraCor MCP 服务器
一个用于与戏剧语料库项目 (DraCor) API 交互的模型上下文协议 (MCP) 服务器。此 MCP 服务器使您能够通过 Claude 或其他 LLM 无缝分析戏剧文本及其人物关系。
概述
该项目使用官方的模型上下文协议 Python SDK 实现了一个 MCP 服务器,该 SDK 允许访问 DraCor API v1。它允许 Claude 和其他法学硕士 (LLM) 与戏剧文本语料库进行交互,分析角色网络,检索剧本信息,并生成关于不同语言和时期戏剧作品的见解。
该项目包括两个实施方案:
dracor_mcp_fastmcp.py
- 使用基于 FastMCP 装饰器的 API 和 v1 API 进行精简实现
特征
- 通过统一接口访问 DraCor API v1
- 无需身份验证(DraCor API 可公开访问)
- DraCor 实体的结构化数据模型
- 运营支持:
- 语料库和戏剧信息检索
- 字符网络分析
- 比赛指标和统计数据
- 角色信息和口语文本
- 比较游戏分析
- 搜索功能
- 人物关系数据
- 多种格式的网络数据(CSV、GEXF、GraphML)
- 跨剧作的性别分析
- 纯文本和 TEI XML 格式的全文检索
- 完整剧本分析
设置
先决条件
- Python 3.10 或更高版本
- UV 包管理器(推荐)或 pip
紫外线安装
- 安装UV:
- 创建虚拟环境并安装依赖项:
- 在 Claude Desktop 中安装 MCP 服务器:
对于标准实现(v0 API):
或者使用 v1 API 实现 FastMCP(推荐):
开发模式
对于测试和开发:
或者使用 v1 API 实现 FastMCP(推荐):
这将启动 MCP 检查器,您可以在其中以交互方式测试您的工具和资源。
克劳德配置
您还可以通过将以下内容添加到 Claude 配置文件中,直接配置 Claude 以使用 DraCor MCP 服务器:
将/path/to/dracor-mcp/
替换为 dracor-mcp 目录的实际路径。此配置使用uv run
执行 MCP 服务器及其必要的依赖项,无需事先安装。
Docker(可选)
如果您更喜欢使用 Docker:
要使用带有 v1 API 的 FastMCP 实现:
实现细节
标准 MCP 实现 (v0 API)
dracor_mcp_server.py
中的标准实现使用核心 MCP SDK 类和较旧的 v0 API:
Resource
- 用于定义 API 资源MCPToolImpl
- 用于实现工具PromptTemplate
- 用于创建提示模板
FastMCP 实现(v1 API)
dracor_mcp_fastmcp.py
中的 FastMCP 实现使用当前 v1 API 的更简洁的基于装饰器的方法:
@mcp.resource()
- 用于定义 API 资源@mcp.tool()
- 用于实现工具@mcp.prompt()
- 用于创建提示模板
这种方法可以产生更清晰、更易于维护的代码,同时提供相同的功能,但可以访问更全面的 API 功能。
v1 API 功能
v1 API 实现提供了对许多附加端点和功能的访问:
- API 信息- DraCor API 的版本信息
- 语料库元数据——语料库中所有剧本的详细元数据
- 播放指标- 网络指标和分析数据
- 字符网络数据- CSV、GEXF 和 GraphML 格式
- 人物关系——人物之间的明确关系
- 口语文本过滤器- 按性别、关系类型或角色进行过滤
- 舞台指导- 检索有或无演讲者的舞台指导
- 角色查找- 查找包含特定角色的剧本(通过 Wikidata ID)
用法
在 Claude Desktop 中安装后,您可以通过 Claude 与 DraCor API 进行交互。以下是一些示例:
基本查询
- 要求 Claude 列出可用的语料库:
- 获取有关特定戏剧的信息:
- 分析角色网络:
高级查询
- 分析人物关系:
- 比较剧本:
- 分析角色重要性:
- 分析性别代表性:
- 寻找不同戏剧中的角色:
- 分析一出戏的全文:
- 从剧本中提取主题:
- 分析语言模式:
文学分析查询
- 分析剧本结构:
- 比较作者:
- 历史背景:
资源(v1 API)
FastMCP 服务器公开以下资源:
info://
- API 信息和版本详细信息corpora://
- 所有可用语料库的列表corpus://{corpus_name}
- 有关特定语料库的信息corpus_metadata://{corpus_name}
- 语料库中所有剧本的元数据plays://{corpus_name}
- 特定语料库中的剧本列表play://{corpus_name}/{play_name}
- 有关特定剧本的信息play_metrics://{corpus_name}/{play_name}
- 特定剧目的网络指标characters://{corpus_name}/{play_name}
- 特定剧本中的角色列表spoken_text://{corpus_name}/{play_name}
- 戏剧中的口语文本(带有可选过滤器)spoken_text_by_character://{corpus_name}/{play_name}
- 每个角色说出的文本stage_directions://{corpus_name}/{play_name}
- 戏剧中的舞台指导network_data://{corpus_name}/{play_name}
- CSV 格式的网络数据relations://{corpus_name}/{play_name}
- CSV 格式的角色关系数据character_by_wikidata://{wikidata_id}
- 按维基数据 ID 列出包含角色的戏剧full_text://{corpus_name}/{play_name}
- 纯文本格式的戏剧全文tei_text://{corpus_name}/{play_name}
- 剧本的完整 TEI XML 文本
工具(v1 API)
FastMCP 服务器提供以下工具:
search_plays
- 根据查询搜索剧本compare_plays
- 从指标和结构方面比较两部剧analyze_character_relations
- 分析戏剧中的人物关系analyze_play_structure
- 分析剧本的结构find_character_across_plays
- 在多个剧集中查找角色analyze_full_text
- 分析戏剧的全文,包括对话和舞台指导
提示模板(v1 API)
FastMCP 服务器包含以下提示模板:
analyze_play
- 用于分析特定剧本的模板character_analysis
- 用于分析特定角色的模板network_analysis
- 用于分析字符网络的模板comparative_analysis
- 比较两部戏剧的模板gender_analysis
- 用于分析戏剧中性别表现的模板historical_context
- 用于分析戏剧历史背景的模板full_text_analysis
- 用于分析戏剧全文的模板
工作原理
该项目使用官方模型上下文协议 Python SDK 构建一个 MCP 服务器,该服务器公开 Claude 可以用来与 DraCor API 交互的资源和工具。
当你向克劳德询问有关戏剧文本的问题时,它可以:
- 访问语料库、剧本、角色和网络等资源
- 使用工具搜索、比较和分析剧本
- 根据数据提供见解和可视化
DraCor API 是公开访问的,因此不需要身份验证。
速率限制
请注意 DraCor 的速率限制策略。服务器包含可选的速率限制设置,可在 .env 文件中配置。
故障排除
如果您遇到问题:
- 确保您使用的是 Python 3.10 或更高版本
- 尝试在开发模式下运行进行调试:
mcp dev dracor_mcp_fastmcp.py
- 在https://dracor.org/doc/api检查 DraCor API 状态
提示与 MCP 一起使用
你的任务是分析 DraCor 数据库中的历史剧情,找出角色 ID 标记问题。具体来说:
- 从 DraCor 数据库中选择一部戏剧,并对其人物关系、全文和结构进行全面分析。
- 识别角色 ID 标记中所有可能存在的不一致之处,包括:
- 角色名称的拼写变化
- 角色名称混淆或合并
- 历史拼写变体
- 角色 ID 与舞台指示不一致
- 以结构化表格形式创建潜在角色 ID 标记错误的详细报告,其中包含以下列:
- 文本ID(剧本的唯一标识符)
- 数据库中当前使用的角色ID
- 文本中发现有问题的变体
- 错误类型(拼写、变化、混淆等)
- 问题解释
针对此文本执行此操作:[playname]”
执照
麻省理工学院
致谢
该项目使用:
- 用于构建 MCP 服务器的模型上下文协议 Python SDK
- 用于戏剧文本和网络数据的 DraCor API v1
- 戏剧语料库项目(DraCor)提供底层数据和 API
This server cannot be installed
模型上下文协议服务器使 Claude 和其他 LLM 能够与戏剧语料库项目 API 进行交互,以分析不同语言和时期的戏剧文本、人物网络和戏剧信息。