Skip to main content
Glama

EMMA MCP — Agente personalizado de finanzas municipales para Blaylock Van

NYU Stern Consulting Capstone · Primavera 2026 · Marco Figueroa, Justin Ganjian, Andrew Kay, Isaac Mizrahi, Roshan Raja · Profesor Marciano


Qué es esto

Un servidor MCP (Model Context Protocol) personalizado que permite a Claude leer el mercado de nuevas emisiones de bonos municipales directamente desde el sitio web EMMA de la MSRB. Este es el ejemplo de Nivel 4 en nuestra escala de proyectos capstone: un conector propiedad de la firma para una fuente de datos que ningún proveedor cubre.

EMMA —el sitio de Acceso Electrónico al Mercado Municipal operado por la Junta de Reglamentación de Valores Municipales (MSRB)— es el registro público oficial de cada bono municipal vendido en los Estados Unidos. Calendarios de nuevas emisiones, Declaraciones Oficiales, detalles a nivel de CUSIP, precios de operaciones recientes: todo está en EMMA. No tiene una API pública.

Este MCP expone 18 herramientas y 2 recursos (un archivo de reglas CLAUDE.md y un glosario EMMA_ABBREVIATIONS.md) que Claude carga automáticamente al conectarse. Una vez instalado, un banquero puede hacerle a Claude preguntas en lenguaje natural como "extrae todos los bonos pendientes de Rady Children's Hospital y descarga la OS más reciente" y Claude ejecuta la cadena completa —búsqueda → consulta de emisor → detalles de emisión → descarga de PDF → extracción de texto— en unos 20 segundos.

Para ver la presentación completa y por qué es importante para Blaylock, consulta USAGE.mdWhy this exists.


Related MCP server: nyc-property-intel

Requisitos previos

Necesitas cuatro cosas en tu portátil. Si falta alguna, las instrucciones de instalación a continuación lo cubren.

Requisito

Qué es

Verificación de instalación

Claude Desktop

Cliente nativo de Anthropic para macOS/Windows (el host MCP)

claude.ai/download

Python 3.10+

Entorno de ejecución para el servidor

Mac: python3 --version · Win: python --version

uv

Gestor de paquetes de Python (maneja el venv automáticamente)

uv --version

Playwright Chromium

Navegador sin interfaz que el servidor usa para manejar EMMA

Instalado con un comando a continuación


Instalación — Mac

# 1. Unzip this folder somewhere sensible
cd ~/Downloads
unzip emma-mcp.zip -d ~/emma-mcp
cd ~/emma-mcp

# 2. If you don't have uv:
brew install uv

# 3. Create the venv + install dependencies (one command)
uv sync

# 4. Install the headless browser Playwright drives
uv run playwright install chromium

# 5. Smoke-test the server (optional — confirms it boots)
uv run python server.py
# You should see the server start and wait on stdin.
# Press Ctrl+C to stop.

Conéctalo a Claude Desktop (Mac)

  1. Abre Claude Desktop → SettingsDeveloperEdit Config. Eso abrirá claude_desktop_config.json.

  2. Añade una entrada emma dentro del objeto mcpServers. Usa la ruta absoluta al .venv/bin/python que uv sync acaba de crear y la ruta absoluta a server.py:

{
  "mcpServers": {
    "emma": {
      "command": "/Users/YOURNAME/emma-mcp/.venv/bin/python",
      "args": ["/Users/YOURNAME/emma-mcp/server.py"]
    }
  }
}
  1. Guarda, cierra completamente Claude Desktop (Cmd+Q, no solo cierres la ventana) y vuelve a abrirlo.

  2. En un chat nuevo, el icono del martillo en el compositor debería listar las herramientas de EMMA. Esa es la señal.


Instalación — Windows

# 1. Unzip this folder, e.g. to C:\emma-mcp
cd C:\emma-mcp

# 2. If you don't have Python: install from python.org (3.10 or later).
#    Check "Add Python to PATH" during install.

# 3. Install uv
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# 4. Create the venv + install deps
uv sync

# 5. Install Playwright's Chromium
uv run playwright install chromium

# 6. Smoke-test
uv run python server.py
# Ctrl+C to stop.

Conéctalo a Claude Desktop (Windows)

  1. Abre %APPDATA%\Claude\claude_desktop_config.json en un editor de texto. (Pega esa ruta en la barra de direcciones del Explorador; Windows resuelve %APPDATA% a C:\Users\TU_USUARIO\AppData\Roaming.)

  2. Usa barras inclinadas hacia adelante o barras invertidas dobles en las rutas JSON; las barras invertidas simples de Windows rompen el JSON:

{
  "mcpServers": {
    "emma": {
      "command": "C:/emma-mcp/.venv/Scripts/python.exe",
      "args": ["C:/emma-mcp/server.py"]
    }
  }
}
  1. Guarda, cierra completamente Claude Desktop (clic derecho en el icono de la bandeja → Quit), vuelve a abrirlo.

  2. Comprueba el icono del martillo en el compositor para ver las herramientas de EMMA.


Primera instrucción — la verificación de 60 segundos

Abre un nuevo chat de Claude Desktop y pega:

Use the EMMA MCP to pull the upcoming new-issue calendar for the next week. Filter to NY state only. Return a clean table with issuer, par, dated, and sector.

Deberías ver a Claude llamar a get_new_issue_calendar con state="NY", obtener unas 10-25 filas en pocos segundos y formatearlas como una tabla con URLs de EMMA. Si eso funciona, todas las demás herramientas funcionan de la misma manera.

Para una demostración más impresionante, prueba:

Find Rady Children's Hospital on EMMA, pull their outstanding bonds, get the most recent issue's details, download the Official Statement, and summarize the rating language and use of proceeds from the first 10 pages.

Eso ejecuta la cadena completa de cinco herramientas de principio a fin en unos 20 segundos.

Más ejemplos de instrucciones en USAGE.md.


Solución de problemas

Claude Desktop no muestra las herramientas de EMMA después de reiniciar.

  • Confirma que el JSON es válido (python3 -m json.tool < claude_desktop_config.json — sin salida = correcto).

  • Confirma que ambas rutas en la configuración son absolutas y existen. Las rutas relativas y ~ no funcionan.

  • Cierra completamente Claude Desktop (Cmd+Q / Quit en la bandeja) — cerrar la ventana lo mantiene ejecutándose.

  • Revisa los registros MCP de Claude Desktop en ~/Library/Logs/Claude/mcp*.log (Mac) o %APPDATA%\Claude\logs\mcp*.log (Windows) para ver un error específico.

playwright install chromium se bloquea o falla.

  • La primera instalación descarga ~150 MB y tarda 1-2 minutos en una conexión doméstica. Sé paciente.

  • Detrás de un proxy corporativo, configura HTTPS_PROXY y HTTP_PROXY antes de ejecutarlo.

Claude llama a una herramienta y devuelve "EMMA disclaimer loop" o se agota el tiempo de espera.

  • EMMA establece una cookie de exención de responsabilidad de CUSIP en la primera visita. El servidor la pre-configura (Disclaimer6=msrborg) pero muy raramente EMMA cambia el nombre de la cookie. Reinicia Claude Desktop para restablecer el contexto del navegador. Si persiste, es posible que EMMA esté caído — comprueba https://emma.msrb.org en un navegador normal.

Una tabla devuelta muestra cusip_hash: ABC123… en lugar de un CUSIP de 9 dígitos.

  • Esto es intencional, no un error. EMMA renderiza los CUSIPs como etiquetas de imagen (regla de licencia CGS), por lo que el servidor no puede leerlos del HTML. El PDF de la Declaración Oficial es la fuente autorizada del CUSIP. Usa download_official_statement y luego extract_pdf_text — la portada y la contraportada contienen los CUSIPs reales.

La búsqueda de "Rady Children's" encuentra hospitales infantiles en Franklin OH y Pittsburgh PA pero no Rady.

  • Esta es una peculiaridad conocida de EMMA, no un error del servidor. Los bonos de Rady se archivan bajo un conducto de California (CHFFA / CPFA) con "RADY CHILDRENS" solo en la parte del obligado entre paréntesis, que la búsqueda rápida de EMMA indexa pero débilmente. Prueba emma_quick_search {query: "rady"} o busca el conducto directamente: search_issuers_by_state {state: "CA", contains: "health care facilities"}. Guía completa de búsqueda de obligados en USAGE.mdThe conduit cheat sheet.

El servidor se inicia pero Claude dice "no tools available".

  • Probablemente editaste server.py y hay un error de sintaxis de Python. Ejecuta uv run python server.py en una terminal — cualquier error se imprimirá en stderr. Corrige y reinicia Claude Desktop.


Qué hay en esta carpeta

Archivo / carpeta

Qué es

server.py

El servidor MCP en sí — ~1,500 líneas, Python, Playwright. 18 herramientas, 2 recursos.

CLAUDE.md

Reglas de cumplimiento de Blaylock. Cargado en cada sesión de EMMA como recurso MCP emma://rules/CLAUDE.md.

EMMA_ABBREVIATIONS.md

Abreviaturas telegráficas de nombres de emisores de EMMA (HOSP, AUTH, SR, CMNTY, etc.) + hoja de trucos de conductos. Cargado como recurso emma://rules/EMMA_ABBREVIATIONS.md.

README.md

Este archivo.

USAGE.md

Referencia extensa: las 18 herramientas, la cadena de flujo de trabajo canónica, ejemplos de instrucciones para banqueros, advertencias.

pyproject.toml, uv.lock

Manifiesto de dependencias de Python.

_demo_pulse.py

Controlador de un solo uso utilizado durante la preparación de diapositivas — llama al MCP directamente para poder capturar las salidas. No es necesario para ejecutar el servidor.

_fetch_os_pdfs.py

Script complementario que descargó por lotes PDFs de OS para la demostración de Nivel 2 (Cowork) del capstone. No es necesario para ejecutar el servidor.

os_pdfs/

Declaraciones Oficiales de muestra descargadas a través del MCP durante las pruebas. Consérvalas o elimínalas — la carpeta se recrea automáticamente en la primera llamada a download_official_statement.


La versión de una línea

Construimos el EMMA MCP que ningún proveedor ofrece, lo conectamos a Claude mediante el mismo protocolo que cualquier conector de mercado y lo gobernamos con un archivo de reglas en markdown simple que un banquero puede leer y editar. Así es como se ve el Nivel 4 cuando una firma realmente posee su propia herramienta.

Install Server
F
license - not found
A
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that provides 33 tools for full DEVONthink integration, enabling users to search, manage records, and access smart groups through Claude Code. It supports document CRUD operations, metadata management, and utilizes DEVONthink's built-in AI for document summarization and classification.
    33
    36
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for NYC real estate due diligence. Lets Claude query 22+ NYC public-record databases — DOB/HPD/ECB violations, ACRIS deeds, DOF sales, 311 complaints, FDNY incidents, NYPD complaints, marshal evictions, PLUTO, rent stabilization — in plain English.
    18
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An enhanced MCP server providing comprehensive financial market data endpoints for quantitative trading analysis, including SEC filings, FINRA short volume, earnings, news, and Google Trends. It features meta-tools that consolidate multiple data sources into single efficient calls, optimizing for AI agents with iteration budgets.
    8
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence

  • MCP server for nonprofit financials via ProPublica — IRS Form 990 data for 1.8M+ nonprofits.

  • Augments MCP Server - A comprehensive framework documentation provider for Claude Code

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ark9164-create/blaylock-emma-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server