v0.37 Release: The Smarter Project MCP Server Reads the Blog, Every Repository and Every Manifest Schema

Every Smarter platform runs the Smarter Project MCP server, which answers questions about Smarter from its own source code and documentation. Until now it read 8 of the project’s public repositories, and nothing else. v0.37 gives it the rest of what the project has written, namely the blog, 13 more repositories, and the exact schema of every manifest the platform accepts.

What’s newWhat it does
The blogTwo new tools, search_blog and read_blog_post, search and read every post on blog.smarter.sh, including its illustrations.
21 repositoriesThe example manifests, Stackademy, the Smarter Chat integrations, the extensions and their registry, cache-results and smarter-types.
Manifest schemasA new tool, get_manifest_schema, returns a resource kind’s example manifest and one line for each of its fields.
Illustrations in answersImages in the blog and in the Sphinx docs reach the LLM as links with descriptions, so Smarter Chat can show them.

This is a small release, with no migrations and no new settings. If you already use the MCP server, from a platform chatbot or from your own MCP client, it simply knows more.


Answers that include the blog

The reference documentation says what a feature does. The blog often says why it was built that way, and where it stops working. An LLM that only reads the docs gives answers that are accurate but incomplete. Asked how Smarter keeps passwords out of its logs, it described the SecretStr type and missed the post that explains the whole approach and its limits.

The server now indexes every published post on blog.smarter.sh, and two new tools read them.

  • search_blog returns ranked passages from the posts.
  • read_blog_post reads a post, 400 lines at a time, by its path or its URL. Given a wrong path, it suggests posts that might be the right one.

The server’s instructions now tell the LLM to search the blog together with the documentation whenever someone asks why or how something works. Each post starts with its title, dates and URL, so any passage the LLM quotes can be cited.

  • Kept up to date. The blog is indexed hourly, together with the repositories. When no post has changed, nothing is stored again. If the blog can’t be reached, the existing index is kept.
  • Only on the endpoint of every repository. The blog tools are served at /api/v1/mcp/smarter-project/, not on the single-repository endpoints such as /api/v1/mcp/smarter-project/smarter-cli/.

Every repository that answers questions

The server read the platform, the CLI, the three SDKs, the VS Code extension, the infrastructure and the deploy repository. It now reads 21 repositories. These are the 13 new ones.

  • Examples are example-manifests and stackademy.
  • Smarter Chat integrations are smarter-wordpress, smarter-drupal, smarter-shopify, smarter-gtm-template and smarter-docs-site-generators.
  • Extensions are extensions-registry, and the calculator, date-calculator and weather extensions.
  • Packages are cache-results, with its own published docs, and smarter-types.

So a question like “How do I add a Smarter chatbot to my WordPress site?” is now answered from the WordPress plugin’s own code and README. The marketing sites, the Homebrew tap and the community repository are left out, because they answer no questions.


Manifests written from the schema, not from memory

To write a manifest, the LLM had to guess search terms until it found the right JSON Schema, and a schema is too large and too nested to read whole. The result was manifests with plausible field names that the platform rejects.

get_manifest_schema returns a kind’s example manifest as YAML, followed by one line for each field, giving its path, type, whether it’s required, its default and its description. Called without a kind, it lists the kinds. It reads the platform’s own committed JSON Schemas and examples, the same files the API contract is built from, so it describes exactly what that platform accepts. Every kind except LLMClient fits in one result; for LLMClient’s last few fields, it links to the full schema.

Every endpoint serves it, and the server’s instructions tell the LLM to call it before it writes, fixes or explains a manifest.


Illustrations the LLM can show

Blog posts and docs pages have diagrams, and until now the LLM couldn’t use any of them. Blog images were dropped from the index, and Sphinx image and figure directives reached the LLM as file paths it couldn’t turn into links.

Now each illustration becomes a Markdown image with its published URL. Its description is the image’s alt text, or a figure’s caption, which is the only way the LLM can know what an image shows. The server’s instructions tell the LLM to include an illustration when it shows what was asked, and Smarter Chat displays it. Ask the Smarter Developer Guide for “a diagram of how Smarter’s network policies isolate its pods”, and the answer can include the diagram.


Using it

The platform’s built-in chatbots use the new tools as soon as the platform is upgraded. The built-in smarter_project MCPClient, which reads every repository and the blog, now allows all eight tools.

apiVersion: smarter.sh/v1
kind: MCPClient
metadata:
  name: smarter_project
  description: Searches and reads the documentation, https://docs.smarter.sh, the source code of every GitHub repository of The Smarter Project, and the blog, https://blog.smarter.sh.
  version: 1.0.0
spec:
  config:
    transport: http
    endpointUrl: ${environment_platform_scheme}://${environment_platform_domain}/api/v1/mcp/smarter-project/
    authType: none
    allowedTools:
      - get_repository_overview
      - search_documentation
      - search_code
      - read_file
      - list_files
      - get_manifest_schema
      - search_blog
      - read_blog_post
    includeInstructions: true

The nine single-repository MCPClients, smarter_project_github*, allow get_manifest_schema too. The Smarter Developer Guide chatbot has new example prompts, one for each new capability.

Any other MCP client can use the server as well. It needs no authentication, and every tool is read-only. Here is how to add it to Claude Code.

claude mcp add --transport http smarter-project https://<your-smarter>/api/v1/mcp/smarter-project/

📖 Smarter Project MCP Server documentation


Upgrading

  • Nothing to migrate or configure. Blog posts are stored in the same index as the repositories, so there are no new tables.
  • Indexing starts by itself. manage.py initialize_platform queues the indexing of the repositories and the blog, and Celery Beat refreshes both every hour. To index now, run manage.py index_smarter_project; --blog indexes only the blog.
  • The built-in MCPClients are updated from the example manifests repository when initialize_platform runs, which allows the new tools.
  • GitHub’s rate limit. The hourly refresh now makes 21 unauthenticated requests to the GitHub API. GitHub allows 60 an hour for each IP address, so three or more platforms behind one outbound address will reach the limit. When that happens the existing index is kept, and is refreshed on a later run.
  • Known limit. Indexes of repositories that have since been removed, such as the archived smarter-chat, are not deleted yet.

What’s next

Next, the server should clean up the indexes of repositories it no longer reads, and make the hourly refresh share GitHub’s rate limit better between platforms behind one address.

The full list of changes is in the changelog. To try the release, start with the documentation, or browse the code on GitHub.