npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@linkcontrata/mcp

v0.1.1

Published

Servidor MCP de LinkContrata — usa la plataforma (normas, oportunidades, proyectos, procurement, pujas) desde Claude y otros asistentes de IA.

Readme

@linkcontrata/mcp

LinkContrata's MCP (Model Context Protocol) server. Connects your AI assistant (Claude Desktop, Claude Code, …) to your LinkContrata account to search regulations, list opportunities, review projects and procurement, and create/publish opportunities — all with your own permissions (the API enforces the same per-company isolation and the same roles as the web app).

The server doesn't reimplement business logic: it translates the assistant's tools into calls to LinkContrata's JSON API (/api/v1/*), authenticating with your personal token.

(Versión en español más abajo — ver §Español.)

1. Generate an API token

In LinkContrata: Settings → API Tokens → Generate token.

  • Choose a scope:
    • read — read-only (search, list, view). Recommended to start.
    • read_write — also allows creating/publishing opportunities, creating projects, submitting bids. The server rejects writes when the token is read-only.
  • Copy the token (lct_…) right then: it is shown only once.

2. Configure it in your assistant

Claude Desktop / Claude Code

Add the server to your MCP config (in Claude Desktop: Settings → Developer → Edit Config):

{
  "mcpServers": {
    "linkcontrata": {
      "command": "npx",
      "args": ["-y", "@linkcontrata/mcp"],
      "env": {
        "LINKCONTRATA_TOKEN": "lct_your_token_here",
        "LINKCONTRATA_URL": "https://linkcontrata.lat"
      }
    }
  }
}

LINKCONTRATA_URL is optional (defaults to https://linkcontrata.lat). Restart the assistant and ask, e.g.: "search regulations about appeal deadlines for the award" or "list my open opportunities".

3. Tools

Read (any token): whoami, dashboard_summary, search_regulations, list_regulatory_documents, get_regulatory_document, list_opportunities, get_opportunity, list_recommendations, list_projects, get_project, list_packages, list_contracts, list_bids, get_bid.

Write (requires read_write): create_project, promote_project_to_marketplace, create_opportunity, publish_opportunity, submit_bid, send_contact_message. Destructive actions (delete) are intentionally omitted in this version.

promote_project_to_marketplace is the one-step operation to take a project to the marketplace: it creates/reuses its package, creates the opportunity and publishes it (idempotent). Backed by POST /api/v1/projects/projects/:id/promote_to_marketplace.

Security

  • The token travels as Authorization: Bearer … to the API; the plaintext token is never stored server-side (only its SHA-256 hash).
  • The assistant can only do what you could do on the web — the API scopes by your company and applies the policies (Pundit) on every call.
  • Revoke a token anytime from Settings → API Tokens.

Development

npm install
npm run build       # compiles TypeScript to dist/
npm run typecheck   # tsc --noEmit
LINKCONTRATA_TOKEN=lct_... node dist/index.js   # runs the server (stdio)

Transport: stdio. For a remote connector on claude.ai (OAuth 2.1) see docs/MCP_PLUGIN.md in the main repo.


Español

Servidor MCP (Model Context Protocol) de LinkContrata. Conecta tu asistente de IA (Claude Desktop, Claude Code, …) con tu cuenta de LinkContrata para buscar normas, listar oportunidades, revisar proyectos y procurement, y crear/publicar oportunidades — todo con tus permisos (la API aplica el mismo aislamiento por empresa y los mismos roles que la web).

El servidor no reimplementa lógica: traduce las herramientas del asistente a llamadas a la API JSON de LinkContrata (/api/v1/*), autenticando con tu token personal.

1. Genera un token de API

En LinkContrata: Configuración → Tokens de API → Generar token.

  • Elige el alcance:
    • read — solo lectura (buscar, listar, ver). Recomendado para empezar.
    • read_write — además permite crear/publicar oportunidades, crear proyectos, enviar pujas. El servidor rechaza escrituras si el token es de solo lectura.
  • Copia el token (lct_…) en ese momento: no se vuelve a mostrar.

2. Configúralo en tu asistente

En Claude Desktop / Claude Code añade el servidor a tu configuración MCP (en Claude Desktop: Settings → Developer → Edit Config) con el mismo bloque JSON de arriba, poniendo tu token en LINKCONTRATA_TOKEN. LINKCONTRATA_URL es opcional (default https://linkcontrata.lat). Reinicia el asistente y pídele, por ejemplo: "busca normas sobre plazos de apelación de la buena pro" o "lista mis oportunidades abiertas".

3. Herramientas

Lectura (cualquier token): whoami, dashboard_summary, search_regulations, list_regulatory_documents, get_regulatory_document, list_opportunities, get_opportunity, list_recommendations, list_projects, get_project, list_packages, list_contracts, list_bids, get_bid.

Escritura (requiere read_write): create_project, promote_project_to_marketplace, create_opportunity, publish_opportunity, submit_bid, send_contact_message. Las acciones destructivas (borrar) se omiten a propósito en esta versión.

promote_project_to_marketplace es la operación de un paso para llevar un proyecto al marketplace: crea/reutiliza su paquete, crea la oportunidad y la publica (idempotente). Respaldada por POST /api/v1/projects/projects/:id/promote_to_marketplace.

Seguridad

  • El token viaja como Authorization: Bearer … a la API; nunca se almacena el token en claro del lado del servidor (solo su hash SHA-256).
  • El asistente solo puede hacer lo que tú podrías hacer en la web — la API scopea por tu empresa y aplica las políticas (Pundit) en cada llamada.
  • Revoca un token cuando quieras desde Configuración → Tokens de API.

Desarrollo

Los comandos de build son los mismos del bloque Development de arriba. Transporte: stdio. Para un conector remoto en claude.ai (OAuth 2.1) ver docs/MCP_PLUGIN.md en el repo principal.