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

@iflow-mcp/jessebautista-mcp-openproject-smithery

v1.0.2

Published

MCP server for interacting with OpenProject (Smithery Edition)

Downloads

20

Readme

smithery badge

MCP Server for OpenProject (Smithery Edition)

This project provides a Model Context Protocol (MCP) server for OpenProject, designed for deployment and use with Smithery. It exposes a set of tools for interacting with a self-hosted OpenProject instance, and is compatible with Smithery's HTTP transport and tool listing requirements.

About this MCP Server

  • Built with TypeScript and Node.js using the @modelcontextprotocol/typescript-sdk.
  • Exposes OpenProject CRUD tools for projects and tasks (work packages).
  • Designed for easy deployment to Smithery, with Docker support and a minimal, production-ready structure.
  • Supports local development and testing with MCP Inspector and Smithery tools.

Implemented OpenProject Tools

  • Projects:
    • openproject-create-project: Creates a new project.
    • openproject-get-project: Retrieves a specific project by ID.
    • openproject-list-projects: Lists all projects (supports pagination).
    • openproject-update-project: Updates an existing project's details.
    • openproject-delete-project: Deletes a project.
  • Tasks (Work Packages):
    • openproject-create-task: Creates a new task within a project.
    • openproject-get-task: Retrieves a specific task by ID.
    • openproject-list-tasks: Lists tasks, optionally filtered by project ID (supports pagination).
    • openproject-update-task: Updates an existing task (requires lockVersion).
    • openproject-delete-task: Deletes a task.

Prerequisites

  • Node.js (v18 or later recommended)
  • npm
  • An OpenProject instance accessible via URL
  • An OpenProject API Key
  • (Optional) Docker for containerized builds

HTTP Entrypoint and Local Development

This MCP server now uses Express and the official MCP Streamable HTTP transport. The server is accessible at http://localhost:8000/mcp after running npm run dev or npm start.

Entrypoint code (see src/index.ts):

import express from "express";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

const app = express();
app.use(express.json());

const mcpServer = setupMCPServer();
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
mcpServer.connect(transport);

app.all("/mcp", (req, res) => {
  transport.handleRequest(req, res, req.body);
});

app.get("/", (_req, res) => res.send("MCP OpenProject server is running!"));

const PORT = process.env.PORT || 8000;
app.listen(PORT, () => {
  console.log(`MCP server running on port ${PORT}`);
});
  • The /mcp endpoint is the main MCP HTTP endpoint for Smithery and MCP clients.
  • The root / endpoint is a health check.

Running Locally

  1. Install dependencies:
    npm install
  2. Build the project:
    npm run build
  3. Start the server (dev mode):
    npm run dev
    # or for production
    npm start
  4. Access the MCP endpoint at http://localhost:8000/mcp

Docker Usage

Build and run as before:

docker build -t mcp-openproject-smithery .
docker run --rm -p 8000:8000 --env-file .env mcp-openproject-smithery

Smithery Deployment

This project is ready for Smithery. The /mcp endpoint is compatible with Smithery's HTTP transport requirements.

See your live Smithery server here: smithery badge

Local Testing with MCP Inspector

You can test your MCP server locally using the MCP Inspector:

npx @modelcontextprotocol/inspector npx mcp-remote@next http://localhost:8000/mcp

Open the Inspector URL (usually http://localhost:6274) in your browser to interact with your tools.

Project Structure

  • src/index.ts — Main MCP server logic
  • smithery.yaml — Smithery server configuration
  • Dockerfile — Production-ready Docker build
  • tsconfig.json — TypeScript configuration
  • package.json — Project dependencies and scripts

License

MIT


This project is maintained for use with Smithery and the Model Context Protocol. For more information, see: