mcp-server-runescape
Click on "Install 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., "@mcp-server-runescapeWhat's the price of a dragon scimitar?"
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.
mcp-server-runescape
This is an MCP server with tools for interacting with RuneScape (RS) and Old School RuneScape (OSRS) data, including item prices, player hiscores, and more.
https://github.com/user-attachments/assets/7c141575-443b-4b76-8b33-6d48ec82fbe7
Features
The MCP server provides several tools which are used to answer your questions during gaming with data from accurate sources.
1. Item Details (get_item_details)
Retrieve comprehensive information about tradeable items, including:
Current price in the Grand Exchange
Price trends (24h, 30, 90, and 180 days)
Name
Category
Description (examine text)
Image
Members
ID
https://runescape.wiki/w/Application_programming_interface#detail
2. Item Price History (get_item_price_history)
Access the price history of an item over the last 180 days, including:
Price on a given day (timestamp)
Average price on a given day (timestamp)
https://runescape.wiki/w/Application_programming_interface#Graph
3. Player Hiscore (get_player_hiscore)
Fetch rankings and experience for skills and activities of any player, including:
Player rank
Skill level
Experience points
Activity scores
https://runescape.wiki/w/Application_programming_interface#Hiscores_Lite_2
4. Top Rankings (get_top_rankings)
View the top (max 50) players for a specific skill or activity, including:
Name
Score (used for both skill and activity)
Rank
https://runescape.wiki/w/Application_programming_interface#ranking
5. Player Count (get_player_count)
Gets the number of players currently online in RuneScape and Old School RuneScape, including:
Real-time player counts
https://runescape.wiki/w/Application_programming_interface#player_count
6. Account Totals (get_rsuser_total)
Gets the current amount of accounts created that can access any form of RuneScape. This includes accounts made on FunOrb or a particular version of RuneScape, including:
Historical accounts creation data
https://runescape.wiki/w/Application_programming_interface#rsusertotal
Note
For consistency I tried to only use API endpoints which support both RS and OSRS data.
Related MCP server: OSRS-STAT
Example Use Cases
The goal is for you to have an easy way to fetch more accurate data right from the source while scaping.
Here are some example queries you can ask the AI when using this MCP server:
Item Details
"What is the price of a dragon scimitar in the Grand Exchange?"
"Torva full helm price"
"Current price of a dragon pickaxe"
"How much percentage has the price of a dragon pickaxe changed in the past 30 days?"
"How much percentage has the price of a dragon pickaxe changed in the past 90 days?"
"How much percentage has the price of a dragon pickaxe changed in the past 180 days?"
"Give me the description of an armadyl godsword"
"Give me the icon of a dragon scimitar"
"What is the id of an abbyssal whip?"Item Price History
"Give me the price history of a dragon scimitar"
"Rune scimitar price on 1 april 2025?"Player Hiscore
"What rank is Zezima?"
"What rank is Zezima on runescape?"
"How much experience does Lynx Titan have overall?"
"Iron Hyger ironman rank?"Top Rankings
"Top 10 players overall?"
"Give me the top 50 attack rankings"
"Number one agility on runescape?"
"Most zulrah kills?"
"Give me the top 5 jad rankings"Getting Started
You can use the MCP server in many clients, for example:
Claude desktop
Cursor
1. Add the MCP server in your config (NPM Package)
Paste this snippet in your mcp config that your client is using
{
"mcpServers": {
"mcp-server-runescape": {
"command": "npx",
"args": ["-y", "mcp-server-runescape"]
}
}
}You can find the config file in (mac):
Claude desktop:
~/Library/Application Support/Claude/claude_desktop_config.json
Cursor:
/Users/name/.cursor/mcp.json
2. From Source
Required Node.js installed on your system
Clone this repository
Install dependencies:
yarnor
npm installThen update your Claude desktop or Cursor with:
{ "mcpServers": { "mcp-server-runescape": { "command": "node", "args": ["/Users/path/to/mcp-server-runescape/src/server.js"] } } }Optional: Run the debugger/inspector
yarn devor
npm run build
Make sure to:
Replace
/path/to/mcp-server-runescapewith the actual path to your installation.
After updating the configuration, restart Claude desktop or Cursor for the changes to take effect.
Personal preference
You can use any client you want, my personal preference goes to Cursor at the moment in combination with deepseek-v3.1 which is performing really well.
API Documentation
For detailed information about the Runescape API endpoints used by this MCP server, visit: RS/Wiki API
Thank you
I built this over the weekend, to learn a bit more about MCP servers. Runescape was the perfect subject to try it out on.
Shout out to the rs/wiki team for the docs and API.
If this helps you out in anyway when scaping and you would like to support me, feel free to

Available Tools
6 toolsget_item_detailsA
Returns the current price and price trends information on tradeable items in the Grand Exchange, the category, item image and examine for the given item.
Examples:
- Single: "What is the price of a dragon scimitar?"
- Multi comparison: "Compare the price of a dragon scimitar and a rune scimitar"
- "Torva full helm price"
- "Current price of a dragon pickaxe"
- "How much percentage has the price of a dragon pickaxe changed in the past 30 days?"
- "How much percentage has the price of a dragon pickaxe changed in the past 90 days?"
- "How much percentage has the price of a dragon pickaxe changed in the past 180 days?"
- "Give me the description of an armadyl godsword"
- "Give me the icon of a dragon scimitar"
- "What is the id of an abyssal whip?"
| Name | Required | Description | Default |
|---|---|---|---|
| gameMode | Yes | The mode of the game, this can be "osrs" or "rs". osrs = old school runescape, rs = runescape | osrs |
| itemName | Yes | The name of the item you want to get the details for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It does disclose the return fields and supports example query patterns, but it does not mention error handling, exact-name matching behavior, data freshness, or limitations beyond 'tradeable items.' The read-only nature is only implied by 'Returns.'
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 opening sentence is dense and front-loaded, but the eight example bullets include repetitive variants (30/90/180-day changes) and could be trimmed significantly. While examples are helpful, the description is longer than necessary.
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 simple lookup tool with no output schema and no annotations, the description is fairly complete: it lists the output categories and provides a wide range of example queries. It lacks explicit output structure and error-condition details, but overall it gives adequate context for an agent to understand when and how to use the tool.
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 schema covers 100% of parameters with clear descriptions, so the baseline is 3. The description adds example queries, but it introduces ambiguity by showing 'Compare the price of a dragon scimitar and a rune scimitar' while itemName is a single string parameter, leaving multi-item handling unclear.
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 opens with a specific verb 'Returns' and details the resource: current price, price trends, category, image, and examine for tradeable Grand Exchange items. This clearly states what the tool does and distinguishes it from the sibling get_item_price_history, which focuses on historical price series.
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 examples provide clear usage contexts, such as single item queries, price comparisons, percentage changes over 30/90/180 days, and retrieving description/icon/id. However, it does not explicitly state when to prefer get_item_price_history or mention exclusions, relying on implied context rather than direct alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_item_price_historyA
Returns the prices each day of a given item for the previous 180 days. This is useful for seeing the price trends of an item over time. Usefull for when someone asks all price history of an item.
Examples:
- Single: "Price history of a dragon scimitar?"
- Multi comparison: "Compare all price history of a dragon scimitar and a rune scimitar"
- "All prices for a dragon scimitar"
- "Rune scimitar price on 1 april 2025"
| Name | Required | Description | Default |
|---|---|---|---|
| gameMode | Yes | The mode of the game, this can be "osrs" or "rs". osrs = old school runescape, rs = runescape | osrs |
| itemName | Yes | The name of the item you want to get the price history for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It discloses that the tool is a read-only query returning daily prices over a 180-day window, but doesn't mention data freshness, error handling, or any access constraints.
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 concise but includes several examples that reinforce usage. The redundant 'Usefull for...' sentence and minor typo prevent a 5, but the structure is clear and front-loaded.
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?
The examples include comparing two items and asking for a specific future date (1 April 2025), which could mislead the agent into thinking the tool accepts multiple items or arbitrary date queries. The description doesn't clarify that only a single item is accepted or that data is limited to the previous 180 days relative to now.
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 input schema fully documents both parameters (itemName and gameMode) with descriptions, so the description doesn't need to add parameter semantics. The examples illustrate query phrasing but don't add new information about the parameters themselves.
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 states 'Returns the prices each day of a given item for the previous 180 days', which is a specific verb, resource, and time scope. It clearly differentiates from sibling tools like get_item_details or player-focused tools.
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 says it's 'useful for seeing price trends' and includes query examples covering single and comparative requests. It doesn't explicitly name alternatives or exclusions, but the context of siblings makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_player_countA
Returns the number of players currently online in RuneScape and Old School RuneScape.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of behavioral disclosure. It honestly describes the core function (returning a count), but provides no additional context such as whether the count is live/cached, whether it covers all worlds, or any potential limitations. This is acceptable for a simple read-only tool, but leaves some ambiguity about 'currently online'.
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 a single, front-loaded sentence that directly states the tool's purpose without any filler or repetition. Every word contributes to clarity, making it highly concise and well-structured.
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 tool with no parameters and no output schema, the description is fully complete. It clearly specifies what is returned (the number of players) and the domain (RuneScape and OSRS). No additional context is necessary for an agent to understand and correctly invoke this tool.
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 zero parameters and the schema is empty, so there is no parameter information to elaborate. The baseline for zero-parameter tools is 4, and the description adds sufficient context by explaining what the output represents.
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 the tool's function with a specific verb ('Returns') and resource ('number of players currently online in RuneScape and Old School RuneScape'). It effectively distinguishes itself from sibling tools like get_item_details or get_player_hiscore, which focus on different data types.
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 provides no explicit guidance on when to use this tool versus alternatives. It only states what it does, without suggesting scenarios (e.g., 'use this to check live player counts') or exclusions. The usage is not even clearly implied beyond the basic function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_player_hiscoreB
Returns a player's rank, level and experience or score in an activity.
Examples:
- Single: "What rank is Zezima?"
- Multi comparison: "Compare Zezima and Lynx Titan"
- "What rank is Zezima on runescape?"
- "How much experience does Lynx Titan have overall?"
- "Iron Hyger ironman?"
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | The type of game you want to get the hiscore for. Leave empty if no type is specified. Types: ironman, hardcore_ironman, ultimate, deadman, seasonal (leagues), tournament, fresh_start | |
| gameMode | Yes | The mode of the game, this can be "osrs" or "rs". osrs = old school runescape, rs = runescape | osrs |
| playerName | Yes | The name of the player you want to get the hiscore for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It states what is returned but omits details like how game mode and type affect the result, whether the tool handles multiple players in a single call (as 'Multi comparison' suggests), and any potential errors or rate limits. The ambiguity around 'activity' and comparison behavior leaves significant gaps.
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 concise, with a clear one-sentence summary followed by a list of relevant examples. The examples are useful and not overly verbose, though some could be trimmed. The structure is front-loaded and easy to parse, earning a high score for efficient use of space.
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?
The tool has three parameters and no output schema or annotations, so the description must compensate. It leaves key questions unanswered: whether multiple players can be compared in one call, what constitutes an 'activity', whether output format is consistent across types, and how gameMode 'rs' differs from 'osrs' in practice. The examples hint at multi-player support but the schema only accepts a single playerName, creating confusion. This incomplete picture makes it hard for an agent to fully use the tool correctly.
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?
With 100% schema description coverage, the schema already documents parameter meanings. The description adds some value through examples that illustrate playerName and gameMode usage, but it does not elaborate on parameter syntax or constraints beyond the schema. The added examples show type variations (ironman) but do not explain all type options; thus it meets the baseline without exceeding it.
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 the tool returns a player's rank, level, and experience/score, with a specific verb ('returns') and resource (player hiscore). However, it does not explicitly differentiate from sibling tools like get_top_rankings, which also deals with hiscores, so it loses a point for missing sibling distinction.
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 examples provide implied usage scenarios (single lookups, comparisons, specific modes like ironman), but there is no explicit guidance on when to use this tool versus alternatives, no when-not-to-use conditions, and no mention of prerequisites such as requiring a valid game mode. The context is inferred from examples rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rsuser_totalA
Returns the current amount of accounts created that can access any form of RuneScape. This includes accounts made on FunOrb or a particular version of RuneScape.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It explains the return value and an important inclusion detail (FunOrb/version accounts), but it does not clarify whether the count is real-time, cached, cumulative, or restricted to active accounts, nor the output format.
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 two sentences, front-loaded with the primary purpose, and the second sentence adds a valuable inclusion qualifier. Every word earns its place; there is no fluff.
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?
This is a simple zero-parameter, no-output-schema tool. The description covers the core purpose and a key edge case. It is slightly incomplete in not addressing the distinction from get_player_count or the response type, but for such a low-complexity tool, it is mostly 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 zero parameters, so parameter documentation is not needed. The baseline of 4 applies because no parameter semantics are required and the description avoids redundant parameter details.
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 the verb 'Returns' and the resource: the current amount of accounts created that can access RuneScape, including FunOrb or a particular version. This is specific and understandable, though it does not explicitly differentiate from sibling tools like get_player_count.
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?
No guidance is provided about when to use this tool instead of alternatives such as get_player_count. The description only states what the tool returns, leaving the usage context entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_rankingsA
Returns up to the top 50 players in a given skill or activity.
Examples:
- Single: "Top 10 players overall?"
- Multi comparison: "Compare the top 10 defence and attack rankings"
- "Give me the top 50 attack rankings"
- "Number one agility on runescape?"
- "Most zulrah kills?"
- "Give me the top 5 jad rankings"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the skill or activity. | |
| size | No | The number of rankings to return, this can be max 50. | |
| gameMode | Yes | The mode of the game, this can be "osrs" or "rs". osrs = old school runescape, rs = runescape | osrs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the maximum result count (50) and that it targets a single skill/activity per call, but it doesn't specify sort order, response format, or behavior for ties/multi-skill requests, leaving some ambiguity.
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 core sentence is concise and front-loaded, followed by a compact list of illustrative examples. No wasted words; every sentence adds value.
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 simple tool with full schema coverage, the description provides helpful examples of valid skill/activity names and demonstrates the size limit. It doesn't specify return structure or ordering, but the tool's simplicity and schema mitigate this gap.
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 coverage is 100%, so the baseline is 3. The description adds no parameter-specific meaning beyond the schema, though examples demonstrate usage context for 'name' and 'size'.
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 the action ('Returns up to the top 50 players') and the resource ('in a given skill or activity'). It distinguishes from sibling tools (items, prices, player stats) and examples reinforce the purpose.
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?
Examples illustrate when to use the tool, such as single rankings, multi comparisons, and max-size queries. It lacks explicit when-not-to-use or alternative tool names, but the sibling list makes the context obvious.
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. Dates show when Glama detected each change.
6 tool updates
v1.0.2- First observed
get_item_details - First observed
get_item_price_history - First observed
get_player_count - First observed
get_player_hiscore - First observed
get_rsuser_total - First observed
get_top_rankings
TDQS
Tools are mostly distinct, but get_item_details and get_item_price_history both deal with item prices, which could cause confusion. The descriptions clarify that one provides current price/trends and the other historical daily prices, so a clear boundary exists.
All tools follow a consistent get_<resource>_<detail> pattern, e.g., get_item_details, get_player_hiscore, get_top_rankings. This makes the tool set predictable and easy to navigate.
With 6 tools, the server is well-scoped for RuneScape data covering items, players, and server statistics. Each tool serves a core purpose without unnecessary bloat.
The set covers item price details/history, player hiscore data, top rankings, and server status, which forms a solid foundation. Minor gaps exist, such as no direct item search by partial name or separate OSRS/RS3 filtering, but these are workable.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Publish and discover MCP servers via the official MCP Registry. Powered by HAPI MCP server.
Public MCP server for discovering open jobs. Search, filter, and get application links.
The official MCP Server for the Mux API
An MCP server that provides congressional transcripts
Related MCP Servers
AlicenseBqualityNot gradedmaintenanceMCP Server for interacting with Old School RuneScape Wiki API and game data files, providing tools to search the OSRS Wiki and access game data definitions through the Model Context Protocol.19341-- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that provides real-time player statistics and ranking data of 'Old School RuneScape', supporting multiple game modes and player comparison functions.42Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP server providing market data for 15,000+ cryptocurrencies including prices, history, trends, and deep coin metadata via CoinGecko.1221Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server for the Old School RuneScape Wiki, game data, Grand Exchange prices, and hiscores with polite client behavior.21MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stjepko-xyz/mcp-server-runescape'
If you have feedback or need assistance with the MCP directory API, please join our Discord server