MCPSERV.CLUB
jameslong

Vancouver MCP Server

MCP Server

Add Model Context Protocol to Phoenix with ease

Stale(55)
39stars
1views
Updated 17 days ago

About

Vancouver is a lightweight Elixir library that integrates MCP functionality into Phoenix/Bandit servers, handling initialization, request validation, and providing helpers for creating tools and prompts.

Capabilities

Resources
Access data sources
Tools
Execute functions
Prompts
Pre-built templates
Sampling
AI model interactions

CI Badge

Overview

Vancouver is an MCP (Model Context Protocol) server library designed for the Elixir ecosystem, specifically targeting Phoenix and Bandit web frameworks. It abstracts away the repetitive boilerplate of initializing an MCP server, validating incoming requests, and wiring up tools and prompts. By handling these core responsibilities automatically, Vancouver allows developers to focus on implementing the business logic of their AI‑enabled features rather than plumbing HTTP endpoints and JSON schemas.

The server solves a common pain point for developers who want to expose custom tooling or prompt templates to large language models. Without Vancouver, a developer would need to manually parse the MCP request payload, validate it against JSON schemas, and return properly formatted responses. Vancouver provides macros ( and ) that generate the necessary boilerplate, enforce naming conventions, and expose helper functions like for quick response construction. This streamlines the process of creating new tools—such as a calculator or a code‑review helper—and prompts that can be invoked by an LLM client like Claude.

Key features include:

  • Tool and Prompt registration: Declare tools and prompts as modules, then register them in the router. Vancouver automatically exposes them under a single endpoint.
  • Schema validation: Each tool can define an that is automatically checked against incoming data, ensuring robust error handling.
  • Simplified response helpers: Built‑in functions for sending text or structured responses reduce boilerplate and potential bugs.
  • Integration with MCP clients: The server can be discovered by external clients (e.g., Claude Desktop) via a simple JSON configuration, enabling seamless tool invocation without custom client code.

Real‑world use cases abound: a DevOps team can expose an “inspect logs” tool that streams log entries to the LLM; a data science platform can offer a “run analysis” prompt that triggers pre‑built notebooks. In each scenario, Vancouver handles the protocol handshake, leaving developers to implement domain logic.

Because it is written in Elixir, Vancouver benefits from Phoenix’s high concurrency and Bandit’s lightweight request handling. The library is intentionally minimal, making it straightforward to extend or fork for streaming responses, additional MCP features, or custom authentication. While still in early development and lacking full protocol support (e.g., streaming), Vancouver provides a solid foundation for rapid MVPs that integrate AI assistants with custom tooling.