Bixi MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bixi MCP Servershow me the Bixi stations near Old Montreal"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bixi MCP Server
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 viaoffset).
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 installAvailable Tools
2 toolslist_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.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.0- First observed
list_rides - First observed
list_stations
TDQS
Scored across 2 tools
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.
Both tools follow a consistent verb_noun pattern (list_stations, list_rides), using snake_case throughout. The naming convention is uniform and predictable.
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.
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
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
A paid remote MCP for CLI tool MCP, built to return verdicts, receipts, usage logs, and audit-ready
MCP server for progressive tool usage at any scale (see https://klavis.ai)
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that publishes CLI tools on your machine for discoverability by LLMs7 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server exposing Basecamp CLI commands as tools for project management, todos, messages, and more.MIT
- AlicenseBqualityCmaintenanceLocal MCP server aggregating Métropole de Lyon open data services (transit, bike-sharing, parking, traffic, facilities, waste) behind 10 read-only tools for use with any stdio MCP client.10MIT