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

philoscopia-mcp

v0.3.0

Published

MCP server for the Philoscopia referential: explore 75 axes of philosophical positions, compare figures, and build your own philosophical profile in a local, private workspace.

Readme

philoscopia-mcp

An MCP server that lets any LLM work with the Philoscopia referential: explore the axes of philosophical positions, read figures' profiles, and build your own philosophical profile in a local, private workspace.

Everything runs on your machine. The corpus is bundled in the package (each version pins one exact state of the referential); the server makes no network calls, and your workspace is a plain folder of JSON and markdown you own, read, edit and version as you wish.

Setup

With Claude Code:

claude mcp add philoscopia -- npx -y philoscopia-mcp --workspace ~/my-philosophy

With Claude Desktop (or any MCP client), add to the configuration:

{
  "mcpServers": {
    "philoscopia": {
      "command": "npx",
      "args": ["-y", "philoscopia-mcp"]
    }
  }
}

Options: --workspace <dir> (default $PHILOSCOPIA_WORKSPACE, then ~/my-philosophy) and --locale fr|en (once a workspace exists, its manifest's locale wins). In a JSON client config, pass --workspace an absolute path — ~ is only expanded by a shell.

Tools

Guidance — the server also ships instructions (injected into the assistant's context at connection), so any MCP client knows how to proceed without extra setup:

| Tool | Purpose | |---|---| | help | The full usage guide: typical session flow, recording rules, rules of care | | orient | The session-opening overview, meant to be restated simply to the user: what the referential offers, who the user is (expertise, goals, motivations), where their carnet stands, the thread left open last time, and the session menu |

Referential (read-only):

| Tool | Purpose | |---|---| | list_axes | Compact digest of all axes (id, question, poles), grouped by relation — the entry point | | get_axis | One axis: poles, stakes, anchor figures, per-pole canonical arguments (sub-problems split out, see below) | | get_axis_problems | The axis's map of live sub-problems, for in-depth exploration | | get_entity | Any entity by prefixed ref: ph:epictetus, c:eudaimonia, arg:… (an argument/objection)… — figures arrive as a digest (full:true for the whole profile) | | get_position | One figure's sourced position on one axis (axisId) or several (axisIds) | | search | Substring search across the whole corpus (diacritics-insensitive) | | get_tensions_for | Position pairs in tension involving an axis | | get_foundations_for | Grounding relations (belief → belief/value) involving an axis |

Workspace (local files, schema-validated on every write):

| Tool | Purpose | |---|---| | init_workspace | Create my-philosophy/ (manifest, empty profile and collections), optionally with the user block | | set_user | Update who the user is: expertise (BEGINNER / AMATEUR / EXPERT), goals and motivations in their own words — the register every session adapts to | | get_profile / record_position | Read and record positions on the axes, with provenance, reasons and an append-only history | | add_entry / update_entry / list_entries | Personal beliefs, concepts, loves & hates, open inquiries, practices, kept quotes (the florilège — always verbatim) and the reading register (with a TO_READ reading list) | | log_session | Write the session's narrative to journal/; optionally set next, the thread to pick up next time (served back by orient) | | profile_summary | Coverage, triggered tensions, ungrounded beliefs, open work; optionally regenerates the readable summary.md | | get_syntheses / write_synthesis | Read past profile syntheses and write a new one: a dated, immutable prose portrait in syntheses/, crossing positions, carnet and user block (see the philo-synthesize skill) | | compact | Move closed records to archive/ (nothing is deleted) |

The workspace file format is specified by the published JSON Schemas; every write is validated against them, plus the rules schemas cannot carry (a POSITIONED entry needs a value, values must fit the axis's pole shape, referential refs must resolve). The server only ever touches the files the format names: extra files another writer keeps in the same folder (e.g. the web app's local vault: session.json, notes/, Inbox.md) are ignored, and a ref that stopped resolving after a corpus update is surfaced by profile_summary, never a write blocker.

Going further: the exploration skills

The server alone guides your assistant through the basics (the built-in guide above). For real sessions, seven exploration skills add the conversational craft: guided discovery through six doors, Socratic examination with an intensity dial, figure comparison, difficulty-driven text reading, concept work, formulation training, and the dated profile synthesis. A skill is just a markdown instruction sheet your assistant reads — nothing executes; the skills README walks you through setup for each client, including a zero-install option (paste the skill's content into the conversation).

What to ask your assistant

  • "Show me the axes about the self, and let's find where I stand on free will."
  • "Challenge my position on FREEDOM with a thought experiment, then record what survives."
  • "Compare my profile with Epictetus."
  • "Summarize my philosophy and what's left unexamined."

Development

Inside the repo the server reads ../data live (no bundling needed):

cd mcp && npm install && npm run smoke   # build + end-to-end test over stdio

npm pack/npm publish snapshot ../data and ../schemas into the package via the prepack hook.

License

MIT (code). The bundled corpus is CC BY-SA 4.0.