Skip to main content
Glama

Bixi MCP Server

License pre-commit

Description

A local (stdio) MCP server exposing the BIXI Montréal bike-share API, via bixi-sdk, as tools for MCP clients.

Related MCP server: mcp-cli-catalog

Tools

  • list_stations — list all Bixi stations currently in service.

  • list_rides — list the current member's ride history (paginated via offset).

Installation

The server can be run directly with uvx — no separate install step required.

Configuration

The server authenticates with your Bixi account using the BIXI_USERNAME and BIXI_PASSWORD environment variables.

Example configuration for an MCP client (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "bixi": {
      "command": "uvx",
      "args": ["bixi-mcp"],
      "env": {
        "BIXI_USERNAME": "your-username",
        "BIXI_PASSWORD": "your-password"
      }
    }
  }
}

Development

pip install -e .[dev]
pre-commit install

Available Tools

2 tools
list_ridesA

List the current member's ride history.

Args: offset: Number of most-recent rides to skip, for pagination. Defaults to 0, which returns the full ride history.

Returns: A list of rides, most recent first.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It states results are ordered 'most recent first' and explains the offset pagination behavior, but doesn't mention auth requirements, limits on result count beyond offset, or any side effects. For a read-only listing tool this is reasonable, though the offset semantics (default returning 'full ride history') could imply unbounded results that deserve more disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact with three short sections (summary, Args, Returns). Every sentence earns its place, covering purpose, parameter semantics, return ordering, and the default behavior. Structurally clean and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value format is covered structurally. The tool is simple (1 optional param), and while not exhaustive about auth or result limits, the description covers the key behavioral aspects: what it returns, ordering, and pagination semantics. For a low-complexity read tool, this is reasonably complete despite no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single 'offset' parameter. It does explain offset as 'number of most-recent rides to skip, for pagination' and notes the default of 0 returns full history — this adds meaning beyond the schema's bare integer type. However, it doesn't clarify if offset is distinct from page-based pagination or what happens at bounds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists 'the current member's ride history' — a specific verb+resource+scope. It distinguishes itself from the sibling 'list_stations' by focusing on the member's rides rather than stations, though it doesn't explicitly differentiate, the resource implied (rides vs stations) makes the distinction clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (listing a member's rides) but provides no explicit when/when-not guidance or alternatives. It doesn't address when to choose this over list_stations, though the distinct resource makes selection fairly obvious. No exclusions or explicit alternatives named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_stationsA

List all Bixi stations currently in service.

Returns: A list of stations, each with id, name, lat, and lng.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the transparency burden. The description adds meaningful context: it's a read-only operation ('currently in service' implies a snapshot query). It also discloses the return structure (each with id, name, lat, lng), which is helpful behavioral context. However, it doesn't say much about pagination, size limits, or data freshness, which for a list tool could matter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste. The description is front-loaded with the primary purpose and immediately follows with the return structure. Every sentence earns its place. Perfectly sized for a simple listing tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with an output schema present, the description is largely complete. It states what's returned (station list with id, name, lat, lng). It could enhance completeness by clarifying data freshness (live vs cached), but given the output schema exists and there are no params, this is quite sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, so there are no params to document. With zero parameters, the baseline of 4 applies. The description's mention of returning id, name, lat, and lng gives useful context about what data shape to expect, which is helpful even without parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: 'List all Bixi stations currently in service.' The verb is specific (list), resource identified (Bixi stations), and scope indicated ('currently in service'). Distinguishes from sibling list_rides by naming 'stations' specifically. Could be higher if it contrasted with the sibling, but purpose is explicit and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (listing stations in service) but provides no explicit guidance on when to use this vs list_rides. While the tool names make the distinction fairly obvious (stations vs rides), there's no explicit when/when-not guidance or mention of alternatives. Adequate implied guidance for a zero-parameter listing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.0
    • First observedlist_rides
    • First observedlist_stations

TDQS

A3.7/5.0

Scored across 2 tools

Disambiguation5/5

The two tools target completely different domains: station availability/location versus the member's ride history. There is no possibility of confusing list_stations with list_rides. Each has a clearly distinct purpose.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (list_stations, list_rides), using snake_case throughout. The naming convention is uniform and predictable.

Tool Count3/5

With only 2 tools, the server feels quite thin for what appears to be a bike-sharing service. While both tools are useful, the scope of a Bixi server would naturally extend to more operations, meaning the count sits at the borderline low end.

Completeness2/5

The surface is notably incomplete. It provides station listing and ride history, but lacks obvious operations such as finding available bikes/docks, checking station real-time availability, or any ride lifecycle actions. The read-only surface covers only a narrow slice of the domain.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A dual-transport MCP server that exposes your API as tools to LLM clients, supporting both stdio transport for local clients like Claude Desktop and HTTP/SSE transport for remote clients like OpenAI's Responses API.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that publishes CLI tools on your machine for discoverability by LLMs
    7 npm
    1
    MIT