DraCor MCP Server

by stijn-meijers
Verified

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) 与戏剧文本语料库进行交互,分析角色网络,检索剧本信息,并生成关于不同语言和时期戏剧作品的见解。

该项目包括两个实施方案:

  1. dracor_mcp_fastmcp.py - 使用基于 FastMCP 装饰器的 API 和 v1 API 进行精简实现

特征

  • 通过统一接口访问 DraCor API v1
  • 无需身份验证(DraCor API 可公开访问)
  • DraCor 实体的结构化数据模型
  • 运营支持:
    • 语料库和戏剧信息检索
    • 字符网络分析
    • 比赛指标和统计数据
    • 角色信息和口语文本
    • 比较游戏分析
    • 搜索功能
    • 人物关系数据
    • 多种格式的网络数据(CSV、GEXF、GraphML)
    • 跨剧作的性别分析
    • 纯文本和 TEI XML 格式的全文检索
    • 完整剧本分析

设置

先决条件

  • Python 3.10 或更高版本
  • UV 包管理器(推荐)或 pip

紫外线安装

  1. 安装UV:
pip install uv
  1. 创建虚拟环境并安装依赖项:
uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install -e .
  1. 在 Claude Desktop 中安装 MCP 服务器:

对于标准实现(v0 API):

mcp install dracor_mcp_server.py

或者使用 v1 API 实现 FastMCP(推荐):

mcp install dracor_mcp_fastmcp.py

开发模式

对于测试和开发:

mcp dev dracor_mcp_server.py

或者使用 v1 API 实现 FastMCP(推荐):

mcp dev dracor_mcp_fastmcp.py

这将启动 MCP 检查器,您可以在其中以交互方式测试您的工具和资源。

克劳德配置

您还可以通过将以下内容添加到 Claude 配置文件中,直接配置 Claude 以使用 DraCor MCP 服务器:

{ "tools": { "DraCor API v1": { "command": "uv", "args": [ "run", "--with", "mcp[cli]", "--with", "requests", "--with", "pydantic", "--with", "python-multipart", "mcp", "run", "/path/to/dracor-mcp/dracor_mcp_fastmcp.py" ] } } }

/path/to/dracor-mcp/替换为 dracor-mcp 目录的实际路径。此配置使用uv run执行 MCP 服务器及其必要的依赖项,无需事先安装。

Docker(可选)

如果您更喜欢使用 Docker:

docker build -t dracor-mcp . docker run dracor-mcp

要使用带有 v1 API 的 FastMCP 实现:

docker run -e IMPLEMENTATION=fastmcp dracor-mcp

实现细节

标准 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 进行交互。以下是一些示例:

基本查询

  1. 要求 Claude 列出可用的语料库:
Can you list all available drama corpora in DraCor?
  1. 获取有关特定戏剧的信息:
Tell me about Goethe's Faust in the German corpus
  1. 分析角色网络:
Analyze the character network in Hamlet from the Shakespeare corpus

高级查询

  1. 分析人物关系:
What are the strongest character relationships in Pushkin's Boris Godunov?
  1. 比较剧本:
Compare Goethe's Faust and Schiller's Die Räuber in terms of network density and character count
  1. 分析角色重要性:
Who are the most central characters in Shakespeare's Hamlet based on speaking time and relationships?
  1. 分析性别代表性:
Analyze the gender distribution and representation in Molière's Le Misanthrope
  1. 寻找不同戏剧中的角色:
Find all plays that feature a character named "Hamlet" or similar
  1. 分析一出戏的全文:
Provide a comprehensive analysis of the full text of Goethe's Faust
  1. 从剧本中提取主题:
What are the main themes and motifs in the full text of Shakespeare's Hamlet?
  1. 分析语言模式:
Analyze the language patterns and style in Chekhov's The Cherry Orchard

文学分析查询

  1. 分析剧本结构:
Analyze the structure of Molière's Le Misanthrope in terms of acts, scenes, and dialogue distribution
  1. 比较作者:
Compare the network structures in plays by Shakespeare and Molière
  1. 历史背景:
Put Pushkin's Boris Godunov in its historical context and analyze how this is reflected in the character network

资源(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 交互的资源和工具。

当你向克劳德询问有关戏剧文本的问题时,它可以:

  1. 访问语料库、剧本、角色和网络等资源
  2. 使用工具搜索、比较和分析剧本
  3. 根据数据提供见解和可视化

DraCor API 是公开访问的,因此不需要身份验证。

速率限制

请注意 DraCor 的速率限制策略。服务器包含可选的速率限制设置,可在 .env 文件中配置。

故障排除

如果您遇到问题:

  1. 确保您使用的是 Python 3.10 或更高版本
  2. 尝试在开发模式下运行进行调试: mcp dev dracor_mcp_fastmcp.py
  3. https://dracor.org/doc/api检查 DraCor API 状态

提示与 MCP 一起使用

你的任务是分析 DraCor 数据库中的历史剧情,找出角色 ID 标记问题。具体来说:

  1. 从 DraCor 数据库中选择一部戏剧,并对其人物关系、全文和结构进行全面分析。
  2. 识别角色 ID 标记中所有可能存在的不一致之处,包括:
    • 角色名称的拼写变化
    • 角色名称混淆或合并
    • 历史拼写变体
    • 角色 ID 与舞台指示不一致
  3. 以结构化表格形式创建潜在角色 ID 标记错误的详细报告,其中包含以下列:
    • 文本ID(剧本的唯一标识符)
    • 数据库中当前使用的角色ID
    • 文本中发现有问题的变体
    • 错误类型(拼写、变化、混淆等)
    • 问题解释

针对此文本执行此操作:[playname]”

执照

麻省理工学院

致谢

该项目使用:

  • 用于构建 MCP 服务器的模型上下文协议 Python SDK
  • 用于戏剧文本和网络数据的 DraCor API v1
  • 戏剧语料库项目(DraCor)提供底层数据和 API
ID: wm8mnqijvz