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-10566yBOE-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 | 按父代码(层次结构)筛选的高级部门搜索 | search_term, active_only, parent_code, limit |
list_topics_for_law | 列出特定标准受控词汇的主题 | law_id |
suggest_auxiliary_filters | 给定一个自由文本,建议部门、级别和主题代码来过滤搜索 | query, max_suggestions |
🛠️ 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/2015Descarga https://www.boe.es/boe/dias/2025/03/28/pdfs/BOE-A-2025-6192.pdf y resume su contenidoBusca 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桌面上
- 验证Python 3.10+是否可用:
python3 --version - 检查配置中的路径:它必须是绝对的,而不是相对的
- 完全重新启动克劳德桌面(不仅仅是窗口)
- 检查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 diagnoseBOE 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)🤝 争议
- 叉子项目
- 创建分支(
git checkout -b feature/nueva-funcionalidad) - Haz commit de los cambios(
git commit -m 'Agregar nueva funcionalidad') - 推拉拉马(
git push origin feature/nueva-funcionalidad) - 打开拉动请求
地方发展
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://helpyboe://status - 在网络错误和5XX中重试的异步HTTP客户端
- 可通过变量de entorno进行配置
- 对Python 3.10的支持+
🔒 安全
- BOE API是公共的,不需要身份验证
- 没有本地存储数据
- 服务器通过回退重试自动遵守API限制
📚 参考文献
📄 许可证
麻省 理工 学院 - ver 许可证 更多细节。
👤 作者
维克多·维洛里亚
- 电子邮件:vvictor.97@gmail.com
- github: @计算维克多
______________________________________________________________________
你有问题吗? 打开一个 问题.\ 你喜欢这个项目吗? 给他一个⭐ 在Github!
