Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I know this is a somewhat big feature and I should've discussed first...but I'm testing my library to build MCP servers https://github.com/paoloricciuti/tmcp and when I realised I could build one for you guys I said why not!
It's basically an evening of work so if you prefer to just trash it don't worry at all, I fully understand (also both @stolinski and @w3cj know me, so I would never get mad at them 😝).
This adds a remote MCP server to interact with the Syntax catalogue with an LLM. There are two main parts of the server:
Tools
There are three tools available
list_episodes
This tool as the name suggests list all the episodes with their number, title and show notes. It can accept a query (comma separated list of queries) and a year cutoff (defaulting to the current year). This is the basic tool that can allow the LLM to get SOME info based on the user query...as you can see in the attached video, I've asked for svelte videos, and it picked some shows where svelte was featured. The year cutoff is to allow the user to go further back in time in case it's looking for something older than the current year.
get_episode
This is to get a lot more information about a single show...it contains the links to see the show, the guest's info, even the transcript
(although since I couldn't seed the DB with a transcript locally I have no idea of how it looks like...it seems it might be a big object so maybe we should mangle it a bit before returning it)...speaking of...Edit: I went ahead and converted the transcript to string before returning it...it feels better.
get_transcript
It's a more specific tool to only get the transcript of a specific show...in this case I did try to generate a format that was better understandable by the LLM.
Resources
show_info
There's one single resource template with the list of all the shows. This means that in terms of actual resources every single episode will be available, the user can search for it, select it and the LLM will already have that episode in context.
The same applies for the transcript, we probably want to reduce it to a single string that is more manageable for the LLM.Edit: I went ahead and converted the transcript to string before returning it...it feels better.
If we merge this once deployed, the MCP server will be available on
https://syntax.fm/mcp
for everyone to use and if you want to test it you can also use the deployed version (dunno if it's connected to a DB tho)Let me know what you think and if you want to make some changes!
Here's a video of how the experience could look like in VS Code
syntax.mcp.mp4