西班牙官方公报API访问服务

该服务通过MCP协议提供对西班牙官方公报(BOE)API的访问,支持查询法规、每日摘要和政府辅助表格,适用于法律研究和政策分析场景。

  • by ComputingVictor
  • Python
  • 本地部署
  • 59 星标
  • 更新于
在 GitHub 查看 ComputingVictor/MCP-BOE

使用说明

MCP BOE🇪🇸

西班牙国家公报的模型上下文协议

一个MCP服务器,允许Claude和其他LLM访问BOE的官方API,以查看西班牙政府的合并立法、每日摘要和辅助表格。

🚀 特点

  • 🔍 立法追求:按部门、监管范围、主题和日期搜索50000多个带有过滤器的综合标准
  • 📰 BOE/BORME摘要:访问每日出版物、最近的搜索和每周摘要
  • 🏛️ 辅助表:参考部门、科目、监管范围和领域的代码
  • 📄 PDF教程:下载并从任何BOE文件中提取文本进行分析
  • 💬 提示积分:准备在Claude中使用的查询模板
  • 📊 官方数据:直接连接到BOE的官方API
  • ⚙️ 可配置的:通过环境变量超时、重试和日志级别

📋 目录

🛠️ 安装

先决条件

  • python 3.10上级 (书店要求) mcp)
  • 紫外线 (推荐) pip

选项1:UVX-不安装(推荐)

骗局 uvx 您不需要克隆存储库或管理依赖关系:

uvx --from git+https://github.com/ComputingVictor/MCP-BOE.git mcp-boe

选项2:从带有UV的源代码

git clone https://github.com/ComputingVictor/MCP-BOE.git
cd MCP-BOE

# Instalar dependencias y ejecutar
uv run python -m mcp_boe.server

选项3:使用PIP安装

git clone https://github.com/ComputingVictor/MCP-BOE.git
cd MCP-BOE
pip install -e .

🖥️ 克劳德桌面配置

编辑克劳德桌面配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

带紫外线(推荐)

{
  "mcpServers": {
    "mcp-boe": {
      "command": "uv",
      "args": [
        "run",
        "--python", "3.12",
        "--project", "/ruta/absoluta/a/MCP-BOE",
        "python", "-m", "mcp_boe.server"
      ]
    }
  }
}

取代 /ruta/absoluta/a/MCP-BOE 通过您克隆存储库的实际路径。

使用UVX

{
  "mcpServers": {
    "mcp-boe": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/ComputingVictor/MCP-BOE.git", "mcp-boe"]
    }
  }
}

保存更改后重新启动Claude Desktop。

⚡ 使用Claude Code配置

使用UVX

{
  "mcpServers": {
    "mcp-boe": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/ComputingVictor/MCP-BOE.git", "mcp-boe"],
      "transport": "stdio"
    }
  }
}

您还可以使用存储库中包含的文件:

# Desde el directorio del proyecto
claude --mcp-config claude_mcp_config_uvx.json

💬 可用提示

服务器包括4个可从克劳德的提示符选择器访问的集成提示符:

buscar_legislacion

搜索并总结BOE规则。

参数 描述 必需
tema 要搜索的规则的文本或名称 ✅
departamento 发行部门或机构 ❌

示例:

  • 主题: protección de datos →找到RGPD和LOPDGDD
  • 主题: Ley 40/2015 →《公共部门法律制度法》
  • 主题: tráfico,部门: Ministerio del Interior

analizar_norma

对标准的完整分析:元数据、有效性状态、结构以及与其他标准的关系。

参数 描述 必需
id_norma BOE标识符(例如: BOE-A-2015-10566) ✅

示例:

  • BOE-A-1978-31229 →西班牙宪法
  • BOE-A-2015-10566 →关于公共部门法律制度的第40/2015号法律
  • BOE-A-2018-16673 →《数据保护组织法》

resumen_boe_dia

特定日期英国央行最相关出版物的摘要。

参数 描述 必需
fecha YYYMMDD格式的日期 ✅
seccion BOE部分: 1, 2A, 2B, 3, 4, 5 ❌

示例:

  • 日期: 20250101 →2025年1月1日的出版物
  • 日期: 20240529部分 : 1 →仅一般规定

comparar_normas

它比较了两项规则,并确定了它们之间的修改或废除关系。

参数 描述 必需
id_norma_1 第一个标准的标识符 ✅
id_norma_2 第二个标准的标识符 ✅

示例:

  • BOE-A-2015-10566 y BOE-A-2015-10565 →第40/2015号法律和第39/2015号法律(两项主要行政法)

🔧 可用的工具

共31种工具 分为5组。

📜 综合立法(9种工具)

工具 描述 关键参数
search_consolidated_legislation 搜索50000多个合并规则 query, title, department_code, legal_range_code, matter_code, from_date, to_date, limit, include_derogated
get_consolidated_law 获取规则的元数据、法律分析和文本 law_id, include_metadata, include_analysis, include_full_text, include_eli_metadata
get_law_structure 标准的完整索引(条款、规定、附件) law_id
get_law_text_block 特定条款或规定的文本 law_id, block_id
find_related_laws 由规则修改、废除或修改的规则 law_id, relation_type
compare_law_versions 比较两个日期之间的规则文本,检测添加、修改或删除的项目 law_id, from_date, to_date, granularity
search_law_articles 在不下载全文的情况下搜索规则中的特定文章 law_id, query, search_in, limit
get_law_metadata 仅获取规则(范围、日期、机构、状态、链接)的元数据,而不加载文本 law_id
list_related_laws 列出与对包括哪些类型的关系进行粒度控制相关的规则 law_id, include_derogating, include_development, include_references

📰 BOE/BORME摘要(7个工具)

工具 描述 关键参数
get_boe_summary 一个日期的完整BOE摘要 date, section_filter, department_filter, max_items
get_borme_summary Borme摘要(商业登记处) date, province_filter, max_items
search_recent_boe 搜索过去n天的文档 days_back, search_terms, section_filter
get_weekly_summary 一周的统计和总结 start_date, include_statistics
get_boe_summary_range 使用部分筛选器添加日期范围(最多31天)的摘要 from_date, to_date, section, max_items
watch_boe_changes 监管雷达:按关键字搜索最近的出版物 days_back, keywords, sections, max_items
group_summary_by_department 按发行部门将日期范围内的出版物分组 from_date, to_date, sections, max_items_per_dept

🏛️ 辅助表(10个工具)

工具 描述
get_departments_table 官方部门及其代码清单
get_legal_ranges_table 规范范围(法律、皇家法令、命令等)
get_matters_table 主题材料的受控词汇
get_scopes_table 规范范围(州、自治)
get_consolidation_states_table 合并报表
search_auxiliary_data 同时搜索所有表
get_code_description 特定代码的描述
search_departments_advanced 按父代码(层次结构)筛选的高级部门搜索
list_topics_for_law 列出特定标准受控词汇的主题
suggest_auxiliary_filters 给定一个自由文本,建议部门、级别和主题代码来过滤搜索

🛠️ LLMS的生活质量(4种工具)

工具 描述 关键参数
summarize_law_sections 一项规则的结构化摘要,每一条第一款 law_id
paginate_law_text 使用不透明光标按页返回标准文本 law_id, cursor, max_chars
explain_law_structure 描述按级别计数元素的规则的层次结构 law_id
normalize_boe_reference 规范结构化字段中对规则或摘要的文本引用 reference_text

📄 读取PDFS(1个工具)

工具 描述 关键参数
read_boe_pdf 下载并从BOE的PDF中提取文本 source, max_pages

source 接受两种格式:

  • 直接网址:出现在字段中的 url_pdf 总结
    https://www.boe.es/boe/dias/2025/03/28/pdfs/BOE-A-2025-6192.pdf
  • BOE 标识符:服务器查询API以获取日期并构建URL
    BOE-A-2025-6192 哦 BOE-A-2015-10566

max_pages -要读取的最大页面(默认) 30最大 100).

应用限制:最高PDF 10 MB y 80000个字符 返回到LLM的文本。

克劳德的使用示例:

Lee el PDF de BOE-A-2015-10566 y explícame qué regula la Ley 40/2015
Descarga https://www.boe.es/boe/dias/2025/03/28/pdfs/BOE-A-2025-6192.pdf y resume su contenido
Busca el sumario del BOE de hoy y léeme el PDF del primer real decreto que aparezca

📌 有用的格式和值

BOE部分:

代码 描述
1 一般规定
2A 当局和工作人员-任命
2B 当局和工作人员-反对派
3 其他规定
4 司法行政
5 广告

常见部门:

代码 部门
7723 国家元首
1430 司法部
1470 内政部

常见的监管范围:

代码 范围
1300 莱伊
1250 组织法
1200 真正的法令
1100 真正的法令
800 部长令

⚙️ 环境变量

变量 描述 默认值
BOE_HTTP_TIMEOUT HTTP请求的超时(秒) 30.0
BOE_MAX_RETRIES 网络或5XX错误的最大重试次数 3
BOE_RETRY_DELAY 重试之间的基本等待时间(线性回退) 1.0
LOG_LEVEL 测井水平(DEBUG, INFO, WARNING, ERROR) INFO

克劳德桌面上的配置示例:

{
  "mcpServers": {
    "mcp-boe": {
      "command": "uv",
      "args": ["run", "--project", "/ruta/a/MCP-BOE", "python", "-m", "mcp_boe.server"],
      "env": {
        "BOE_HTTP_TIMEOUT": "60",
        "LOG_LEVEL": "WARNING"
      }
    }
  }
}

💡 使用示例

从Python中寻找立法

import asyncio
from mcp_boe.utils.http_client import BOEHTTPClient
from mcp_boe.tools.legislation import LegislationTools

async def main():
    async with BOEHTTPClient() as client:
        tools = LegislationTools(client)
        resultados = await tools.search_consolidated_legislation({
            "query": "Ley 40/2015",
            "limit": 3
        })
        for r in resultados:
            print(r.text)

asyncio.run(main())

从BOE获得摘要

import asyncio
from datetime import datetime, timedelta
from mcp_boe.utils.http_client import BOEHTTPClient
from mcp_boe.tools.summaries import SummaryTools

async def main():
    async with BOEHTTPClient() as client:
        tools = SummaryTools(client)
        fecha = (datetime.now() - timedelta(days=2)).strftime("%Y%m%d")
        resultados = await tools.get_boe_summary({
            "date": fecha,
            "section_filter": "1",
            "max_items": 10
        })
        for r in resultados:
            print(r.text)

asyncio.run(main())

连通性诊断

# Verificar que la API del BOE es accesible
python -m mcp_boe.server --mode diagnose

🐛 解决问题

服务器不会出现在Claude桌面上

  1. 验证Python 3.10+是否可用: python3 --version
  2. 检查配置中的路径:它必须是绝对的,而不是相对的
  3. 完全重新启动克劳德桌面(不仅仅是窗口)
  4. 检查Claude桌面上的日志→帮助→打开日志文件夹

错误: requires-python /版本不兼容

书店 mcp 需要Python 3.10或更高版本。强制版本匹配 uv:

"args": ["run", "--python", "3.12", "--project", "/ruta/MCP-BOE", "python", "-m", "mcp_boe.server"]

错误: No module named 'mcp_boe'

一定要通过 --project 到存储库的根目录(它所在的位置) pyproject.toml),不到目录 src/.

BOE API没有响应

python -m mcp_boe.server --mode diagnose

BOE API不公布维护时间表。5XX错误最多自动重试3次。

📊 项目结构

MCP-BOE/
├── src/mcp_boe/
│   ├── __init__.py
│   ├── __main__.py
│   ├── server.py               # Servidor MCP: tools, prompts, resources
│   ├── models/
│   │   └── boe_models.py       # Modelos Pydantic y validadores
│   ├── tools/
│   │   ├── legislation.py      # 9 herramientas de legislación consolidada
│   │   ├── summaries.py        # 7 herramientas de sumarios BOE/BORME
│   │   ├── auxiliary.py        # 10 herramientas de tablas auxiliares
│   │   ├── analysis.py         # 4 herramientas de calidad de vida para LLMs
│   │   └── documents.py        # 1 herramienta de lectura de PDFs
│   └── utils/
│       └── http_client.py      # Cliente HTTP asíncrono con reintentos
├── examples/
│   └── basic_usage.py
├── tests/
├── pyproject.toml
├── claude_mcp_config.json      # Config de ejemplo para instalación local
├── claude_mcp_config_uvx.json  # Config de ejemplo con uvx
└── rest_api_wrapper.py         # API REST opcional (FastAPI)

🤝 争议

  1. 叉子项目
  2. 创建分支(git checkout -b feature/nueva-funcionalidad)
  3. Haz commit de los cambios(git commit -m 'Agregar nueva funcionalidad')
  4. 推拉拉马(git push origin feature/nueva-funcionalidad)
  5. 打开拉动请求

地方发展

git clone https://github.com/ComputingVictor/MCP-BOE.git
cd MCP-BOE
uv sync --extra dev
uv run python -m pytest tests/
uv run black src/

📝 更新日志

v0.1.0

  • MCP服务器的初始实现
  • 31工具:9来自立法,7来自摘要,10来自辅助表,4来自LLMS的生活质量,1来自PDF阅读
  • 工具 read_boe_pdf:通过URL或标准ID从BOE中下载和提取PDF文本
  • 4个提示被整合者: buscar_legislacion, analizar_norma, resumen_boe_dia, comparar_normas
  • 2 MCP资源: boe://help y boe://status
  • 在网络错误和5XX中重试的异步HTTP客户端
  • 可通过变量de entorno进行配置
  • 对Python 3.10的支持+

🔒 安全

  • BOE API是公共的,不需要身份验证
  • 没有本地存储数据
  • 服务器通过回退重试自动遵守API限制

📚 参考文献

📄 许可证

麻省 理工 学院 - ver 许可证 更多细节。

👤 作者

维克多·维洛里亚


你有问题吗? 打开一个 问题.
你喜欢这个项目吗? 给他一个⭐ 在Github!