Advertisement · 728 × 90

Posts by Fritz Lekschas

The Story Behind MCP-Web | MCP-Web Expose frontend state and actions as MCP tools for AI agents

If you're curious about the philosophy and design decisions behind MCP-Web, keep on reading at mcp-web.dev/made-with-love.

2 months ago 0 0 0 0
Post image

MCP-Web also lets you trigger AI queries directly from the frontend. Your app can "ask" AI questions, not just respond to AI requests. As an example, checkers.demo.mcp-web.dev is a checkers game where you play against AI. But since the app is AI-controllable, you can also let AI play against AI.

2 months ago 0 0 1 0
Post image

To build AI-controllable frontend apps with MCP-Web, you need to model your frontend state declaratively. Break your state into atomic and derived units, and describe it with Zod schemas. Exposing your state as tools is then straightforward. MCP-Web comes with utilities to streamline all this.

2 months ago 1 0 1 0
Post image

Another benefit is when your UI has rich ephemeral state that shouldn't live in a db. Think of dashboards or
visualization tools with crossfilters, selections, and dynamic color scales. These view models are often larger than the data model itself.

See higlass.demo.mcp-web.dev as an example

2 months ago 0 0 1 0
Post image

This approach makes the frontend the main control surface, which has a few benefits. Primarily, it makes human-AI parity easy. Humans control state through UIs and AI controls the same state through tools. So both have the same capabilities, which also enables mixed-initiative interactions

2 months ago 0 0 1 0
Post image

With MCP-Web, your frontend app becomes the MCP server. AI doesn't need to parse HTML to identify possible actions. It gets typed tools to directly manipulate your frontend app's state like your UIs do.

Try it: todo.demo.mcp-web.dev is a todo app that either you or AI can fully control.

2 months ago 0 0 1 0
Video

Did you ever want to control frontend apps through AI while being able to take over at any point? I built a library called MCP-Web that lets you expose state, actions, and UI as MCP tools+apps for AI while maintaining human agency.

Code: github.com/flekschas/mc...
Docs: mcp-web.dev

2 months ago 1 1 1 0
Video

I'm proud to announce the latest release of 🧬 #Oxbow 🏹, with new features to make NGS data analysis more powerful, efficient, and "composable".

Learn more at: oxbow.readthedocs.io

9 months ago 24 13 2 2

Ohhhhh nice shortcut ✨

1 year ago 0 0 0 0
Advertisement
Preview
GitHub - flekschas/jupyter-scatter: Interactive 2D scatter plot widget for Jupyter Lab and Notebook. Scales to millions of points! Interactive 2D scatter plot widget for Jupyter Lab and Notebook. Scales to millions of points! - flekschas/jupyter-scatter

To test it yourself, head to github.com/flekschas/ju..., clone the repo, cd into notebooks, and run `juv run dimbridge.ipynb`. This requires juv (github.com/manzt/juv), a super handy new tool from @manzt.sh that makes Jupyter Notebooks reproducible! I highly recommend you check it out if you haven't

1 year ago 11 3 1 0
Preview
Extricating human tumour immune alterations from tissue inflammation - Nature Complementary single-cell approaches show that a population of regulatory T cells co-expressing ICOS and IL-1 receptor type 1 is highly enriched in tumours but not in site-matched inflamed non-maligna...

Using a single-cell surface protein dataset, you can use Jupyter Scatter to select points and have DimBridge compute the key protein expressions. You can also contrast two or more selections or use the brush selection to study a sequence of selections in the dataset.

1 year ago 0 0 1 0
Preview
DimBridge: Interactive Explanation of Visual Patterns in Dimensionality Reductions with Predicate Logic Dimensionality reduction techniques are widely used for visualizing high-dimensional data. However, support for interpreting patterns of dimension reduction results in the context of the original data...

To test the new brush selection, I combined JScatter w/ DimBridge (arxiv.org/abs/2404.07386) a method to identify key dims in the high-dim space that explain a subset of points in the embedding. The idea is to tell you which handful of dims from the dataset can explain patterns in the embedding.

1 year ago 1 0 1 0
Preview
GitHub - flekschas/regl-scatterplot: Scalable WebGL-based scatter plot library build with Regl Scalable WebGL-based scatter plot library build with Regl - flekschas/regl-scatterplot

The brush selection can be useful when working with temporal or sequential patterns. Huge kudos to Andres Colubri who brought up that idea and the initial implementation for regl-scatterplot (Jupyter Scatter's rendering engine github.com/flekschas/re...).

1 year ago 0 0 1 0
Video

A new version of Jupyter Scatter (jupyter-scatter.dev) is out: v0.21.0. 🥳 This version introduces fun new ways to select points using either a brush or rectangle. You can now also more easily extend or reduce a selection by holding down the meta (CMD on macOS) key or alt key respectively.

1 year ago 17 3 1 1

See the full changelog at github.com/flekschas/ju... and let me know what you think!

And most importantly, Guten Rutsch and Happy New Year! 🥳

1 year ago 0 0 0 0

Under the hood, we've modernized the tooling by switching to Biome for JS code formatting and uv for Python package management. The min Python version is now 3.9.

Again thanks to @manzt.sh for taking on the switch to uv. And a big shoutout to the wonderful folks behind Biome and uv 🙏

1 year ago 1 0 1 0
Preview
GitHub - OzetteTech/comparative-embedding-visualization: A Jupyter widget for comparing two embeddings with shared labels by their confusion, neighborhoods, and size. A Jupyter widget for comparing two embeddings with shared labels by their confusion, neighborhoods, and size. - OzetteTech/comparative-embedding-visualization

To give Jupyter Scatter a try is now easier than ever:

➡️ `uvx jupyter-scatter demo`

This fantastic feature is shamelessly copied from @manzt.sh who implemented it for cev github.com/OzetteTech/c.... Huuuge thanks Trevor 🙏

1 year ago 0 0 1 0

Another addition is the ability to change the points' zoom scale function to constant or linear. By default, points are scaled up using the inverse hyperbolic sine to reveal overlapping points as you zoom in. Finally, you can also now lock the camera view with to avoid zooming in as you scroll.

1 year ago 0 0 1 0
Video

My first 🦋 post before 2024 is a wrap 🫣: here is a new version of Jupyter Scatter! 🎉 This release adds support for full-screen mode, which makes it easier to explore large plots. You can also use it to create custom high-resolution exports.

➡️ github.com/flekschas/ju...
📚 jupyter-scatter.dev

1 year ago 4 0 1 0
Advertisement

Here it is!
The big thing is the (experimental) Environment API: our hope is it can serve as the foundation for frameworks that run code in multiple different JS runtimes.
The internal module runner refactors also pave the way for some interesting things down the road...

1 year ago 441 54 10 1