diff --git a/mcp-registry/servers/ableton-mcp.json b/mcp-registry/servers/ableton-mcp.json new file mode 100644 index 00000000..31205f3e --- /dev/null +++ b/mcp-registry/servers/ableton-mcp.json @@ -0,0 +1,415 @@ +{ + "display_name": "AbletonMCP", + "license": "MIT", + "tags": [ + "ableton", + "music production", + "AI", + "Claude", + "MCP", + "Model Context Protocol", + "MIDI", + "audio", + "music" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "ableton-mcp" + ], + "description": "Claude for Desktop Integration" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Create an 80s synthwave track" + }, + { + "title": "", + "description": "", + "prompt": "Create a Metro Boomin style hip-hop beat" + }, + { + "title": "", + "description": "", + "prompt": "Create a new MIDI track with a synth bass instrument" + }, + { + "title": "", + "description": "", + "prompt": "Add reverb to my drums" + }, + { + "title": "", + "description": "", + "prompt": "Create a 4-bar MIDI clip with a simple melody" + }, + { + "title": "", + "description": "", + "prompt": "Get information about the current Ableton session" + }, + { + "title": "", + "description": "", + "prompt": "Load a 808 drum rack into the selected track" + }, + { + "title": "", + "description": "", + "prompt": "Add a jazz chord progression to the clip in track 1" + }, + { + "title": "", + "description": "", + "prompt": "Set the tempo to 120 BPM" + }, + { + "title": "", + "description": "", + "prompt": "Play the clip in track 2" + } + ], + "name": "ableton-mcp", + "repository": { + "type": "git", + "url": "https://github.com/ahujasid/ableton-mcp" + }, + "homepage": "https://github.com/ahujasid/ableton-mcp", + "author": { + "name": "ahujasid" + }, + "description": "AbletonMCP connects Ableton Live to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Ableton Live. This integration enables prompt-assisted music production, track creation, and Live session manipulation.", + "categories": [ + "Media Creation" + ], + "tools": [ + { + "name": "get_session_info", + "description": "Get detailed information about the current Ableton session", + "inputSchema": { + "properties": {}, + "title": "get_session_infoArguments", + "type": "object" + } + }, + { + "name": "get_track_info", + "description": "\n Get detailed information about a specific track in Ableton.\n \n Parameters:\n - track_index: The index of the track to get information about\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + } + }, + "required": [ + "track_index" + ], + "title": "get_track_infoArguments", + "type": "object" + } + }, + { + "name": "create_midi_track", + "description": "\n Create a new MIDI track in the Ableton session.\n \n Parameters:\n - index: The index to insert the track at (-1 = end of list)\n ", + "inputSchema": { + "properties": { + "index": { + "default": -1, + "title": "Index", + "type": "integer" + } + }, + "title": "create_midi_trackArguments", + "type": "object" + } + }, + { + "name": "set_track_name", + "description": "\n Set the name of a track.\n \n Parameters:\n - track_index: The index of the track to rename\n - name: The new name for the track\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "track_index", + "name" + ], + "title": "set_track_nameArguments", + "type": "object" + } + }, + { + "name": "create_clip", + "description": "\n Create a new MIDI clip in the specified track and clip slot. First check if there are less than 7 clips, if not, ask the user to delete a clip first.\n \n Parameters:\n - track_index: The index of the track to create the clip in\n - clip_index: The index of the clip slot to create the clip in\n - length: The length of the clip in beats (default: 4.0)\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + }, + "clip_index": { + "title": "Clip Index", + "type": "integer" + }, + "length": { + "default": 4.0, + "title": "Length", + "type": "number" + } + }, + "required": [ + "track_index", + "clip_index" + ], + "title": "create_clipArguments", + "type": "object" + } + }, + { + "name": "add_notes_to_clip", + "description": "\n Add MIDI notes to a clip.\n \n Parameters:\n - track_index: The index of the track containing the clip\n - clip_index: The index of the clip slot containing the clip\n - notes: List of note dictionaries, each with pitch, start_time, duration, velocity, and mute\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + }, + "clip_index": { + "title": "Clip Index", + "type": "integer" + }, + "notes": { + "items": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "type": "object" + }, + "title": "Notes", + "type": "array" + } + }, + "required": [ + "track_index", + "clip_index", + "notes" + ], + "title": "add_notes_to_clipArguments", + "type": "object" + } + }, + { + "name": "set_clip_name", + "description": "\n Set the name of a clip.\n \n Parameters:\n - track_index: The index of the track containing the clip\n - clip_index: The index of the clip slot containing the clip\n - name: The new name for the clip\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + }, + "clip_index": { + "title": "Clip Index", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "track_index", + "clip_index", + "name" + ], + "title": "set_clip_nameArguments", + "type": "object" + } + }, + { + "name": "set_tempo", + "description": "\n Set the tempo of the Ableton session.\n \n Parameters:\n - tempo: The new tempo in BPM\n ", + "inputSchema": { + "properties": { + "tempo": { + "title": "Tempo", + "type": "number" + } + }, + "required": [ + "tempo" + ], + "title": "set_tempoArguments", + "type": "object" + } + }, + { + "name": "load_instrument_or_effect", + "description": "\n Load an instrument or effect onto a track using its URI.\n \n Parameters:\n - track_index: The index of the track to load the instrument on\n - uri: The URI of the instrument or effect to load (e.g., 'query:Synths#Instrument%20Rack:Bass:FileId_5116')\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + }, + "uri": { + "title": "Uri", + "type": "string" + } + }, + "required": [ + "track_index", + "uri" + ], + "title": "load_instrument_or_effectArguments", + "type": "object" + } + }, + { + "name": "fire_clip", + "description": "\n Start playing a clip.\n \n Parameters:\n - track_index: The index of the track containing the clip\n - clip_index: The index of the clip slot containing the clip\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + }, + "clip_index": { + "title": "Clip Index", + "type": "integer" + } + }, + "required": [ + "track_index", + "clip_index" + ], + "title": "fire_clipArguments", + "type": "object" + } + }, + { + "name": "stop_clip", + "description": "\n Stop playing a clip.\n \n Parameters:\n - track_index: The index of the track containing the clip\n - clip_index: The index of the clip slot containing the clip\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + }, + "clip_index": { + "title": "Clip Index", + "type": "integer" + } + }, + "required": [ + "track_index", + "clip_index" + ], + "title": "stop_clipArguments", + "type": "object" + } + }, + { + "name": "start_playback", + "description": "Start playing the Ableton session.", + "inputSchema": { + "properties": {}, + "title": "start_playbackArguments", + "type": "object" + } + }, + { + "name": "stop_playback", + "description": "Stop playing the Ableton session.", + "inputSchema": { + "properties": {}, + "title": "stop_playbackArguments", + "type": "object" + } + }, + { + "name": "get_browser_tree", + "description": "\n Get a hierarchical tree of browser categories from Ableton.\n \n Parameters:\n - category_type: Type of categories to get ('all', 'instruments', 'sounds', 'drums', 'audio_effects', 'midi_effects')\n ", + "inputSchema": { + "properties": { + "category_type": { + "default": "all", + "title": "Category Type", + "type": "string" + } + }, + "title": "get_browser_treeArguments", + "type": "object" + } + }, + { + "name": "get_browser_items_at_path", + "description": "\n Get browser items at a specific path in Ableton's browser.\n \n Parameters:\n - path: Path in the format \"category/folder/subfolder\"\n where category is one of the available browser categories in Ableton\n ", + "inputSchema": { + "properties": { + "path": { + "title": "Path", + "type": "string" + } + }, + "required": [ + "path" + ], + "title": "get_browser_items_at_pathArguments", + "type": "object" + } + }, + { + "name": "load_drum_kit", + "description": "\n Load a drum rack and then load a specific drum kit into it.\n \n Parameters:\n - track_index: The index of the track to load on\n - rack_uri: The URI of the drum rack to load (e.g., 'Drums/Drum Rack')\n - kit_path: Path to the drum kit inside the browser (e.g., 'drums/acoustic/kit1')\n ", + "inputSchema": { + "properties": { + "track_index": { + "title": "Track Index", + "type": "integer" + }, + "rack_uri": { + "title": "Rack Uri", + "type": "string" + }, + "kit_path": { + "title": "Kit Path", + "type": "string" + } + }, + "required": [ + "track_index", + "rack_uri", + "kit_path" + ], + "title": "load_drum_kitArguments", + "type": "object" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/arxiv-mcp.json b/mcp-registry/servers/arxiv-mcp.json new file mode 100644 index 00000000..01bd0d33 --- /dev/null +++ b/mcp-registry/servers/arxiv-mcp.json @@ -0,0 +1,186 @@ +{ + "display_name": "ArXiv MCP Server", + "license": "MIT", + "tags": [ + "arxiv", + "research", + "papers", + "academic", + "AI", + "search", + "MCP", + "Model Context Protocol" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uv", + "args": [ + "tool", + "run", + "arxiv-mcp-server", + "--storage-path", + "/path/to/paper/storage" + ], + "description": "Run arxiv-mcp-server using uv tool" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Search for recent papers on transformer architecture in AI and machine learning" + }, + { + "title": "", + "description": "", + "prompt": "Find papers about reinforcement learning published after 2023" + }, + { + "title": "", + "description": "", + "prompt": "Download the paper with ID 2401.12345" + }, + { + "title": "", + "description": "", + "prompt": "Show me a list of all downloaded papers" + }, + { + "title": "", + "description": "", + "prompt": "Read the content of paper 2401.12345" + }, + { + "title": "", + "description": "", + "prompt": "Search for papers on quantum computing in the last 2 years" + }, + { + "title": "", + "description": "", + "prompt": "Analyze paper 2401.12345 using the deep-paper-analysis prompt" + }, + { + "title": "", + "description": "", + "prompt": "Find papers by Geoffrey Hinton about deep learning" + }, + { + "title": "", + "description": "", + "prompt": "Search for papers on large language models in cs.AI and cs.CL categories" + }, + { + "title": "", + "description": "", + "prompt": "Download and summarize the most recent paper on diffusion models" + } + ], + "name": "arxiv-mcp", + "repository": { + "type": "git", + "url": "https://github.com/blazickjp/arxiv-mcp-server" + }, + "homepage": "https://github.com/blazickjp/arxiv-mcp-server", + "author": { + "name": "blazickjp" + }, + "description": "The ArXiv MCP Server provides a bridge between AI assistants and arXiv's research repository through the Model Context Protocol (MCP). It allows AI models to search for papers and access their content in a programmatic way.", + "categories": [ + "Knowledge Base" + ], + "tools": [ + { + "name": "search_papers", + "description": "Search for papers on arXiv with advanced filtering", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string" + }, + "max_results": { + "type": "integer" + }, + "date_from": { + "type": "string" + }, + "date_to": { + "type": "string" + }, + "categories": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "query" + ] + } + }, + { + "name": "download_paper", + "description": "Download a paper and create a resource for it", + "inputSchema": { + "type": "object", + "properties": { + "paper_id": { + "type": "string", + "description": "The arXiv ID of the paper to download" + }, + "check_status": { + "type": "boolean", + "description": "If true, only check conversion status without downloading", + "default": false + } + }, + "required": [ + "paper_id" + ] + } + }, + { + "name": "list_papers", + "description": "List all existing papers available as resources", + "inputSchema": { + "type": "object", + "properties": {}, + "required": [] + } + }, + { + "name": "read_paper", + "description": "Read the full content of a stored paper in markdown format", + "inputSchema": { + "type": "object", + "properties": { + "paper_id": { + "type": "string", + "description": "The arXiv ID of the paper to read" + } + }, + "required": [ + "paper_id" + ] + } + } + ], + "prompts": [ + { + "name": "deep-paper-analysis", + "description": "Analyze a specific paper in detail", + "arguments": [ + { + "name": "paper_id", + "description": "arXiv paper ID", + "required": true + } + ] + } + ], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/baidumap.json b/mcp-registry/servers/baidumap.json new file mode 100644 index 00000000..496d999e --- /dev/null +++ b/mcp-registry/servers/baidumap.json @@ -0,0 +1,367 @@ +{ + "display_name": "Baidu Maps MCP Server", + "license": "MIT", + "tags": [ + "maps", + "geolocation", + "geocoding", + "routing", + "places", + "weather", + "traffic", + "navigation", + "MCP", + "baidu" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "mcp-server-baidu-maps" + ], + "env": { + "BAIDU_MAP_API_KEY": "${BAIDU_MAP_API_KEY}" + }, + "description": "Using uvx (recommended)" + }, + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "@baidumap/mcp-server-baidu-map" + ], + "env": { + "BAIDU_MAP_API_KEY": "${BAIDU_MAP_API_KEY}" + }, + "description": "Using npm for non-Windows systems" + }, + "python": { + "type": "python", + "command": "python", + "args": [ + "-m", + "mcp_server_baidu_maps" + ], + "env": { + "BAIDU_MAP_API_KEY": "${BAIDU_MAP_API_KEY}" + }, + "description": "Using pip installation" + } + }, + "arguments": { + "BAIDU_MAP_API_KEY": { + "description": "The API key for Baidu Maps", + "required": true, + "example": "" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "我想从北京天安门去故宫,请帮我规划路线" + }, + { + "title": "", + "description": "", + "prompt": "上海有哪些好吃的餐厅?" + }, + { + "title": "", + "description": "", + "prompt": "北京今天的天气怎么样?" + }, + { + "title": "", + "description": "", + "prompt": "请帮我查询从北京到上海的驾车路线" + }, + { + "title": "", + "description": "", + "prompt": "从浦东到虹桥最近的地铁站是哪一个?" + }, + { + "title": "", + "description": "", + "prompt": "请帮我查询从北京到上海的驾车路线" + }, + { + "title": "", + "description": "", + "prompt": "我正在北京王府井,想找一个便宜的饭店" + }, + { + "title": "", + "description": "", + "prompt": "从北京南站到首钢最快怎么走?" + }, + { + "title": "", + "description": "", + "prompt": "请帮我查询从北京到上海的驾车路线" + }, + { + "title": "", + "description": "", + "prompt": "从北京到上海最快的交通方式是什么?" + } + ], + "name": "baidumap", + "repository": { + "type": "git", + "url": "https://github.com/baidu-maps/mcp" + }, + "homepage": "https://github.com/baidu-maps/mcp", + "author": { + "name": "baidu-maps" + }, + "description": "百度地图API现已全面兼容[MCP协议](https://modelcontextprotocol.io/),是国内首家兼容MCP协议的地图服务商。", + "categories": [ + "Web Services" + ], + "tools": [ + { + "name": "map_geocode", + "description": "\n Name:\n 地理编码服务\n \n Description:\n 将地址解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。\n \n Args:\n address: 待解析的地址。最多支持84个字节。可以输入两种样式的值,分别是:\n 1、标准的结构化地址信息,如北京市海淀区上地十街十号【推荐,地址结构越完整,解析精度越高】\n 2、支持“*路与*路交叉口”描述方式,如北一环路和阜阳路的交叉路口\n 第二种方式并不总是有返回结果,只有当地址库中存在该地址描述时才有返回。\n \n ", + "inputSchema": { + "properties": { + "address": { + "title": "Address", + "type": "string" + } + }, + "required": [ + "address" + ], + "title": "map_geocodeArguments", + "type": "object" + } + }, + { + "name": "map_reverse_geocode", + "description": "\n Name:\n 地理编码服务\n \n Description:\n 将地址解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。\n \n Args:\n latitude: 纬度 (gcj02ll)\n longitude: 经度 (gcj02ll)\n \n ", + "inputSchema": { + "properties": { + "latitude": { + "title": "Latitude", + "type": "number" + }, + "longitude": { + "title": "Longitude", + "type": "number" + } + }, + "required": [ + "latitude", + "longitude" + ], + "title": "map_reverse_geocodeArguments", + "type": "object" + } + }, + { + "name": "map_search_places", + "description": "\n Name:\n 地理编码服务\n \n Description:\n 市内检索: 检索某一城市内(目前最细到城市级别)的地点信息。\n 周边检索: 设置圆心和半径,检索圆形区域内的地点信息(常用于周边检索场景)。\n \n Args:\n query: 检索关键字\n region: 检索的行政区划\n location: 圆形区域检索中心点\n radius: 圆形区域检索半径,单位:米\n \n ", + "inputSchema": { + "properties": { + "query": { + "title": "Query", + "type": "string" + }, + "region": { + "title": "Region", + "type": "string" + }, + "location": { + "title": "Location", + "type": "string" + }, + "radius": { + "title": "Radius", + "type": "integer" + } + }, + "required": [ + "query", + "region", + "location", + "radius" + ], + "title": "map_search_placesArguments", + "type": "object" + } + }, + { + "name": "map_place_details", + "description": "\n Name:\n 地理编码服务\n \n Description:\n 地理编码服务:将地址解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。\n \n Args:\n uid: poi的唯一标识\n ", + "inputSchema": { + "properties": { + "uid": { + "title": "Uid", + "type": "string" + } + }, + "required": [ + "uid" + ], + "title": "map_place_detailsArguments", + "type": "object" + } + }, + { + "name": "map_distance_matrix", + "description": "\n Name:\n 距离矩阵服务\n \n Description:\n 根据起点和终点坐标计算距离矩阵和行车时间\n 批量算路目前支持驾车、骑行、步行\n 步行时任意起终点之间的距离不得超过200KM,超过此限制会返回参数错误\n 驾车批量算路一次最多计算100条路线,起终点个数之积不能超过100\n \n Args:\n origins: 多个起点坐标纬度,经度,按|分隔。示例:40.056878,116.30815|40.063597,116.364973【骑行】【步行】支持传入起点uid提升绑路准确性,格式为:纬度,经度;POI的uid|纬度,经度;POI的uid。示例:40.056878,116.30815;xxxxx|40.063597,116.364973;xxxxx\n destinations: 多个终点坐标纬度,经度,按|分隔。示例:40.056878,116.30815|40.063597,116.364973【【骑行】【步行】支持传入终点uid提升绑路准确性,格式为:纬度,经度;POI的uid|纬度,经度;POI的uid。示例:40.056878,116.30815;xxxxx|40.063597,116.364973;xxxxx\n mode: 批量算路类型(driving, riding, walking)\n \n ", + "inputSchema": { + "properties": { + "origins": { + "title": "Origins", + "type": "string" + }, + "destinations": { + "title": "Destinations", + "type": "string" + }, + "mode": { + "title": "Mode", + "type": "string" + } + }, + "required": [ + "origins", + "destinations", + "mode" + ], + "title": "map_distance_matrixArguments", + "type": "object" + } + }, + { + "name": "map_directions", + "description": "\n Name:\n 路线规划服务\n \n Description:\n 驾车路线规划: 根据起终点坐标规划驾车出行路线\n 骑行路线规划: 根据起终点坐标规划骑行出行路线\n 步行路线规划: 根据起终点坐标规划步行出行路线\n 公交路线规划: 根据起终点坐标规划公共交通出行路线\n \n Args:\n model: 路线规划类型(driving, riding, walking, transit)\n origin: 起点坐标,当用户只有起点名称时,需要先通过地理编码服务或地点地点检索服务确定起点的坐标\n destination: 终点坐标,当用户只有起点名称时,需要先通过地理编码服务或地点检索服务确定起点的坐标\n \n ", + "inputSchema": { + "properties": { + "model": { + "title": "Model", + "type": "string" + }, + "origin": { + "title": "Origin", + "type": "string" + }, + "destination": { + "title": "Destination", + "type": "string" + } + }, + "required": [ + "model", + "origin", + "destination" + ], + "title": "map_directionsArguments", + "type": "object" + } + }, + { + "name": "map_weather", + "description": "\n Name:\n \u5929\u6c14\u67e5\u8be2\u670d\u52a1\n \n Description:\n \u7528\u6237\u53ef\u901a\u8fc7\u884c\u653f\u533a\u5212\u6216\u662f\u7ecf\u7eac\u5ea6\u5750\u6807\u67e5\u8be2\u5b9e\u65f6\u5929\u6c14\u4fe1\u606f\u53ca\u672a\u67655\u5929\u5929\u6c14\u9884\u62a5(\u6ce8\u610f: \u4f7f\u7528\u7ecf\u7eac\u5ea6\u5750\u6807\u9700\u8981\u9ad8\u7ea7\u6743\u9650)\u3002\n \n Args:\n location: \u7ecf\u7eac\u5ea6\uff0c\u7ecf\u5ea6\u5728\u524d\u7eac\u5ea6\u5728\u540e\uff0c\u9017\u53f7\u5206\u9694 (\u9700\u8981\u9ad8\u7ea7\u6743\u9650, \u4f8b\u5982: 116.30815,40.056878)\n district_id: \u884c\u653f\u533a\u5212 (\u4f8b\u5982: 1101010)\n ", + "inputSchema": { + "properties": { + "location": { + "title": "Location", + "type": "string" + }, + "district_id": { + "title": "District Id", + "type": "integer" + } + }, + "required": [ + "location", + "district_id" + ], + "title": "map_weatherArguments", + "type": "object" + } + }, + { + "name": "map_ip_location", + "description": "\n Name:\n IP定位服务\n \n Description:\n 根据用户请求的IP获取当前的位置,当需要知道用户当前位置、所在城市时可以调用该工具获取\n \n Args:\n ", + "inputSchema": { + "properties": {}, + "title": "map_ip_locationArguments", + "type": "object" + } + }, + { + "name": "map_road_traffic", + "description": "\n Name:\n 实时路况查询服务\n \n Description:\n 查询实时交通拥堵情况, 可通过指定道路名和区域形状(矩形, 多边形, 圆形)进行实时路况查询。\n \n 道路实时路况查询: 查询具体道路的实时拥堵评价和拥堵路段、拥堵距离、拥堵趋势等信息\n 矩形区域实时路况查询: 查询指定矩形地理范围的实时拥堵情况和各拥堵路段信息\n 多边形区域实时路况查询: 查询指定多边形地理范围的实时拥堵情况和各拥堵路段信息\n 圆形区域(周边)实时路况查询: 查询某中心点周边半径范围内的实时拥堵情况和各拥堵路段信息\n\n \n Args:\n model: 路况查询类型(road, bound, polygon, around)\n road_name: 道路名称和道路方向, model=road时必传 (如:朝阳路南向北)\n city: 城市名称或城市adcode, model=road时必传 (如:北京市)\n bounds: 区域左下角和右上角的经纬度坐标, model=bound时必传 (如:39.912078,116.464303;39.918276,116.475442)\n vertexes: 多边形区域的顶点经纬度, model=polygon时必传 (如:39.910528,116.472926;39.918276,116.475442;39.916671,116.459056;39.912078,116.464303)\n center: 圆形区域的中心点经纬度坐标, model=around时必传 (如:39.912078,116.464303)\n radius: 圆形区域的半径(米), 取值[1,1000], model=around时必传 (如:200)\n \n ", + "inputSchema": { + "properties": { + "model": { + "title": "Model", + "type": "string" + }, + "road_name": { + "title": "Road Name", + "type": "string" + }, + "city": { + "title": "City", + "type": "string" + }, + "bounds": { + "title": "Bounds", + "type": "string" + }, + "vertexes": { + "title": "Vertexes", + "type": "string" + }, + "center": { + "title": "Center", + "type": "string" + }, + "radius": { + "title": "Radius", + "type": "integer" + } + }, + "required": [ + "model", + "road_name", + "city", + "bounds", + "vertexes", + "center", + "radius" + ], + "title": "map_road_trafficArguments", + "type": "object" + } + }, + { + "name": "map_poi_extract", + "description": "\n Name:\n POI智能提取\n \n Description:\n 根据用户提供的文本描述信息, 智能提取出文本中所提及的POI相关信息. (注意: 使用该服务, api_key需要拥有对应的高级权限, 否则会报错)\n \n Args:\n text_content: 用于提取POI的文本描述信息 (完整的旅游路线,行程规划,景点推荐描述等文本内容, 例如: 新疆独库公路和塔里木湖太美了, 从独山子大峡谷到天山神秘大峡谷也是很不错的体验)\n ", + "inputSchema": { + "properties": { + "text_content": { + "title": "Text Content", + "type": "string" + } + }, + "required": [ + "text_content" + ], + "title": "map_poi_extractArguments", + "type": "object" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/browser-tools-mcp.json b/mcp-registry/servers/browser-tools-mcp.json new file mode 100644 index 00000000..301f2887 --- /dev/null +++ b/mcp-registry/servers/browser-tools-mcp.json @@ -0,0 +1,94 @@ +{ + "display_name": "Browser Tools MCP Server", + "license": "MIT", + "tags": [ + "MCP", + "browser tools", + "AI", + "debugging", + "console logs", + "network analysis", + "screenshot capture", + "element inspection", + "accessibility audit", + "performance audit", + "SEO audit", + "best practices audit" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "@agentdeskai/browser-tools-mcp" + ], + "description": "Run browser tools mcp server with npx" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Show me the console logs from the browser" + }, + { + "title": "", + "description": "", + "prompt": "What errors are showing in the console?" + }, + { + "title": "", + "description": "", + "prompt": "Check for network errors on the current page" + }, + { + "title": "", + "description": "", + "prompt": "Show me successful network requests" + }, + { + "title": "", + "description": "", + "prompt": "Get all network logs" + }, + { + "title": "", + "description": "", + "prompt": "What element is currently selected?" + }, + { + "title": "", + "description": "", + "prompt": "Run an accessibility audit on this page" + }, + { + "title": "", + "description": "", + "prompt": "Analyze the performance of this website" + }, + { + "title": "", + "description": "", + "prompt": "Check this page for SEO issues" + }, + { + "title": "", + "description": "", + "prompt": "Run a best practices audit on this site" + } + ], + "name": "browser-tools-mcp", + "repository": { + "type": "git", + "url": "https://github.com/AgentDeskAI/browser-tools-mcp/tree/main/browser-tools-mcp" + }, + "homepage": "https://github.com/AgentDeskAI/browser-tools-mcp/tree/main/browser-tools-mcp", + "author": { + "name": "AgentDeskAI" + }, + "description": "A Model Context Protocol (MCP) server that provides AI-powered browser tools integration. This server works in conjunction with the Browser Tools Server to provide AI capabilities for browser debugging and analysis.", + "categories": [ + "Dev Tools" + ], + "is_official": false +} diff --git a/mcp-registry/servers/codemcp.json b/mcp-registry/servers/codemcp.json new file mode 100644 index 00000000..d2595879 --- /dev/null +++ b/mcp-registry/servers/codemcp.json @@ -0,0 +1,353 @@ +{ + "display_name": "CodeMCP", + "license": "Apache-2.0", + "tags": [ + "AI coding assistant", + "Claude integration", + "pair programming", + "code editing", + "Git integration", + "Claude Desktop" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "--from", + "git+https://github.com/ezyang/codemcp@prod", + "codemcp" + ], + "description": "Using uv to install and run codemcp" + }, + "python": { + "type": "python", + "command": "python", + "args": [ + "-m", + "codemcp" + ], + "description": "Run codemcp with Python module" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Initialize codemcp with /path/to/your/project" + }, + { + "title": "", + "description": "", + "prompt": "Can you implement a new feature that adds pagination to the user list?" + }, + { + "title": "", + "description": "", + "prompt": "There's a bug in the authentication module where users are getting logged out unexpectedly. Can you fix it?" + }, + { + "title": "", + "description": "", + "prompt": "I'd like to refactor the database connection code to use connection pooling" + }, + { + "title": "", + "description": "", + "prompt": "Run the tests and fix any failing tests" + }, + { + "title": "", + "description": "", + "prompt": "Format the code in the src directory" + }, + { + "title": "", + "description": "", + "prompt": "Add error handling to the API endpoints in the users module" + } + ], + "name": "codemcp", + "repository": { + "type": "git", + "url": "https://github.com/ezyang/codemcp" + }, + "homepage": "https://github.com/ezyang/codemcp", + "author": { + "name": "ezyang" + }, + "description": "Make Claude Desktop a pair programming assistant by installing codemcp. With", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "codemcp", + "description": "If and only if the user explicitly asks you to initialize codemcp with\n path, you should invoke this tool. This will return instructions which you should\n IMMEDIATELY follow before continuing, in particular, it will explain other ways\n you can invoke this tool.\n\n If the user indicates they want to \"amend\" or \"continue working\" on a PR,\n you should set reuse_head_chat_id=True to continue using the same chat ID.\n\n In each subsequent request NOT including the initial request to initialize\n codemcp, you must call the UserPrompt tool with the user's verbatim\n request text.\n\n Arguments:\n subtool: The subtool to run (InitProject, ...)\n path: The path to the file or directory to operate on\n user_prompt: The user's original prompt verbatim, starting AFTER instructions to initialize codemcp (e.g., you should exclude \"Initialize codemcp for PATH\")\n subject_line: A short subject line in Git conventional commit format (for InitProject)\n reuse_head_chat_id: If True, reuse the chat ID from the HEAD commit instead of generating a new one (for InitProject)\n ... (there are other arguments which will be documented when you InitProject)\n ", + "inputSchema": { + "properties": { + "subtool": { + "title": "Subtool", + "type": "string" + }, + "path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Path" + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Content" + }, + "old_string": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Old String" + }, + "new_string": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "New String" + }, + "offset": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Offset" + }, + "limit": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Limit" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Description" + }, + "pattern": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Pattern" + }, + "include": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Include" + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Command" + }, + "arguments": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Arguments" + }, + "old_str": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Old Str" + }, + "new_str": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "New Str" + }, + "chat_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Chat Id" + }, + "user_prompt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "User Prompt" + }, + "subject_line": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Subject Line" + }, + "reuse_head_chat_id": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reuse Head Chat Id" + }, + "thought": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Thought" + }, + "mode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Mode" + }, + "commit_hash": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Commit Hash" + } + }, + "required": [ + "subtool" + ], + "title": "codemcpArguments", + "type": "object" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/cursor-talk-to-figma-mcp.json b/mcp-registry/servers/cursor-talk-to-figma-mcp.json new file mode 100644 index 00000000..45cf0d66 --- /dev/null +++ b/mcp-registry/servers/cursor-talk-to-figma-mcp.json @@ -0,0 +1,61 @@ +{ + "display_name": "Cursor Talk to Figma MCP", + "license": "MIT", + "tags": [ + "figma", + "cursor", + "mcp", + "plugin" + ], + "examples": [ + { + "title": "", + "description": "", + "prompt": "Create a new design for a mobile app" + }, + { + "title": "", + "description": "", + "prompt": "Explain how to use auto layout in Figma" + }, + { + "title": "", + "description": "", + "prompt": "Generate a color palette for my design" + }, + { + "title": "", + "description": "", + "prompt": "How do I create a component in Figma?" + }, + { + "title": "", + "description": "", + "prompt": "Help me design a responsive website" + } + ], + "name": "cursor-talk-to-figma-mcp", + "repository": { + "type": "git", + "url": "https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp" + }, + "homepage": "https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp", + "author": { + "name": "sonnylazuardi" + }, + "description": "Here is a concise description paragraph extracted from the README content, focused on what the project does, and kept under 200 characters:\n\nTailwind UI is a professional collection of UI components built with Tailwind CSS, including application UI like modals, dropdowns, and navigation menus, as well as marketing UI like headers, pricing tables, and testimonials.", + "categories": [ + "Media Creation" + ], + "installations": { + "custom": { + "type": "custom", + "command": "bunx", + "args": [ + "cursor-talk-to-figma-mcp@latest" + ], + "description": "Run with bunx" + } + }, + "is_official": false +} diff --git a/mcp-registry/servers/deebo-prototype.json b/mcp-registry/servers/deebo-prototype.json new file mode 100644 index 00000000..abfce075 --- /dev/null +++ b/mcp-registry/servers/deebo-prototype.json @@ -0,0 +1,84 @@ +{ + "display_name": "Deebo: AI Agent's Debugging Partner", + "license": "Apache-2.0", + "tags": [ + "debugging", + "AI", + "coding", + "MCP", + "Model Context Protocol", + "autonomous", + "development", + "git" + ], + "installations": { + "custom": { + "type": "custom", + "command": "node", + "args": [ + "--experimental-specifier-resolution=node", + "--experimental-modules", + "--max-old-space-size=4096", + "/absolute/path/to/deebo/build/index.js" + ], + "env": { + "NODE_ENV": "development", + "USE_MEMORY_BANK": "true", + "MOTHER_HOST": "openrouter", + "MOTHER_MODEL": "anthropic/claude-3.5-sonnet", + "SCENARIO_HOST": "openrouter", + "SCENARIO_MODEL": "anthropic/claude-3.5-sonnet", + "OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}" + }, + "description": "Manual installation for other setups" + } + }, + "arguments": { + "OPENROUTER_API_KEY": { + "description": "Your OpenRouter API key (required)", + "required": true, + "example": "sk-or-v1-..." + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "I'm getting an error in my React component where the state isn't updating properly. Can you help debug this issue?" + }, + { + "title": "", + "description": "", + "prompt": "My Node.js server keeps crashing with a memory leak. Can you investigate what might be causing it?" + }, + { + "title": "", + "description": "", + "prompt": "I have a bug in my Python code where the function returns None instead of the expected calculation result." + }, + { + "title": "", + "description": "", + "prompt": "My TypeScript project has type errors that I can't resolve. Can you help debug them?" + }, + { + "title": "", + "description": "", + "prompt": "There's an issue with my API integration where the authentication keeps failing. Can you help troubleshoot?" + } + ], + "name": "deebo-prototype", + "repository": { + "type": "git", + "url": "https://github.com/snagasuri/deebo-prototype" + }, + "homepage": "https://github.com/snagasuri/deebo-prototype", + "author": { + "name": "snagasuri" + }, + "description": "Deebo is an autonomous debugging system that AI coding agents (Claude, Cline, Cursor, etc.) can delegate tricky bugs to using the Model Context Protocol (MCP). It runs structured investigations in parallel Git branches to test hypotheses, validate fixes, and helps you move faster. If your main coding agent is like a single-threaded process, Deebo introduces multi-threadedness to your development workflow.", + "categories": [ + "Dev Tools" + ], + "is_official": false +} diff --git a/mcp-registry/servers/diff-mcp.json b/mcp-registry/servers/diff-mcp.json new file mode 100644 index 00000000..ef512def --- /dev/null +++ b/mcp-registry/servers/diff-mcp.json @@ -0,0 +1,152 @@ +{ + "display_name": "diff-mcp", + "license": "MIT", + "tags": [ + "diff", + "json", + "text", + "comparison", + "mcp", + "jsondiffpatch", + "data comparison" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "diff-mcp" + ], + "description": "Usage with Claude Desktop" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Compare these two JSON objects: {\"name\": \"John\", \"age\": 30} and {\"name\": \"John\", \"age\": 31}" + }, + { + "title": "", + "description": "", + "prompt": "Diff the following YAML: 'name: Alice\nage: 25' with 'name: Alice\nage: 26\noccupation: Developer'" + }, + { + "title": "", + "description": "", + "prompt": "Show me the difference between '

Hello world

' and '

Hello beautiful world

' in HTML format" + }, + { + "title": "", + "description": "", + "prompt": "Compare these two texts and show me the diff: 'The quick brown fox jumps over the lazy dog' and 'The quick brown fox leaps over the lazy dog'" + }, + { + "title": "", + "description": "", + "prompt": "Generate a JSON patch comparing {\"items\": [1, 2, 3]} with {\"items\": [1, 2, 3, 4]}" + } + ], + "name": "diff-mcp", + "repository": { + "type": "git", + "url": "https://github.com/benjamine/jsondiffpatch/tree/master/packages/diff-mcp" + }, + "homepage": "https://github.com/benjamine/jsondiffpatch/tree/master/packages/diff-mcp", + "author": { + "name": "benjamine" + }, + "description": "diff-mcp is an MCP Server that allows you to compare text or data (JSON, JSON5, YAML, TOML, XML, HTML) and get a readable diff in multiple output formats (text, JSON, JSONPatch).", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "diff", + "description": "compare text or data and get a readable diff", + "inputSchema": { + "type": "object", + "properties": { + "state": { + "type": "object", + "properties": { + "left": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "additionalProperties": {} + } + ] + }, + { + "type": "array", + "items": {} + } + ], + "description": "The left side of the diff." + }, + "leftFormat": { + "type": "string", + "enum": [ + "text", + "json", + "json5", + "yaml", + "toml", + "xml", + "html" + ], + "default": "json5", + "description": "format of left side of the diff" + }, + "right": { + "anyOf": [ + { + "$ref": "#/properties/state/properties/left/anyOf/0" + }, + { + "$ref": "#/properties/state/properties/left/anyOf/1" + } + ], + "description": "The right side of the diff (to compare with the left side)." + }, + "rightFormat": { + "$ref": "#/properties/state/properties/leftFormat", + "description": "format of right side of the diff" + }, + "outputFormat": { + "type": "string", + "enum": [ + "text", + "json", + "jsonpatch" + ], + "default": "text", + "description": "The output format. text: (default) human readable text diff, json: a compact json diff (jsondiffpatch delta format), jsonpatch: json patch diff (RFC 6902)" + } + }, + "required": [ + "left", + "right" + ], + "additionalProperties": false + } + }, + "required": [ + "state" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/fetcher-mcp.json b/mcp-registry/servers/fetcher-mcp.json new file mode 100644 index 00000000..d4bbf2c7 --- /dev/null +++ b/mcp-registry/servers/fetcher-mcp.json @@ -0,0 +1,193 @@ +{ + "display_name": "Fetcher MCP", + "license": "MIT License", + "tags": [ + "web scraping", + "Playwright", + "headless browser", + "content extraction", + "JavaScript", + "Markdown", + "HTML", + "parallel processing", + "MCP server" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "fetcher-mcp" + ], + "description": "Configure in Claude Desktop" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Please fetch the content from https://example.com" + }, + { + "title": "", + "description": "", + "prompt": "Fetch the webpage https://news.ycombinator.com and return it in HTML format" + }, + { + "title": "", + "description": "", + "prompt": "Please fetch the complete webpage content instead of just the main content from https://github.com" + }, + { + "title": "", + "description": "", + "prompt": "Please enable debug mode and fetch content from https://reddit.com" + }, + { + "title": "", + "description": "", + "prompt": "Please wait for the page to fully load and fetch content from https://twitter.com" + }, + { + "title": "", + "description": "", + "prompt": "Please set the page loading timeout to 60 seconds and fetch content from https://complex-site-example.com" + }, + { + "title": "", + "description": "", + "prompt": "Please fetch the following URLs in parallel: https://example.com, https://github.com, https://news.ycombinator.com" + }, + { + "title": "", + "description": "", + "prompt": "Please run in debug mode so I can manually log in to https://website-requiring-login.com" + } + ], + "name": "fetcher-mcp", + "repository": { + "type": "git", + "url": "https://github.com/jae-jae/fetcher-mcp" + }, + "homepage": "https://github.com/jae-jae/fetcher-mcp", + "author": { + "name": "jae-jae" + }, + "description": "Fetcher MCP is a server for fetching web page content using the Playwright headless browser, capable of executing JavaScript and handling dynamic web content.", + "categories": [ + "Web Services" + ], + "tools": [ + { + "name": "fetch_url", + "description": "Retrieve web page content from a specified URL", + "inputSchema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "URL to fetch" + }, + "timeout": { + "type": "number", + "description": "Page loading timeout in milliseconds, default is 30000 (30 seconds)" + }, + "waitUntil": { + "type": "string", + "description": "Specifies when navigation is considered complete, options: 'load', 'domcontentloaded', 'networkidle', 'commit', default is 'load'" + }, + "extractContent": { + "type": "boolean", + "description": "Whether to intelligently extract the main content, default is true" + }, + "maxLength": { + "type": "number", + "description": "Maximum length of returned content (in characters), default is no limit" + }, + "returnHtml": { + "type": "boolean", + "description": "Whether to return HTML content instead of Markdown, default is false" + }, + "waitForNavigation": { + "type": "boolean", + "description": "Whether to wait for additional navigation after initial page load (useful for sites with anti-bot verification), default is false" + }, + "navigationTimeout": { + "type": "number", + "description": "Maximum time to wait for additional navigation in milliseconds, default is 10000 (10 seconds)" + }, + "disableMedia": { + "type": "boolean", + "description": "Whether to disable media resources (images, stylesheets, fonts, media), default is true" + }, + "debug": { + "type": "boolean", + "description": "Whether to enable debug mode (showing browser window), overrides the --debug command line flag if specified" + } + }, + "required": [ + "url" + ] + } + }, + { + "name": "fetch_urls", + "description": "Retrieve web page content from multiple specified URLs", + "inputSchema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of URLs to fetch" + }, + "timeout": { + "type": "number", + "description": "Page loading timeout in milliseconds, default is 30000 (30 seconds)" + }, + "waitUntil": { + "type": "string", + "description": "Specifies when navigation is considered complete, options: 'load', 'domcontentloaded', 'networkidle', 'commit', default is 'load'" + }, + "extractContent": { + "type": "boolean", + "description": "Whether to intelligently extract the main content, default is true" + }, + "maxLength": { + "type": "number", + "description": "Maximum length of returned content (in characters), default is no limit" + }, + "returnHtml": { + "type": "boolean", + "description": "Whether to return HTML content instead of Markdown, default is false" + }, + "waitForNavigation": { + "type": "boolean", + "description": "Whether to wait for additional navigation after initial page load (useful for sites with anti-bot verification), default is false" + }, + "navigationTimeout": { + "type": "number", + "description": "Maximum time to wait for additional navigation in milliseconds, default is 10000 (10 seconds)" + }, + "disableMedia": { + "type": "boolean", + "description": "Whether to disable media resources (images, stylesheets, fonts, media), default is true" + }, + "debug": { + "type": "boolean", + "description": "Whether to enable debug mode (showing browser window), overrides the --debug command line flag if specified" + } + }, + "required": [ + "urls" + ] + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/ghidra-mcp.json b/mcp-registry/servers/ghidra-mcp.json new file mode 100644 index 00000000..23873a84 --- /dev/null +++ b/mcp-registry/servers/ghidra-mcp.json @@ -0,0 +1,91 @@ +{ + "display_name": "GhidraMCP", + "license": "Apache-2.0", + "tags": [ + "reverse engineering", + "Ghidra", + "MCP", + "binary analysis", + "decompiler", + "LLM", + "Model Context Protocol" + ], + "installations": { + "python": { + "type": "python", + "command": "python", + "args": [ + "/ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py", + "--ghidra-server", + "http://127.0.0.1:8080/" + ], + "description": "Configure in Claude Desktop" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Can you decompile the main function in the current binary?" + }, + { + "title": "", + "description": "", + "prompt": "List all methods in the current program" + }, + { + "title": "", + "description": "", + "prompt": "Analyze the binary and identify potential vulnerabilities" + }, + { + "title": "", + "description": "", + "prompt": "Rename the function at address 0x4000 to 'initialize_connection'" + }, + { + "title": "", + "description": "", + "prompt": "Show me all imports in this binary" + }, + { + "title": "", + "description": "", + "prompt": "List all classes in this program" + }, + { + "title": "", + "description": "", + "prompt": "Decompile the function at address 0x8040" + }, + { + "title": "", + "description": "", + "prompt": "What are the exports in this binary?" + }, + { + "title": "", + "description": "", + "prompt": "Analyze the control flow of function at 0x5000" + }, + { + "title": "", + "description": "", + "prompt": "Can you automatically rename methods based on their functionality?" + } + ], + "name": "ghidra-mcp", + "repository": { + "type": "git", + "url": "https://github.com/LaurieWired/GhidraMCP" + }, + "homepage": "https://github.com/LaurieWired/GhidraMCP", + "author": { + "name": "LaurieWired" + }, + "description": "GhidraMCP is an Model Context Protocol server for allowing LLMs to autonomously reverse engineer applications. It exposes numerous tools from core Ghidra functionality to MCP clients.", + "categories": [ + "Dev Tools" + ], + "is_official": false +} diff --git a/mcp-registry/servers/git-mcp.json b/mcp-registry/servers/git-mcp.json new file mode 100644 index 00000000..03dc2b2a --- /dev/null +++ b/mcp-registry/servers/git-mcp.json @@ -0,0 +1,150 @@ +{ + "display_name": "GitMCP", + "license": "Apache License 2.0", + "tags": [ + "MCP", + "GitHub", + "documentation", + "AI assistant", + "Model Context Protocol", + "code", + "open-source", + "no-hallucinations" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "mcp-remote", + "https://gitmcp.io/{owner}/{repo}" + ], + "description": "For Claude Desktop" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "How do I use the Playwright MCP?" + }, + { + "title": "", + "description": "", + "prompt": "Add memory to my LangGraph agent" + }, + { + "title": "", + "description": "", + "prompt": "I want to learn about the OpenAI Whisper speech recognition model. Explain how it works." + }, + { + "title": "", + "description": "", + "prompt": "What are the main features of TypeScript?" + }, + { + "title": "", + "description": "", + "prompt": "Show me how to create a three.js scene" + }, + { + "title": "", + "description": "", + "prompt": "How do I implement authentication in a React application?" + }, + { + "title": "", + "description": "", + "prompt": "What's the best way to handle state management in Vue.js?" + }, + { + "title": "", + "description": "", + "prompt": "Explain how to use GitHub Actions for CI/CD" + } + ], + "name": "git-mcp", + "repository": { + "type": "git", + "url": "https://github.com/idosal/git-mcp" + }, + "homepage": "https://github.com/idosal/git-mcp", + "author": { + "name": "idosal" + }, + "description": "GitMCP is a free, open-source, remote Model Context Protocol (MCP) server that transforms any GitHub project into a documentation hub, enabling AI tools to access up-to-date documentation and code to eliminate code hallucinations.", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "fetch__7Brepo_7D_documentation", + "description": "Fetch entire documentation file from GitHub repository: %7Bowner%7D/%7Brepo%7D. Useful for general questions. Always call this tool first if asked about %7Bowner%7D/%7Brepo%7D.", + "inputSchema": { + "type": "object" + } + }, + { + "name": "search__7Brepo_7D_documentation", + "description": "Semantically search within the fetched documentation from GitHub repository: %7Bowner%7D/%7Brepo%7D. Useful for specific queries.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The search query to find relevant documentation" + } + }, + "required": [ + "query" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "search__7Brepo_7D_code", + "description": "Search for code within the GitHub repository: \"%7Bowner%7D/%7Brepo%7D\" using the GitHub Search API (exact match). Returns matching files for you to query further if relevant.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The search query to find relevant code files" + }, + "page": { + "type": "number", + "description": "Page number to retrieve (starting from 1). Each page contains 30 results." + } + }, + "required": [ + "query" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "fetch_generic_url_content", + "description": "Generic tool to fetch content from any absolute URL, respecting robots.txt rules. Use this to retrieve referenced urls (absolute urls) that were mentioned in previously fetched documentation.", + "inputSchema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "The URL of the document or page to fetch" + } + }, + "required": [ + "url" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/ida-mcp.json b/mcp-registry/servers/ida-mcp.json new file mode 100644 index 00000000..e3bc04ed --- /dev/null +++ b/mcp-registry/servers/ida-mcp.json @@ -0,0 +1,482 @@ +{ + "display_name": "IDA MCP Server", + "license": "MIT", + "tags": [ + "IDA", + "reverse engineering", + "MCP", + "Model Context Protocol", + "automation", + "LLM", + "IDA Pro" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "mcp-server-ida" + ], + "description": "Using uvx (recommended)" + }, + "python": { + "type": "python", + "command": "python", + "args": [ + "-m", + "mcp_server_ida" + ], + "description": "Using pip installation" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Analyze the function at address 0x1000" + }, + { + "title": "", + "description": "", + "prompt": "What are the cross-references to this function?" + }, + { + "title": "", + "description": "", + "prompt": "Explain the purpose of this code segment" + }, + { + "title": "", + "description": "", + "prompt": "Show me the disassembly of the current function" + }, + { + "title": "", + "description": "", + "prompt": "Find all strings referenced in this binary" + }, + { + "title": "", + "description": "", + "prompt": "What are the imports used by this program?" + }, + { + "title": "", + "description": "", + "prompt": "Identify potential vulnerabilities in this function" + }, + { + "title": "", + "description": "", + "prompt": "How does this function handle error conditions?" + }, + { + "title": "", + "description": "", + "prompt": "Explain the control flow of this function" + } + ], + "name": "ida-mcp", + "repository": { + "type": "git", + "url": "https://github.com/MxIris-Reverse-Engineering/ida-mcp-server" + }, + "homepage": "https://github.com/MxIris-Reverse-Engineering/ida-mcp-server", + "author": { + "name": "MxIris-Reverse-Engineering" + }, + "description": "A Model Context Protocol server for IDA interaction and automation. This server provides tools to read IDA database via Large Language Models.", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "ida_get_function_assembly_by_name", + "description": "Get assembly code for a function by name", + "inputSchema": { + "properties": { + "function_name": { + "title": "Function Name", + "type": "string" + } + }, + "required": [ + "function_name" + ], + "title": "GetFunctionAssemblyByName", + "type": "object" + } + }, + { + "name": "ida_get_function_assembly_by_address", + "description": "Get assembly code for a function by address", + "inputSchema": { + "properties": { + "address": { + "title": "Address", + "type": "string" + } + }, + "required": [ + "address" + ], + "title": "GetFunctionAssemblyByAddress", + "type": "object" + } + }, + { + "name": "ida_get_function_decompiled_by_name", + "description": "Get decompiled pseudocode for a function by name", + "inputSchema": { + "properties": { + "function_name": { + "title": "Function Name", + "type": "string" + } + }, + "required": [ + "function_name" + ], + "title": "GetFunctionDecompiledByName", + "type": "object" + } + }, + { + "name": "ida_get_function_decompiled_by_address", + "description": "Get decompiled pseudocode for a function by address", + "inputSchema": { + "properties": { + "address": { + "title": "Address", + "type": "string" + } + }, + "required": [ + "address" + ], + "title": "GetFunctionDecompiledByAddress", + "type": "object" + } + }, + { + "name": "ida_get_global_variable_by_name", + "description": "Get information about a global variable by name", + "inputSchema": { + "properties": { + "variable_name": { + "title": "Variable Name", + "type": "string" + } + }, + "required": [ + "variable_name" + ], + "title": "GetGlobalVariableByName", + "type": "object" + } + }, + { + "name": "ida_get_global_variable_by_address", + "description": "Get information about a global variable by address", + "inputSchema": { + "properties": { + "address": { + "title": "Address", + "type": "string" + } + }, + "required": [ + "address" + ], + "title": "GetGlobalVariableByAddress", + "type": "object" + } + }, + { + "name": "ida_get_current_function_assembly", + "description": "Get assembly code for the function at the current cursor position", + "inputSchema": { + "properties": {}, + "title": "GetCurrentFunctionAssembly", + "type": "object" + } + }, + { + "name": "ida_get_current_function_decompiled", + "description": "Get decompiled pseudocode for the function at the current cursor position", + "inputSchema": { + "properties": {}, + "title": "GetCurrentFunctionDecompiled", + "type": "object" + } + }, + { + "name": "ida_rename_local_variable", + "description": "Rename a local variable within a function in the IDA database", + "inputSchema": { + "properties": { + "function_name": { + "title": "Function Name", + "type": "string" + }, + "old_name": { + "title": "Old Name", + "type": "string" + }, + "new_name": { + "title": "New Name", + "type": "string" + } + }, + "required": [ + "function_name", + "old_name", + "new_name" + ], + "title": "RenameLocalVariable", + "type": "object" + } + }, + { + "name": "ida_rename_global_variable", + "description": "Rename a global variable in the IDA database", + "inputSchema": { + "properties": { + "old_name": { + "title": "Old Name", + "type": "string" + }, + "new_name": { + "title": "New Name", + "type": "string" + } + }, + "required": [ + "old_name", + "new_name" + ], + "title": "RenameGlobalVariable", + "type": "object" + } + }, + { + "name": "ida_rename_function", + "description": "Rename a function in the IDA database", + "inputSchema": { + "properties": { + "old_name": { + "title": "Old Name", + "type": "string" + }, + "new_name": { + "title": "New Name", + "type": "string" + } + }, + "required": [ + "old_name", + "new_name" + ], + "title": "RenameFunction", + "type": "object" + } + }, + { + "name": "ida_rename_multi_local_variables", + "description": "Rename multiple local variables within a function at once in the IDA database", + "inputSchema": { + "properties": { + "function_name": { + "title": "Function Name", + "type": "string" + }, + "rename_pairs_old2new": { + "items": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "title": "Rename Pairs Old2New", + "type": "array" + } + }, + "required": [ + "function_name", + "rename_pairs_old2new" + ], + "title": "RenameMultiLocalVariables", + "type": "object" + } + }, + { + "name": "ida_rename_multi_global_variables", + "description": "Rename multiple global variables at once in the IDA database", + "inputSchema": { + "properties": { + "rename_pairs_old2new": { + "items": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "title": "Rename Pairs Old2New", + "type": "array" + } + }, + "required": [ + "rename_pairs_old2new" + ], + "title": "RenameMultiGlobalVariables", + "type": "object" + } + }, + { + "name": "ida_rename_multi_functions", + "description": "Rename multiple functions at once in the IDA database", + "inputSchema": { + "properties": { + "rename_pairs_old2new": { + "items": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "title": "Rename Pairs Old2New", + "type": "array" + } + }, + "required": [ + "rename_pairs_old2new" + ], + "title": "RenameMultiFunctions", + "type": "object" + } + }, + { + "name": "ida_add_assembly_comment", + "description": "Add a comment at a specific address in the assembly view of the IDA database", + "inputSchema": { + "properties": { + "address": { + "title": "Address", + "type": "string" + }, + "comment": { + "title": "Comment", + "type": "string" + }, + "is_repeatable": { + "default": false, + "title": "Is Repeatable", + "type": "boolean" + } + }, + "required": [ + "address", + "comment" + ], + "title": "AddAssemblyComment", + "type": "object" + } + }, + { + "name": "ida_add_function_comment", + "description": "Add a comment to a function in the IDA database", + "inputSchema": { + "properties": { + "function_name": { + "title": "Function Name", + "type": "string" + }, + "comment": { + "title": "Comment", + "type": "string" + }, + "is_repeatable": { + "default": false, + "title": "Is Repeatable", + "type": "boolean" + } + }, + "required": [ + "function_name", + "comment" + ], + "title": "AddFunctionComment", + "type": "object" + } + }, + { + "name": "ida_add_pseudocode_comment", + "description": "Add a comment to a specific address in the function's decompiled pseudocode", + "inputSchema": { + "properties": { + "function_name": { + "title": "Function Name", + "type": "string" + }, + "address": { + "title": "Address", + "type": "string" + }, + "comment": { + "title": "Comment", + "type": "string" + }, + "is_repeatable": { + "default": false, + "title": "Is Repeatable", + "type": "boolean" + } + }, + "required": [ + "function_name", + "address", + "comment" + ], + "title": "AddPseudocodeComment", + "type": "object" + } + }, + { + "name": "ida_execute_script", + "description": "Execute a Python script in IDA Pro and return its output. The script runs in IDA's context with access to all IDA API modules.", + "inputSchema": { + "properties": { + "script": { + "title": "Script", + "type": "string" + } + }, + "required": [ + "script" + ], + "title": "ExecuteScript", + "type": "object" + } + }, + { + "name": "ida_execute_script_from_file", + "description": "Execute a Python script from a file path in IDA Pro and return its output. The file should be accessible from IDA's process.", + "inputSchema": { + "properties": { + "file_path": { + "title": "File Path", + "type": "string" + } + }, + "required": [ + "file_path" + ], + "title": "ExecuteScriptFromFile", + "type": "object" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/ios-simulator-mcp.json b/mcp-registry/servers/ios-simulator-mcp.json new file mode 100644 index 00000000..7badaa78 --- /dev/null +++ b/mcp-registry/servers/ios-simulator-mcp.json @@ -0,0 +1,332 @@ +{ + "display_name": "iOS Simulator MCP Server", + "license": "MIT", + "tags": [ + "iOS", + "simulator", + "MCP", + "testing", + "QA", + "UI interaction", + "automation" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "ios-simulator-mcp" + ], + "description": "Using NPX with Cursor (Recommended)" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Verify all accessibility elements on the current screen" + }, + { + "title": "", + "description": "", + "prompt": "Enter \"QA Test\" into the text input field and confirm the input is correct" + }, + { + "title": "", + "description": "", + "prompt": "Tap on coordinates x=250, y=400 and verify the expected element is triggered" + }, + { + "title": "", + "description": "", + "prompt": "Swipe from x=150, y=600 to x=150, y=100 and confirm correct behavior" + }, + { + "title": "", + "description": "", + "prompt": "Describe the UI element at position x=300, y=350 to ensure proper labeling and functionality" + }, + { + "title": "", + "description": "", + "prompt": "Take a screenshot of the current simulator screen and save it to my_screenshot.png" + }, + { + "title": "", + "description": "", + "prompt": "Start recording a video of the simulator screen" + }, + { + "title": "", + "description": "", + "prompt": "Stop the current simulator screen recording" + } + ], + "name": "ios-simulator-mcp", + "repository": { + "type": "git", + "url": "https://github.com/joshuayoes/ios-simulator-mcp" + }, + "homepage": "https://github.com/joshuayoes/ios-simulator-mcp", + "author": { + "name": "joshuayoes" + }, + "description": "A Model Context Protocol (MCP) server for interacting with iOS simulators. This server allows you to interact with iOS simulators by getting information about them, controlling UI interactions, and inspecting UI elements.", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "get_booted_sim_id", + "description": "Get the ID of the currently booted iOS simulator", + "inputSchema": { + "type": "object" + } + }, + { + "name": "ui_describe_all", + "description": "Describes accessibility information for the entire screen in the iOS Simulator", + "inputSchema": { + "type": "object", + "properties": { + "udid": { + "type": "string", + "description": "Udid of target, can also be set with the IDB_UDID env var" + } + }, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "ui_tap", + "description": "Tap on the screen in the iOS Simulator", + "inputSchema": { + "type": "object", + "properties": { + "duration": { + "type": "string", + "description": "Press duration" + }, + "udid": { + "type": "string", + "description": "Udid of target, can also be set with the IDB_UDID env var" + }, + "x": { + "type": "number", + "description": "The x-coordinate" + }, + "y": { + "type": "number", + "description": "The x-coordinate" + } + }, + "required": [ + "x", + "y" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "ui_type", + "description": "Input text into the iOS Simulator", + "inputSchema": { + "type": "object", + "properties": { + "udid": { + "type": "string", + "description": "Udid of target, can also be set with the IDB_UDID env var" + }, + "text": { + "type": "string", + "description": "Text to input" + } + }, + "required": [ + "text" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "ui_swipe", + "description": "Swipe on the screen in the iOS Simulator", + "inputSchema": { + "type": "object", + "properties": { + "udid": { + "type": "string", + "description": "Udid of target, can also be set with the IDB_UDID env var" + }, + "x_start": { + "type": "number", + "description": "The starting x-coordinate" + }, + "y_start": { + "type": "number", + "description": "The starting y-coordinate" + }, + "x_end": { + "type": "number", + "description": "The ending x-coordinate" + }, + "y_end": { + "type": "number", + "description": "The ending y-coordinate" + }, + "delta": { + "type": "number", + "description": "The size of each step in the swipe (default is 1)", + "default": 1 + } + }, + "required": [ + "x_start", + "y_start", + "x_end", + "y_end" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "ui_describe_point", + "description": "Returns the accessibility element at given co-ordinates on the iOS Simulator's screen", + "inputSchema": { + "type": "object", + "properties": { + "udid": { + "type": "string", + "description": "Udid of target, can also be set with the IDB_UDID env var" + }, + "x": { + "type": "number", + "description": "The x-coordinate" + }, + "y": { + "type": "number", + "description": "The y-coordinate" + } + }, + "required": [ + "x", + "y" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "screenshot", + "description": "Takes a screenshot of the iOS Simulator", + "inputSchema": { + "type": "object", + "properties": { + "udid": { + "type": "string", + "description": "Udid of target, can also be set with the IDB_UDID env var" + }, + "output_path": { + "type": "string", + "description": "File path where the screenshot will be saved (if relative, ~/Downloads will be used as base directory)" + }, + "type": { + "type": "string", + "enum": [ + "png", + "tiff", + "bmp", + "gif", + "jpeg" + ], + "description": "Image format (png, tiff, bmp, gif, or jpeg). Default is png." + }, + "display": { + "type": "string", + "enum": [ + "internal", + "external" + ], + "description": "Display to capture (internal or external). Default depends on device type." + }, + "mask": { + "type": "string", + "enum": [ + "ignored", + "alpha", + "black" + ], + "description": "For non-rectangular displays, handle the mask by policy (ignored, alpha, or black)" + } + }, + "required": [ + "output_path" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "record_video", + "description": "Records a video of the iOS Simulator using simctl directly", + "inputSchema": { + "type": "object", + "properties": { + "output_path": { + "type": "string", + "description": "Optional output path (defaults to ~/Downloads/simulator_recording_$DATE.mp4)" + }, + "codec": { + "type": "string", + "enum": [ + "h264", + "hevc" + ], + "description": "Specifies the codec type: \"h264\" or \"hevc\". Default is \"hevc\"." + }, + "display": { + "type": "string", + "enum": [ + "internal", + "external" + ], + "description": "Display to capture: \"internal\" or \"external\". Default depends on device type." + }, + "mask": { + "type": "string", + "enum": [ + "ignored", + "alpha", + "black" + ], + "description": "For non-rectangular displays, handle the mask by policy: \"ignored\", \"alpha\", or \"black\"." + }, + "force": { + "type": "boolean", + "description": "Force the output file to be written to, even if the file already exists." + } + }, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "stop_recording", + "description": "Stops the simulator video recording using killall", + "inputSchema": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/jinni.json b/mcp-registry/servers/jinni.json new file mode 100644 index 00000000..5ad7b93a --- /dev/null +++ b/mcp-registry/servers/jinni.json @@ -0,0 +1,151 @@ +{ + "display_name": "Jinni: Bring Your Project Into Context", + "license": "MIT", + "tags": [ + "context", + "project", + "LLM", + "MCP", + "development", + "code", + "file management", + "context window" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "jinni-server" + ], + "description": "MCP server config for Cursor / Roo / Claude Desktop" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Can you read the context of my project?" + }, + { + "title": "", + "description": "", + "prompt": "Read the context for the src directory only" + }, + { + "title": "", + "description": "", + "prompt": "Read context for all Python files in the project" + }, + { + "title": "", + "description": "", + "prompt": "Read context for the tests directory and exclude any test data files" + }, + { + "title": "", + "description": "", + "prompt": "Can you list all the files in my project without showing their contents?" + }, + { + "title": "", + "description": "", + "prompt": "Read context for the project but limit to only markdown and Python files" + }, + { + "title": "", + "description": "", + "prompt": "Read context for the src directory and explain which files are being included or excluded" + }, + { + "title": "", + "description": "", + "prompt": "Read context for the project but exclude any binary or large files" + } + ], + "name": "jinni", + "repository": { + "type": "git", + "url": "https://github.com/smat-dev/jinni" + }, + "homepage": "https://github.com/smat-dev/jinni", + "author": { + "name": "smat-dev" + }, + "description": "", + "categories": [ + "Media Creation" + ], + "tools": [ + { + "name": "usage", + "description": "Retrieves the Jinni usage documentation (content of README.md).", + "inputSchema": { + "properties": {}, + "title": "usageArguments", + "type": "object" + } + }, + { + "name": "read_context", + "description": "Reads context from a specified project root directory (absolute path). Focuses on the specified target files/directories within that root. Returns a concatenated string of files with metadata including paths relative to the project root. Assume the user wants to read in context for the whole project unless otherwise specified - do not ask the user for clarification if just asked to read context. If the user just says 'jinni', interpret that as read_context. If the user asks to list context, use the list_only argument. Both `targets` and `rules` accept a JSON array of strings. The `project_root`, `targets`, and `rules` arguments are mandatory. You can ignore the other arguments by default. IMPORTANT NOTE ON RULES: Ensure you understand the rule syntax (details available via the `usage` tool) before providing specific rules. Using `rules=[]` is recommended if unsure, as this uses sensible defaults.\n\n**Guidance for AI Model Usage**\n\nWhen requesting context using this tool:\n* **Default Behavior:** If you provide an empty `rules` list (`[]`), Jinni uses sensible default exclusions (like `.git`, `node_modules`, `__pycache__`, common binary types) combined with any project-specific `.contextfiles`. This usually provides the \"canonical context\" - files developers typically track in version control. Assume this is what the users wants if they just ask to read context.\n* **Targeting Specific Files:** If you have a list of specific files you need (e.g., `[\"src/main.py\", \"README.md\"]`), provide them in the `targets` list. This is efficient and precise, quicker than reading one by one.\n", + "inputSchema": { + "properties": { + "project_root": { + "description": "**MUST BE ABSOLUTE PATH**. The absolute path to the project root directory.", + "title": "Project Root", + "type": "string" + }, + "targets": { + "description": "**Mandatory**. List of paths (absolute or relative to CWD) to specific files or directories within the project root to process. Must be a JSON array of strings. If empty (`[]`), the entire `project_root` is processed.", + "items": { + "type": "string" + }, + "title": "Targets", + "type": "array" + }, + "rules": { + "description": "**Mandatory**. List of inline filtering rules. Provide `[]` if no specific rules are needed (uses defaults). It is strongly recommended to consult the `usage` tool documentation before providing a non-empty list.", + "items": { + "type": "string" + }, + "title": "Rules", + "type": "array" + }, + "list_only": { + "default": false, + "title": "List Only", + "type": "boolean" + }, + "size_limit_mb": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Size Limit Mb" + }, + "debug_explain": { + "default": false, + "title": "Debug Explain", + "type": "boolean" + } + }, + "required": [ + "project_root", + "targets", + "rules" + ], + "title": "read_contextArguments", + "type": "object" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/jupyter-mcp.json b/mcp-registry/servers/jupyter-mcp.json new file mode 100644 index 00000000..cdc3d109 --- /dev/null +++ b/mcp-registry/servers/jupyter-mcp.json @@ -0,0 +1,110 @@ +{ + "display_name": "Jupyter MCP Server", + "license": "BSD 3-Clause License", + "tags": [ + "jupyter", + "mcp", + "model context protocol", + "notebook", + "jupyterlab", + "claude" + ], + "installations": { + "docker": { + "type": "docker", + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "SERVER_URL", + "-e", + "TOKEN", + "-e", + "NOTEBOOK_PATH", + "--network=host", + "datalayer/jupyter-mcp-server:latest" + ], + "env": { + "SERVER_URL": "${SERVER_URL}", + "TOKEN": "${TOKEN}", + "NOTEBOOK_PATH": "${NOTEBOOK_PATH}" + }, + "description": "Docker installation for Claude Desktop on Linux" + } + }, + "arguments": { + "SERVER_URL": { + "description": "The URL of the server", + "required": true, + "example": "http://localhost:8888" + }, + "TOKEN": { + "description": "The token for authentication", + "required": true, + "example": "MY_TOKEN" + }, + "NOTEBOOK_PATH": { + "description": "The path to the notebook", + "required": true, + "example": "notebook.ipynb" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Can you help me analyze this dataset? I have a Jupyter notebook open and want to load some data." + }, + { + "title": "", + "description": "", + "prompt": "Write a function to calculate the Fibonacci sequence and show me the first 10 numbers." + }, + { + "title": "", + "description": "", + "prompt": "Create a visualization of my data using matplotlib." + }, + { + "title": "", + "description": "", + "prompt": "Explain this code to me and add documentation as markdown cells." + }, + { + "title": "", + "description": "", + "prompt": "Help me debug this error in my Python code." + }, + { + "title": "", + "description": "", + "prompt": "Can you create a pandas DataFrame with sample data and perform some basic analysis?" + }, + { + "title": "", + "description": "", + "prompt": "Write a machine learning model to classify this dataset." + }, + { + "title": "", + "description": "", + "prompt": "Add a markdown cell explaining how neural networks work." + } + ], + "name": "jupyter-mcp", + "repository": { + "type": "git", + "url": "https://github.com/datalayer/jupyter-mcp-server" + }, + "homepage": "https://github.com/datalayer/jupyter-mcp-server", + "author": { + "name": "datalayer" + }, + "description": "Jupyter MCP Server is a [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server implementation that provides interaction with \ud83d\udcd3 Jupyter notebooks running in any JupyterLab (works also with your \ud83d\udcbb local JupyterLab).", + "categories": [ + "Dev Tools" + ], + "is_official": false +} diff --git a/mcp-registry/servers/kubectl-mcp.json b/mcp-registry/servers/kubectl-mcp.json new file mode 100644 index 00000000..fa308c49 --- /dev/null +++ b/mcp-registry/servers/kubectl-mcp.json @@ -0,0 +1,126 @@ +{ + "display_name": "Kubectl MCP Server", + "license": "MIT", + "tags": [ + "kubernetes", + "kubectl", + "MCP", + "Model Context Protocol", + "AI assistants", + "CLI", + "Python", + "k8s" + ], + "installations": { + "python": { + "type": "python", + "command": "python", + "args": [ + "-m", + "kubectl_mcp_tool.minimal_wrapper" + ], + "env": { + "KUBECONFIG": "${KUBECONFIG}" + }, + "description": "Windsurf configuration" + } + }, + "arguments": { + "KUBECONFIG": { + "description": "The path to the kubeconfig file", + "required": true, + "example": "/path/to/your/.kube/config" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "List all pods in the default namespace" + }, + { + "title": "", + "description": "", + "prompt": "Create a deployment named nginx-test with 3 replicas using the nginx:latest image" + }, + { + "title": "", + "description": "", + "prompt": "Get logs from the nginx-test pod" + }, + { + "title": "", + "description": "", + "prompt": "Forward local port 8080 to port 80 on the nginx-test pod" + }, + { + "title": "", + "description": "", + "prompt": "Show me the status of all nodes in the cluster" + }, + { + "title": "", + "description": "", + "prompt": "Scale the nginx-test deployment to 5 replicas" + }, + { + "title": "", + "description": "", + "prompt": "Delete the nginx-test deployment" + }, + { + "title": "", + "description": "", + "prompt": "Create a ConfigMap named app-config with key=value pairs" + }, + { + "title": "", + "description": "", + "prompt": "Install Prometheus using Helm" + }, + { + "title": "", + "description": "", + "prompt": "Switch to the kube-system namespace" + }, + { + "title": "", + "description": "", + "prompt": "Show me resource usage statistics for all pods" + }, + { + "title": "", + "description": "", + "prompt": "Describe the nginx-test pod" + }, + { + "title": "", + "description": "", + "prompt": "List all available API resources" + }, + { + "title": "", + "description": "", + "prompt": "Check the health of the cluster" + }, + { + "title": "", + "description": "", + "prompt": "Create a new namespace called test-env" + } + ], + "name": "kubectl-mcp", + "repository": { + "type": "git", + "url": "https://github.com/rohitg00/kubectl-mcp-server" + }, + "homepage": "https://github.com/rohitg00/kubectl-mcp-server", + "author": { + "name": "rohitg00" + }, + "description": "A Model Context Protocol (MCP) server for Kubernetes that enables AI assistants like Claude, Cursor, and others to interact with Kubernetes clusters through natural language.", + "categories": [ + "Dev Tools" + ], + "is_official": false +} diff --git a/mcp-registry/servers/mcp-browser-use.json b/mcp-registry/servers/mcp-browser-use.json new file mode 100644 index 00000000..6dab3e97 --- /dev/null +++ b/mcp-registry/servers/mcp-browser-use.json @@ -0,0 +1,174 @@ +{ + "display_name": "Browser Use MCP Server", + "license": "MIT", + "tags": [ + "browser-automation", + "web-research", + "MCP", + "AI-driven", + "browser-control", + "web-scraping", + "natural-language", + "chrome", + "playwright" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "mcp-server-browser-use" + ], + "env": { + "OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}", + "PYTHONIOENCODING": "utf-8", + "PYTHONUNBUFFERED": "1", + "PYTHONUTF8": "1", + "MCP_MODEL_PROVIDER": "openrouter", + "MCP_MODEL_NAME": "${MCP_MODEL_NAME}", + "BROWSER_HEADLESS": "true", + "BROWSER_USE_LOGGING_LEVEL": "INFO" + } + } + }, + "arguments": { + "OPENROUTER_API_KEY": { + "description": "OpenRouter API key for authentication.", + "required": true, + "example": "your-openrouter-api-key" + }, + "MCP_MODEL_NAME": { + "description": "Model name for the server.", + "required": true, + "example": "google/gemini-2.5-pro-exp-03-25:free" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Search for the latest news about artificial intelligence and summarize the top 3 articles." + }, + { + "title": "", + "description": "", + "prompt": "Go to amazon.com and find the best-selling wireless headphones under $100. Compare the top 3 options." + }, + { + "title": "", + "description": "", + "prompt": "Visit github.com and search for popular Python machine learning libraries. Create a list of the top 5 with their star counts and main features." + }, + { + "title": "", + "description": "", + "prompt": "Go to Wikipedia and research the history of quantum computing. Create a timeline of major developments." + }, + { + "title": "", + "description": "", + "prompt": "Visit a weather website and tell me the 5-day forecast for New York City." + }, + { + "title": "", + "description": "", + "prompt": "Go to a recipe website and find a vegetarian pasta dish that takes less than 30 minutes to prepare. List the ingredients and steps." + }, + { + "title": "", + "description": "", + "prompt": "Research the differences between electric vehicles and traditional gas vehicles. Create a comparison table of pros and cons." + }, + { + "title": "", + "description": "", + "prompt": "Find information about the most popular tourist attractions in Tokyo and create an itinerary for a 3-day visit." + }, + { + "title": "", + "description": "", + "prompt": "Go to an online bookstore and find the top-rated science fiction books released in the last year. Give me a brief summary of each." + } + ], + "name": "mcp-browser-use", + "repository": { + "type": "git", + "url": "https://github.com/Saik0s/mcp-browser-use" + }, + "homepage": "https://github.com/Saik0s/mcp-browser-use", + "author": { + "name": "Saik0s" + }, + "description": "This project is an AI-driven browser automation server that implements the Model Context Protocol (MCP) for natural language control of web browsers and web research tasks.", + "categories": [ + "Web Services" + ], + "tools": [ + { + "name": "run_browser_agent", + "description": "Runs a browser agent task synchronously and waits for the result.", + "inputSchema": { + "properties": { + "task": { + "title": "Task", + "type": "string" + }, + "add_infos": { + "default": "", + "title": "Add Infos", + "type": "string" + } + }, + "required": [ + "task" + ], + "title": "run_browser_agentArguments", + "type": "object" + } + }, + { + "name": "run_deep_search", + "description": "Performs deep search synchronously and waits for the report.", + "inputSchema": { + "properties": { + "research_task": { + "title": "Research Task", + "type": "string" + }, + "max_search_iterations": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 10, + "title": "Max Search Iterations" + }, + "max_query_per_iteration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 3, + "title": "Max Query Per Iteration" + } + }, + "required": [ + "research_task" + ], + "title": "run_deep_searchArguments", + "type": "object" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/mcp-gsuite.json b/mcp-registry/servers/mcp-gsuite.json new file mode 100644 index 00000000..6eb9bb82 --- /dev/null +++ b/mcp-registry/servers/mcp-gsuite.json @@ -0,0 +1,100 @@ +{ + "display_name": "MCP Google Workspace Integration", + "license": "MIT", + "tags": [ + "gmail", + "google", + "calendar", + "gsuite", + "google workspace", + "email", + "productivity" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uvx", + "args": [ + "mcp-gsuite", + "--accounts-file", + "${ACCOUNTS_FILE_PATH}", + "--credentials-dir", + "${CREDENTIALS_DIR}" + ], + "description": "Run the published mcp-gsuite server with custom account and credentials paths" + } + }, + "arguments": { + "ACCOUNTS_FILE_PATH": { + "description": "Path to the accounts file.", + "required": true, + "example": "/path/to/custom/.accounts.json" + }, + "CREDENTIALS_DIR": { + "description": "Path to the credentials directory.", + "required": true, + "example": "/path/to/custom/credentials" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Retrieve my latest unread messages" + }, + { + "title": "", + "description": "", + "prompt": "Search my emails from the Scrum Master" + }, + { + "title": "", + "description": "", + "prompt": "Retrieve all emails from accounting" + }, + { + "title": "", + "description": "", + "prompt": "Take the email about ABC and summarize it" + }, + { + "title": "", + "description": "", + "prompt": "Write a nice response to Alice's last email and upload a draft." + }, + { + "title": "", + "description": "", + "prompt": "Reply to Bob's email with a Thank you note. Store it as draft" + }, + { + "title": "", + "description": "", + "prompt": "What do I have on my agenda tomorrow?" + }, + { + "title": "", + "description": "", + "prompt": "Check my private account's Family agenda for next week" + }, + { + "title": "", + "description": "", + "prompt": "I need to plan an event with Tim for 2hrs next week. Suggest some time slots." + } + ], + "name": "mcp-gsuite", + "repository": { + "type": "git", + "url": "https://github.com/MarkusPfundstein/mcp-gsuite" + }, + "homepage": "https://github.com/MarkusPfundstein/mcp-gsuite", + "author": { + "name": "MarkusPfundstein" + }, + "description": "MCP server to interact with Google products.", + "categories": [ + "Productivity" + ], + "is_official": false +} diff --git a/mcp-registry/servers/mcp-k8s-go.json b/mcp-registry/servers/mcp-k8s-go.json new file mode 100644 index 00000000..cdf10370 --- /dev/null +++ b/mcp-registry/servers/mcp-k8s-go.json @@ -0,0 +1,102 @@ +{ + "display_name": "MCP K8S Go", + "license": "MIT", + "tags": [ + "kubernetes", + "mcp", + "golang", + "k8s", + "model context protocol", + "claude", + "tools" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "@strowk/mcp-k8s" + ], + "description": "Run using npx" + }, + "docker": { + "type": "docker", + "command": "docker", + "args": [ + "run", + "-i", + "-v", + "~/.kube/config:/home/nonroot/.kube/config", + "--rm", + "mcpk8s/server:latest" + ], + "description": "Run using Docker" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "List all available Kubernetes contexts" + }, + { + "title": "", + "description": "", + "prompt": "Show me the namespaces in my current Kubernetes cluster" + }, + { + "title": "", + "description": "", + "prompt": "List all pods in the kube-system namespace" + }, + { + "title": "", + "description": "", + "prompt": "Get logs for a pod in the kube-system namespace" + }, + { + "title": "", + "description": "", + "prompt": "Show me the details of a specific deployment" + }, + { + "title": "", + "description": "", + "prompt": "List all services across all namespaces" + }, + { + "title": "", + "description": "", + "prompt": "Check the status of Kubernetes nodes" + }, + { + "title": "", + "description": "", + "prompt": "Run 'ls -la' command in a specific pod" + }, + { + "title": "", + "description": "", + "prompt": "Get recent Kubernetes events" + }, + { + "title": "", + "description": "", + "prompt": "Show me the configuration of a ConfigMap" + } + ], + "name": "mcp-k8s-go", + "repository": { + "type": "git", + "url": "https://github.com/strowk/mcp-k8s-go" + }, + "homepage": "https://github.com/strowk/mcp-k8s-go", + "author": { + "name": "strowk" + }, + "description": "MCP K8S Go is a Golang-based server that connects to Kubernetes, allowing users to interact with and manage Kubernetes resources using the Model Context Protocol (MCP).", + "categories": [ + "Dev Tools" + ], + "is_official": false +} diff --git a/mcp-registry/servers/mcp-run-python.json b/mcp-registry/servers/mcp-run-python.json new file mode 100644 index 00000000..21bb770d --- /dev/null +++ b/mcp-registry/servers/mcp-run-python.json @@ -0,0 +1,70 @@ +{ + "display_name": "MCP Run Python", + "license": "MIT", + "tags": [ + "python", + "sandbox", + "pyodide", + "deno", + "model context protocol", + "mcp", + "code execution" + ], + "installations": { + "custom": { + "type": "custom", + "command": "deno", + "args": [ + "run", + "-N", + "-R=node_modules", + "-W=node_modules", + "--node-modules-dir=auto", + "jsr:@pydantic/mcp-run-python", + "stdio" + ], + "description": "Runs the server with the Stdio MCP transport — suitable for running the process as a subprocess locally" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "How many days between 2000-01-01 and 2025-03-18?" + }, + { + "title": "", + "description": "", + "prompt": "Calculate the square root of 144" + }, + { + "title": "", + "description": "", + "prompt": "Create a list of prime numbers between 1 and 100" + }, + { + "title": "", + "description": "", + "prompt": "Plot a simple sine wave using matplotlib" + }, + { + "title": "", + "description": "", + "prompt": "Implement a function to check if a string is a palindrome" + } + ], + "name": "mcp-run-python", + "repository": { + "type": "git", + "url": "https://github.com/pydantic/pydantic-ai/tree/main/mcp-run-python" + }, + "homepage": "https://github.com/pydantic/pydantic-ai/tree/main/mcp-run-python", + "author": { + "name": "pydantic" + }, + "description": "The code is executed using [Pyodide](https://pyodide.org) in [Deno](https://deno.com/) and is therefore isolated from", + "categories": [ + "Dev Tools" + ], + "is_official": false +} diff --git a/mcp-registry/servers/mcp-server-weread.json b/mcp-registry/servers/mcp-server-weread.json new file mode 100644 index 00000000..bf96a0b8 --- /dev/null +++ b/mcp-registry/servers/mcp-server-weread.json @@ -0,0 +1,69 @@ +{ + "display_name": "WeRead MCP Server", + "license": "MIT", + "tags": [ + "weread", + "wechat", + "reading", + "notes", + "claude", + "mcp", + "knowledge management", + "api" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "https://github.com/freestylefly/mcp-server-weread" + ], + "env": { + "WEREAD_COOKIE": "你的微信读书cookie" + }, + "description": "Runs the server with npm" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "列举我所有的读书笔记" + }, + { + "title": "", + "description": "", + "prompt": "帮我查看我的书架上有哪些书" + }, + { + "title": "", + "description": "", + "prompt": "想看看《思考,快与慢》这本书的笔记" + }, + { + "title": "", + "description": "", + "prompt": "帮我找一下我笔记中关于'认知偏差'的内容" + }, + { + "title": "", + "description": "", + "prompt": "获取我最近读过的书籍" + } + ], + "name": "mcp-server-weread", + "repository": { + "type": "git", + "url": "https://github.com/freestylefly/mcp-server-weread" + }, + "homepage": "https://github.com/freestylefly/mcp-server-weread", + "author": { + "name": "freestylefly" + }, + "description": "A WeChat reading MCP server that allows you to access WeChat reading notes and reading history in Claude Desktop.", + "categories": [ + "Knowledge Base" + ], + "is_official": false +} diff --git a/mcp-registry/servers/mobile-mcp.json b/mcp-registry/servers/mobile-mcp.json new file mode 100644 index 00000000..f63d216f --- /dev/null +++ b/mcp-registry/servers/mobile-mcp.json @@ -0,0 +1,349 @@ +{ + "display_name": "Mobile MCP Server", + "license": "Apache-2.0", + "tags": [ + "mobile", + "automation", + "iOS", + "Android", + "simulator", + "emulator", + "physical devices", + "MCP", + "Model Context Protocol", + "accessibility", + "testing", + "LLM" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "@mobilenext/mobile-mcp@latest" + ], + "description": "Installation for Claude Desktop" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Launch the Notes app on my iPhone and create a new note with the text 'Shopping list: milk, eggs, bread'" + }, + { + "title": "", + "description": "", + "prompt": "Open Google Keep on my Android device and show me all the elements on screen" + }, + { + "title": "", + "description": "", + "prompt": "Take a screenshot of my current mobile screen" + }, + { + "title": "", + "description": "", + "prompt": "Launch Instagram, scroll down my feed by swiping up, and like the first post you see" + }, + { + "title": "", + "description": "", + "prompt": "Open Safari on iOS, navigate to github.com, and take a screenshot" + }, + { + "title": "", + "description": "", + "prompt": "List all installed apps on my device" + }, + { + "title": "", + "description": "", + "prompt": "Open the Calculator app and perform a simple calculation by tapping the buttons" + }, + { + "title": "", + "description": "", + "prompt": "Launch the Settings app and toggle the Wi-Fi setting" + }, + { + "title": "", + "description": "", + "prompt": "Open the Camera app and take a photo" + }, + { + "title": "", + "description": "", + "prompt": "Launch a messaging app, find a specific contact, and send them a text message" + } + ], + "name": "mobile-mcp", + "repository": { + "type": "git", + "url": "https://github.com/mobile-next/mobile-mcp" + }, + "homepage": "https://github.com/mobile-next/mobile-mcp", + "author": { + "name": "mobile-next" + }, + "description": "This is a [Model Context Protocol (MCP) server](https://github.com/modelcontextprotocol) that enables scalable mobile automation, development through a platform-agnostic interface, eliminating the need for distinct iOS or Android knowledge. You can run it on emulators, simulators, and physical devices (iOS and Android).", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "mobile_list_available_devices", + "description": "List all available devices. This includes both physical devices and simulators. If there is more than one device returned, you need to let the user select one of them.", + "inputSchema": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_use_device", + "description": "Select a device to use. This can be a simulator or an Android device. Use the list_available_devices tool to get a list of available devices.", + "inputSchema": { + "type": "object", + "properties": { + "device": { + "type": "string", + "description": "The name of the device to select" + }, + "deviceType": { + "type": "string", + "enum": [ + "simulator", + "ios", + "android" + ], + "description": "The type of device to select" + } + }, + "required": [ + "device", + "deviceType" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_list_apps", + "description": "List all the installed apps on the device", + "inputSchema": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_launch_app", + "description": "Launch an app on mobile device. Use this to open a specific app. You can find the package name of the app by calling list_apps_on_device.", + "inputSchema": { + "type": "object", + "properties": { + "packageName": { + "type": "string", + "description": "The package name of the app to launch" + } + }, + "required": [ + "packageName" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_terminate_app", + "description": "Stop and terminate an app on mobile device", + "inputSchema": { + "type": "object", + "properties": { + "packageName": { + "type": "string", + "description": "The package name of the app to terminate" + } + }, + "required": [ + "packageName" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_get_screen_size", + "description": "Get the screen size of the mobile device in pixels", + "inputSchema": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_click_on_screen_at_coordinates", + "description": "Click on the screen at given x,y coordinates", + "inputSchema": { + "type": "object", + "properties": { + "x": { + "type": "number", + "description": "The x coordinate to click on the screen, in pixels" + }, + "y": { + "type": "number", + "description": "The y coordinate to click on the screen, in pixels" + } + }, + "required": [ + "x", + "y" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_list_elements_on_screen", + "description": "List elements on screen and their coordinates, with display text or accessibility label. Do not cache this result.", + "inputSchema": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_press_button", + "description": "Press a button on device", + "inputSchema": { + "type": "object", + "properties": { + "button": { + "type": "string", + "description": "The button to press. Supported buttons: BACK (android only), HOME, VOLUME_UP, VOLUME_DOWN, ENTER" + } + }, + "required": [ + "button" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_open_url", + "description": "Open a URL in browser on device", + "inputSchema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "The URL to open" + } + }, + "required": [ + "url" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "swipe_on_screen", + "description": "Swipe on the screen", + "inputSchema": { + "type": "object", + "properties": { + "direction": { + "type": "string", + "enum": [ + "up", + "down" + ], + "description": "The direction to swipe" + } + }, + "required": [ + "direction" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_type_keys", + "description": "Type text into the focused element", + "inputSchema": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "The text to type" + }, + "submit": { + "type": "boolean", + "description": "Whether to submit the text. If true, the text will be submitted as if the user pressed the enter key." + } + }, + "required": [ + "text", + "submit" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_take_screenshot", + "description": "Take a screenshot of the mobile device. Use this to understand what's on screen, if you need to press an element that is available through view hierarchy then you must list elements on screen instead. Do not cache this result.", + "inputSchema": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_set_orientation", + "description": "Change the screen orientation of the device", + "inputSchema": { + "type": "object", + "properties": { + "orientation": { + "type": "string", + "enum": [ + "portrait", + "landscape" + ], + "description": "The desired orientation" + } + }, + "required": [ + "orientation" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "mobile_get_orientation", + "description": "Get the current screen orientation of the device", + "inputSchema": { + "type": "object", + "properties": {}, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/nx-mcp.json b/mcp-registry/servers/nx-mcp.json new file mode 100644 index 00000000..d8883838 --- /dev/null +++ b/mcp-registry/servers/nx-mcp.json @@ -0,0 +1,149 @@ +{ + "display_name": "Nx MCP Server", + "license": "MIT", + "tags": [ + "nx", + "monorepo", + "MCP", + "Model Context Protocol", + "AI", + "LLM", + "code generation" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "nx-mcp@latest", + "/path/to/your/workspace" + ], + "description": "Run it via the nx-mcp package using npx" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Show me the structure of my Nx workspace" + }, + { + "title": "", + "description": "", + "prompt": "What are the details of project X in my Nx workspace?" + }, + { + "title": "", + "description": "", + "prompt": "Find Nx documentation about dependency management" + }, + { + "title": "", + "description": "", + "prompt": "List all available generators in my workspace" + }, + { + "title": "", + "description": "", + "prompt": "Show me the schema for the @nrwl/angular:component generator" + }, + { + "title": "", + "description": "", + "prompt": "What Nx plugins are available to install?" + } + ], + "name": "nx-mcp", + "repository": { + "type": "git", + "url": "https://github.com/nrwl/nx-console/tree/master/apps/nx-mcp" + }, + "homepage": "https://github.com/nrwl/nx-console/tree/master/apps/nx-mcp", + "author": { + "name": "nrwl" + }, + "description": "A [Model Context Protocol](https://modelcontextprotocol.io/introduction) server implementation for [Nx](https://nx.dev).", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "nx_docs", + "description": "Returns a list of documentation sections that could be relevant to the user query. IMPORTANT: ALWAYS USE THIS IF YOU ARE ANSWERING QUESTIONS ABOUT NX. NEVER ASSUME KNOWLEDGE ABOUT NX BECAUSE IT WILL PROBABLY BE OUTDATED. Use it to learn about nx, its configuration and options instead of assuming knowledge about it.", + "inputSchema": { + "type": "object", + "properties": { + "userQuery": { + "type": "string", + "description": "The user query to get docs for. You can pass the original user query verbatim or summarize it." + } + }, + "required": [ + "userQuery" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "nx_available_plugins", + "description": "Returns a list of available Nx plugins from the core team as well as local workspace Nx plugins.", + "inputSchema": { + "type": "object" + } + }, + { + "name": "nx_workspace", + "description": "Returns a readable representation of the nx project graph and the nx.json that configures nx. If there are project graph errors, it also returns them. Use it to answer questions about the nx workspace and architecture", + "inputSchema": { + "type": "object" + } + }, + { + "name": "nx_project_details", + "description": "Returns the complete project configuration in JSON format for a given nx project.", + "inputSchema": { + "type": "object", + "properties": { + "projectName": { + "type": "string", + "description": "The name of the project to get details for" + } + }, + "required": [ + "projectName" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "nx_generators", + "description": "Returns a list of generators that could be relevant to the user query.", + "inputSchema": { + "type": "object" + } + }, + { + "name": "nx_generator_schema", + "description": "Returns the detailed JSON schema for an nx generator", + "inputSchema": { + "type": "object", + "properties": { + "generatorName": { + "type": "string", + "description": "The name of the generator to get schema for. Use the generator name from the nx_generators tool." + } + }, + "required": [ + "generatorName" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/phoenix-mcp.json b/mcp-registry/servers/phoenix-mcp.json new file mode 100644 index 00000000..c488bdc1 --- /dev/null +++ b/mcp-registry/servers/phoenix-mcp.json @@ -0,0 +1,430 @@ +{ + "display_name": "Arize Phoenix MCP Server", + "license": "Apache 2.0", + "tags": [ + "MCP", + "Model Context Protocol", + "Prompts Management", + "Datasets", + "Experiments", + "LLM", + "Phoenix", + "Arize" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "@arizeai/phoenix-mcp@latest", + "--baseUrl", + "${PHOENIX_BASE_URL}", + "--apiKey", + "${PHOENIX_API_KEY}" + ], + "description": "Phoenix MCP Server for integration with clients like Claude Desktop, Cursor, and more" + } + }, + "arguments": { + "PHOENIX_API_KEY": { + "description": "API key for Arize Phoenix", + "required": true, + "example": "your-api-key" + }, + "PHOENIX_BASE_URL": { + "description": "Base URL for Arize Phoenix", + "required": true, + "example": "https://my-phoenix.com" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Create a new prompt for my chatbot" + }, + { + "title": "", + "description": "", + "prompt": "List all my prompts" + }, + { + "title": "", + "description": "", + "prompt": "Update my existing prompt" + }, + { + "title": "", + "description": "", + "prompt": "Show me my datasets" + }, + { + "title": "", + "description": "", + "prompt": "Synthesize new examples for my dataset" + }, + { + "title": "", + "description": "", + "prompt": "Pull results from my experiment" + }, + { + "title": "", + "description": "", + "prompt": "Visualize experiment results" + }, + { + "title": "", + "description": "", + "prompt": "Help me iterate on my prompt" + } + ], + "name": "phoenix-mcp", + "repository": { + "type": "git", + "url": "https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp" + }, + "homepage": "https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp", + "author": { + "name": "Arize-ai" + }, + "description": "Phoenix MCP Server is an implementation of the Model Context Protocol that provides a unified interface to the capabilities of the Arize Phoenix platform, enabling prompts management, dataset exploration and synthesis, and experiment visualization with the help of a language model.", + "categories": [ + "AI Systems" + ], + "tools": [ + { + "name": "list-prompts", + "description": "Get a list of all the prompts.\n\nPrompts (templates, prompt templates) are versioned templates for input messages to an LLM.\nEach prompt includes both the input messages, but also the model and invocation parameters\nto use when generating outputs.\n\nReturns a list of prompt objects with their IDs, names, and descriptions.\n\nExample usage: \n List all available prompts\n\nExpected return: \n Array of prompt objects with metadata. \n Example: [{\n \"name\": \"article-summarizer\",\n \"description\": \"Summarizes an article into concise bullet points\",\n \"source_prompt_id\": null,\n \"id\": \"promptid1234\"\n }]", + "inputSchema": { + "type": "object", + "properties": { + "limit": { + "type": "number", + "minimum": 1, + "maximum": 100, + "default": 100 + } + }, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "get-latest-prompt", + "description": "Get the latest version of a prompt. Returns the prompt version with its template, model configuration, and invocation parameters.\n\nExample usage: \n Get the latest version of a prompt named 'article-summarizer'\n\nExpected return: \n Prompt version object with template and configuration. \n Example: {\n \"description\": \"Initial version\",\n \"model_provider\": \"OPENAI\",\n \"model_name\": \"gpt-3.5-turbo\",\n \"template\": {\n \"type\": \"chat\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an expert summarizer. Create clear, concise bullet points highlighting the key information.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Please summarize the following {{topic}} article:\n\n{{article}}\"\n }\n ]\n },\n \"template_type\": \"CHAT\",\n \"template_format\": \"MUSTACHE\",\n \"invocation_parameters\": {\n \"type\": \"openai\",\n \"openai\": {}\n },\n \"id\": \"promptversionid1234\"\n }", + "inputSchema": { + "type": "object", + "properties": { + "prompt_identifier": { + "type": "string" + } + }, + "required": [ + "prompt_identifier" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "get-prompt-by-identifier", + "description": "Get a prompt's latest version by its identifier (name or ID). Returns the prompt version with its template, model configuration, and invocation parameters.\n\nExample usage: \n Get the latest version of a prompt with name 'article-summarizer'\n\nExpected return: \n Prompt version object with template and configuration. \n Example: {\n \"description\": \"Initial version\",\n \"model_provider\": \"OPENAI\",\n \"model_name\": \"gpt-3.5-turbo\",\n \"template\": {\n \"type\": \"chat\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an expert summarizer. Create clear, concise bullet points highlighting the key information.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Please summarize the following {{topic}} article:\n\n{{article}}\"\n }\n ]\n },\n \"template_type\": \"CHAT\",\n \"template_format\": \"MUSTACHE\",\n \"invocation_parameters\": {\n \"type\": \"openai\",\n \"openai\": {}\n },\n \"id\": \"promptversionid1234\"\n }", + "inputSchema": { + "type": "object", + "properties": { + "prompt_identifier": { + "type": "string" + } + }, + "required": [ + "prompt_identifier" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "get-prompt-version", + "description": "Get a specific version of a prompt using its version ID. Returns the prompt version with its template, model configuration, and invocation parameters.\n\nExample usage: \n Get a specific prompt version with ID 'promptversionid1234'\n\nExpected return: \n Prompt version object with template and configuration. \n Example: {\n \"description\": \"Initial version\",\n \"model_provider\": \"OPENAI\",\n \"model_name\": \"gpt-3.5-turbo\",\n \"template\": {\n \"type\": \"chat\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an expert summarizer. Create clear, concise bullet points highlighting the key information.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Please summarize the following {{topic}} article:\n\n{{article}}\"\n }\n ]\n },\n \"template_type\": \"CHAT\",\n \"template_format\": \"MUSTACHE\",\n \"invocation_parameters\": {\n \"type\": \"openai\",\n \"openai\": {}\n },\n \"id\": \"promptversionid1234\"\n }", + "inputSchema": { + "type": "object", + "properties": { + "prompt_version_id": { + "type": "string" + } + }, + "required": [ + "prompt_version_id" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "upsert-prompt", + "description": "Create or update a prompt with its template and configuration. Creates a new prompt and its initial version with specified model settings.\n\nExample usage: \n Create a new prompt named 'email_generator' with a template for generating emails\n\nExpected return: \n A confirmation message of successful prompt creation", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "template": { + "type": "string" + }, + "model_provider": { + "type": "string", + "enum": [ + "OPENAI", + "AZURE_OPENAI", + "ANTHROPIC", + "GOOGLE" + ], + "default": "OPENAI" + }, + "model_name": { + "type": "string", + "default": "gpt-4" + }, + "temperature": { + "type": "number", + "default": 0.7 + } + }, + "required": [ + "name", + "template" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "list-prompt-versions", + "description": "Get a list of all versions for a specific prompt. Returns versions with pagination support.\n\nExample usage: \n List all versions of a prompt named 'article-summarizer'\n\nExpected return: \n Array of prompt version objects with IDs and configuration. \n Example: [\n {\n \"description\": \"Initial version\",\n \"model_provider\": \"OPENAI\",\n \"model_name\": \"gpt-3.5-turbo\",\n \"template\": {\n \"type\": \"chat\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an expert summarizer. Create clear, concise bullet points highlighting the key information.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Please summarize the following {{topic}} article:\n\n{{article}}\"\n }\n ]\n },\n \"template_type\": \"CHAT\",\n \"template_format\": \"MUSTACHE\",\n \"invocation_parameters\": {\n \"type\": \"openai\",\n \"openai\": {}\n },\n \"id\": \"promptversionid1234\"\n }\n ]", + "inputSchema": { + "type": "object", + "properties": { + "prompt_identifier": { + "type": "string" + }, + "limit": { + "type": "number", + "minimum": 1, + "maximum": 100, + "default": 100 + } + }, + "required": [ + "prompt_identifier" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "get-prompt-version-by-tag", + "description": "Get a prompt version by its tag name. Returns the prompt version with its template, model configuration, and invocation parameters.\n\nExample usage: \n Get the 'production' tagged version of prompt 'article-summarizer'\n\nExpected return: \n Prompt version object with template and configuration. \n Example: {\n \"description\": \"Initial version\",\n \"model_provider\": \"OPENAI\",\n \"model_name\": \"gpt-3.5-turbo\",\n \"template\": {\n \"type\": \"chat\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an expert summarizer. Create clear, concise bullet points highlighting the key information.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Please summarize the following {{topic}} article:\n\n{{article}}\"\n }\n ]\n },\n \"template_type\": \"CHAT\",\n \"template_format\": \"MUSTACHE\",\n \"invocation_parameters\": {\n \"type\": \"openai\",\n \"openai\": {}\n },\n \"id\": \"promptversionid1234\"\n }", + "inputSchema": { + "type": "object", + "properties": { + "prompt_identifier": { + "type": "string" + }, + "tag_name": { + "type": "string" + } + }, + "required": [ + "prompt_identifier", + "tag_name" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "list-prompt-version-tags", + "description": "Get a list of all tags for a specific prompt version. Returns tag objects with pagination support.\n\nExample usage: \n List all tags associated with prompt version 'promptversionid1234'\n\nExpected return: \n Array of tag objects with names and IDs. \n Example: [\n {\n \"name\": \"staging\",\n \"description\": \"The version deployed to staging\",\n \"id\": \"promptversionid1234\"\n },\n {\n \"name\": \"development\",\n \"description\": \"The version deployed for development\",\n \"id\": \"promptversionid1234\"\n }\n ]", + "inputSchema": { + "type": "object", + "properties": { + "prompt_version_id": { + "type": "string" + }, + "limit": { + "type": "number", + "minimum": 1, + "maximum": 100, + "default": 100 + } + }, + "required": [ + "prompt_version_id" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "add-prompt-version-tag", + "description": "Add a tag to a specific prompt version. The operation returns no content on success (204 status code).\n\nExample usage: \n Tag prompt version 'promptversionid1234' with the name 'production'\n\nExpected return: \n Confirmation message of successful tag addition", + "inputSchema": { + "type": "object", + "properties": { + "prompt_version_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "prompt_version_id", + "name" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "list-experiments-for-dataset", + "description": "Get a list of all the experiments run on a given dataset.\n\nExperiments are collections of experiment runs, each experiment run corresponds to a single \ndataset example. The dataset example is passed to an implied `task` which in turn \nproduces an output.\n\nExample usage:\n Show me all the experiments I've run on dataset RGF0YXNldDox\n\nExpected return:\n Array of experiment objects with metadata. \n Example: [\n {\n \"id\": \"experimentid1234\",\n \"dataset_id\": \"datasetid1234\",\n \"dataset_version_id\": \"datasetversionid1234\",\n \"repetitions\": 1,\n \"metadata\": {},\n \"project_name\": \"Experiment-abc123\",\n \"created_at\": \"YYYY-MM-DDTHH:mm:ssZ\",\n \"updated_at\": \"YYYY-MM-DDTHH:mm:ssZ\"\n }\n ]", + "inputSchema": { + "type": "object", + "properties": { + "dataset_id": { + "type": "string" + } + }, + "required": [ + "dataset_id" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "get-experiment-by-id", + "description": "Get an experiment by its ID.\n\nThe tool returns experiment metadata in the first content block and a JSON object with the \nexperiment data in the second. The experiment data contains both the results of each \nexperiment run and the annotations made by an evaluator to score or label the results, \nfor example, comparing the output of an experiment run to the expected output from the \ndataset example.\n\nExample usage:\n Show me the experiment results for experiment RXhwZXJpbWVudDo4\n\nExpected return:\n Object containing experiment metadata and results.\n Example: {\n \"metadata\": {\n \"id\": \"experimentid1234\",\n \"dataset_id\": \"datasetid1234\",\n \"dataset_version_id\": \"datasetversionid1234\",\n \"repetitions\": 1,\n \"metadata\": {},\n \"project_name\": \"Experiment-abc123\",\n \"created_at\": \"YYYY-MM-DDTHH:mm:ssZ\",\n \"updated_at\": \"YYYY-MM-DDTHH:mm:ssZ\"\n },\n \"experimentResult\": [\n {\n \"example_id\": \"exampleid1234\",\n \"repetition_number\": 0,\n \"input\": \"Sample input text\",\n \"reference_output\": \"Expected output text\",\n \"output\": \"Actual output text\",\n \"error\": null,\n \"latency_ms\": 1000,\n \"start_time\": \"2025-03-20T12:00:00Z\",\n \"end_time\": \"2025-03-20T12:00:01Z\",\n \"trace_id\": \"trace-123\",\n \"prompt_token_count\": 10,\n \"completion_token_count\": 20,\n \"annotations\": [\n {\n \"name\": \"quality\",\n \"annotator_kind\": \"HUMAN\",\n \"label\": \"good\",\n \"score\": 0.9,\n \"explanation\": \"Output matches expected format\",\n \"trace_id\": \"trace-456\",\n \"error\": null,\n \"metadata\": {},\n \"start_time\": \"YYYY-MM-DDTHH:mm:ssZ\",\n \"end_time\": \"YYYY-MM-DDTHH:mm:ssZ\"\n }\n ]\n }\n ]\n }", + "inputSchema": { + "type": "object", + "properties": { + "experiment_id": { + "type": "string" + } + }, + "required": [ + "experiment_id" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "list-datasets", + "description": "Get a list of all datasets.\n\nDatasets are collections of 'dataset examples' that each example includes an input, \n(expected) output, and optional metadata. They are primarily used as inputs for experiments.\n\nExample usage:\n Show me all available datasets\n\nExpected return:\n Array of dataset objects with metadata.\n Example: [\n {\n \"id\": \"RGF0YXNldDox\",\n \"name\": \"my-dataset\",\n \"description\": \"A dataset for testing\",\n \"metadata\": {},\n \"created_at\": \"2024-03-20T12:00:00Z\",\n \"updated_at\": \"2024-03-20T12:00:00Z\"\n }\n ]", + "inputSchema": { + "type": "object", + "properties": { + "limit": { + "type": "number", + "minimum": 1, + "maximum": 100, + "default": 100 + } + }, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "get-dataset-examples", + "description": "Get examples from a dataset.\n\nDataset examples are an array of objects that each include an input, \n(expected) output, and optional metadata. These examples are typically used to represent \ninput to an application or model (e.g. prompt template variables, a code file, or image) \nand used to test or benchmark changes.\n\nExample usage:\n Show me all examples from dataset RGF0YXNldDox\n\nExpected return:\n Object containing dataset ID, version ID, and array of examples.\n Example: {\n \"dataset_id\": \"datasetid1234\",\n \"version_id\": \"datasetversionid1234\",\n \"examples\": [\n {\n \"id\": \"exampleid1234\",\n \"input\": {\n \"text\": \"Sample input text\"\n },\n \"output\": {\n \"text\": \"Expected output text\"\n },\n \"metadata\": {},\n \"updated_at\": \"YYYY-MM-DDTHH:mm:ssZ\"\n }\n ]\n }", + "inputSchema": { + "type": "object", + "properties": { + "datasetId": { + "type": "string" + } + }, + "required": [ + "datasetId" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "get-dataset-experiments", + "description": "List experiments run on a dataset.\n\nExample usage:\n Show me all experiments run on dataset RGF0YXNldDox\n\nExpected return:\n Array of experiment objects with metadata.\n Example: [\n {\n \"id\": \"experimentid1234\",\n \"dataset_id\": \"datasetid1234\",\n \"dataset_version_id\": \"datasetversionid1234\",\n \"repetitions\": 1,\n \"metadata\": {},\n \"project_name\": \"Experiment-abc123\",\n \"created_at\": \"YYYY-MM-DDTHH:mm:ssZ\",\n \"updated_at\": \"YYYY-MM-DDTHH:mm:ssZ\"\n }\n ]", + "inputSchema": { + "type": "object", + "properties": { + "datasetId": { + "type": "string" + } + }, + "required": [ + "datasetId" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "add-dataset-examples", + "description": "Add examples to an existing dataset.\n\nThis tool adds one or more examples to an existing dataset. Each example includes an input,\noutput, and metadata. The metadata will automatically include information indicating that\nthese examples were synthetically generated via MCP. When calling this tool, check existing\nexamples using the \"get-dataset-examples\" tool to ensure that you are not adding duplicate\nexamples and following existing patterns for how data should be structured.\n\nExample usage:\n Look at the analyze \"my-dataset\" and augment them with new examples to cover relevant edge cases\n\nExpected return:\n Confirmation of successful addition of examples to the dataset.\n Example: {\n \"dataset_name\": \"my-dataset\",\n \"message\": \"Successfully added examples to dataset\"\n }", + "inputSchema": { + "type": "object", + "properties": { + "datasetName": { + "type": "string" + }, + "examples": { + "type": "array", + "items": { + "type": "object", + "properties": { + "input": { + "type": "object", + "additionalProperties": {} + }, + "output": { + "type": "object", + "additionalProperties": {} + }, + "metadata": { + "type": "object", + "additionalProperties": {} + } + }, + "required": [ + "input", + "output" + ], + "additionalProperties": false + } + } + }, + "required": [ + "datasetName", + "examples" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/repomix.json b/mcp-registry/servers/repomix.json new file mode 100644 index 00000000..6c45b108 --- /dev/null +++ b/mcp-registry/servers/repomix.json @@ -0,0 +1,232 @@ +{ + "display_name": "Repomix", + "license": "MIT", + "tags": [ + "code", + "AI", + "repository", + "packaging", + "LLM", + "token counting", + "code analysis", + "CLI tool" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "repomix", + "--mcp" + ], + "description": "Run as a Model Context Protocol (MCP) server" + }, + "docker": { + "type": "docker", + "command": "docker", + "args": [ + "run", + "-v", + ".:/app", + "-it", + "--rm", + "ghcr.io/yamadashy/repomix" + ], + "description": "Run Repomix using Docker (current directory)" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "This file contains all the files in the repository combined into one. I want to refactor the code, so please review it first." + }, + { + "title": "", + "description": "", + "prompt": "Based on the codebase in this file, please generate a detailed README.md that includes an overview of the project, its main features, setup instructions, and usage examples." + }, + { + "title": "", + "description": "", + "prompt": "Analyze the code in this file and suggest a comprehensive set of unit tests for the main functions and classes. Include edge cases and potential error scenarios." + }, + { + "title": "", + "description": "", + "prompt": "Review the codebase for adherence to coding best practices and industry standards. Identify areas where the code could be improved in terms of readability, maintainability, and efficiency." + }, + { + "title": "", + "description": "", + "prompt": "This file contains the entire codebase of library. Please provide a comprehensive overview of the library, including its main purpose, key features, and overall architecture." + } + ], + "name": "repomix", + "repository": { + "type": "git", + "url": "https://github.com/yamadashy/repomix" + }, + "homepage": "https://github.com/yamadashy/repomix", + "author": { + "name": "yamadashy" + }, + "description": "- Try Repomix in your browser at [repomix.com](https://repomix.com/)", + "categories": [ + "Dev Tools" + ], + "tools": [ + { + "name": "pack_codebase", + "description": "Package local code directory into a consolidated file for AI analysis", + "inputSchema": { + "type": "object", + "properties": { + "directory": { + "type": "string", + "description": "Directory to pack (Absolute path)" + }, + "compress": { + "type": "boolean", + "default": true, + "description": "Utilize Tree-sitter to intelligently extract essential code signatures and structure while removing implementation details, significantly reducing token usage (default: true)" + }, + "includePatterns": { + "type": "string", + "description": "Specify which files to include using fast-glob compatible patterns (e.g., \"**/*.js,src/**\"). Only files matching these patterns will be processed. It is recommended to pack only necessary files." + }, + "ignorePatterns": { + "type": "string", + "description": "Specify additional files to exclude using fast-glob compatible patterns (e.g., \"test/**,*.spec.js\"). These patterns complement .gitignore and default ignores. It is recommended to pack only necessary files." + }, + "topFilesLength": { + "type": "number", + "default": 10, + "description": "Number of top files to display in the metrics (default: 10)" + } + }, + "required": [ + "directory" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "pack_remote_repository", + "description": "Fetch, clone and package a GitHub repository into a consolidated file for AI analysis", + "inputSchema": { + "type": "object", + "properties": { + "remote": { + "type": "string", + "description": "GitHub repository URL or user/repo (e.g., yamadashy/repomix)" + }, + "compress": { + "type": "boolean", + "default": true, + "description": "Utilize Tree-sitter to intelligently extract essential code signatures and structure while removing implementation details, significantly reducing token usage (default: true)" + }, + "includePatterns": { + "type": "string", + "description": "Specify which files to include using fast-glob compatible patterns (e.g., \"**/*.js,src/**\"). Only files matching these patterns will be processed. It is recommended to pack only necessary files." + }, + "ignorePatterns": { + "type": "string", + "description": "Specify additional files to exclude using fast-glob compatible patterns (e.g., \"test/**,*.spec.js\"). These patterns complement .gitignore and default ignores. It is recommended to pack only necessary files." + }, + "topFilesLength": { + "type": "number", + "default": 10, + "description": "Number of top files to display in the metrics (default: 10)" + } + }, + "required": [ + "remote" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "read_repomix_output", + "description": "Read the contents of a Repomix output file in environments where direct file access is not possible. This tool is specifically intended for cases where the client cannot access the file system directly, such as in web-based environments or sandboxed applications. For systems with direct file access, use standard file operations instead.", + "inputSchema": { + "type": "object", + "properties": { + "outputId": { + "type": "string", + "description": "ID of the Repomix output file to read" + } + }, + "required": [ + "outputId" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "file_system_read_file", + "description": "Read a file using an absolute path with security validation.", + "inputSchema": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Absolute path to the file to read" + } + }, + "required": [ + "path" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + }, + { + "name": "file_system_read_directory", + "description": "List contents of a directory using an absolute path.", + "inputSchema": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Absolute path to the directory to list" + } + }, + "required": [ + "path" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + ], + "prompts": [ + { + "name": "pack_remote_repository", + "description": "Pack a remote GitHub repository for analysis", + "arguments": [ + { + "name": "repository", + "description": "GitHub repository URL or owner/repo format (e.g., \"yamadashy/repomix\")", + "required": true + }, + { + "name": "includePatterns", + "description": "Comma-separated list of glob patterns to include (e.g., \"src/**,lib/**\"). It is recommended to pack only necessary files.", + "required": false + }, + { + "name": "ignorePatterns", + "description": "Comma-separated list of glob patterns to ignore (e.g., \"**/*.test.js,**/*.spec.js\"). It is recommended to pack only necessary files.", + "required": false + } + ] + } + ], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/serena.json b/mcp-registry/servers/serena.json new file mode 100644 index 00000000..3796ab66 --- /dev/null +++ b/mcp-registry/servers/serena.json @@ -0,0 +1,95 @@ +{ + "display_name": "Serena", + "license": "MIT", + "tags": [ + "coding agent", + "code retrieval", + "code editing", + "language server", + "MCP", + "open-source", + "semantic analysis", + "AI assistant" + ], + "installations": { + "uvx": { + "type": "uvx", + "command": "uv", + "args": [ + "run", + "--directory", + "/abs/path/to/serena", + "serena-mcp-server", + "--project-file", + "/abs/path/to/myproject.yml" + ], + "description": "Run Serena MCP Server in Claude Desktop" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Can you help me understand the structure of this codebase?" + }, + { + "title": "", + "description": "", + "prompt": "I need to implement a new feature that allows users to search for code symbols by name. How would I do that?" + }, + { + "title": "", + "description": "", + "prompt": "Find all references to the 'SerenaAgent' class in the codebase" + }, + { + "title": "", + "description": "", + "prompt": "Create a new tool that can analyze code complexity" + }, + { + "title": "", + "description": "", + "prompt": "Help me refactor the code that handles memory management" + }, + { + "title": "", + "description": "", + "prompt": "What language servers does Serena support out of the box?" + }, + { + "title": "", + "description": "", + "prompt": "Write a test for the 'find_symbol' tool" + }, + { + "title": "", + "description": "", + "prompt": "How can I integrate Serena with Claude Desktop?" + }, + { + "title": "", + "description": "", + "prompt": "Show me how to use Serena with Gemini through the Agno agent" + }, + { + "title": "", + "description": "", + "prompt": "I'm getting an error when trying to start the MCP server. How can I troubleshoot this?" + } + ], + "name": "serena", + "repository": { + "type": "git", + "url": "https://github.com/oraios/serena" + }, + "homepage": "https://github.com/oraios/serena", + "author": { + "name": "oraios" + }, + "description": "You can use Serena for any coding tasks \u2013 whether it is focussed on analysis, planning,", + "categories": [ + "Dev Tools" + ], + "is_official": false +} diff --git a/mcp-registry/servers/twitter-mcp.json b/mcp-registry/servers/twitter-mcp.json new file mode 100644 index 00000000..0c032192 --- /dev/null +++ b/mcp-registry/servers/twitter-mcp.json @@ -0,0 +1,121 @@ +{ + "display_name": "Twitter MCP Server", + "license": "MIT", + "tags": [ + "twitter", + "social media", + "tweet", + "search", + "mcp", + "api" + ], + "installations": { + "npm": { + "type": "npm", + "command": "npx", + "args": [ + "-y", + "@enescinar/twitter-mcp" + ], + "env": { + "API_KEY": "${API_KEY}", + "API_SECRET_KEY": "${API_SECRET_KEY}", + "ACCESS_TOKEN": "${ACCESS_TOKEN}", + "ACCESS_TOKEN_SECRET": "${ACCESS_TOKEN_SECRET}" + }, + "description": "Install and run Twitter MCP server using npx" + } + }, + "arguments": { + "API_KEY": { + "required": true, + "description": "Twitter API key", + "example": "your_api_key" + }, + "API_SECRET_KEY": { + "required": true, + "description": "Twitter API secret key", + "example": "your_api_secret_key" + }, + "ACCESS_TOKEN": { + "required": true, + "description": "Twitter access token", + "example": "your_access_token" + }, + "ACCESS_TOKEN_SECRET": { + "required": true, + "description": "Twitter access token secret", + "example": "your_access_token_secret" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Can you post a tweet saying 'Hello from Claude!'" + }, + { + "title": "", + "description": "", + "prompt": "Can you search for tweets about Claude AI?" + } + ], + "name": "twitter-mcp", + "repository": { + "type": "git", + "url": "https://github.com/EnesCinr/twitter-mcp" + }, + "homepage": "https://github.com/EnesCinr/twitter-mcp", + "author": { + "name": "EnesCinr" + }, + "description": "This MCP server allows Clients to interact with Twitter, enabling posting tweets and searching Twitter.", + "categories": [ + "Messaging" + ], + "tools": [ + { + "name": "post_tweet", + "description": "Post a new tweet to Twitter", + "inputSchema": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "The content of your tweet", + "maxLength": 280 + } + }, + "required": [ + "text" + ] + } + }, + { + "name": "search_tweets", + "description": "Search for tweets on Twitter", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Search query" + }, + "count": { + "type": "number", + "description": "Number of tweets to return (10-100)", + "minimum": 10, + "maximum": 100 + } + }, + "required": [ + "query", + "count" + ] + } + } + ], + "prompts": [], + "resources": [], + "is_official": false +} diff --git a/mcp-registry/servers/workers-mcp.json b/mcp-registry/servers/workers-mcp.json new file mode 100644 index 00000000..48d426ac --- /dev/null +++ b/mcp-registry/servers/workers-mcp.json @@ -0,0 +1,77 @@ +{ + "display_name": "Cloudflare Workers MCP", + "license": "", + "tags": [ + "cloudflare", + "workers", + "mcp", + "model context protocol", + "claude", + "ai", + "serverless" + ], + "installations": { + "cli": { + "type": "cli", + "command": "workers-mcp", + "args": [ + "run", + "your-mcp-server-name", + "https://your-server-url.workers.dev", + "/path/to/your/project" + ], + "description": "Run workers-mcp server for MCP clients" + } + }, + "examples": [ + { + "title": "", + "description": "", + "prompt": "Can you generate a random number for me?" + }, + { + "title": "", + "description": "", + "prompt": "I need a super random number, can you help?" + }, + { + "title": "", + "description": "", + "prompt": "Generate an image of a sunset over mountains" + }, + { + "title": "", + "description": "", + "prompt": "Can you create an image of a cat wearing sunglasses?" + }, + { + "title": "", + "description": "", + "prompt": "What functions can I use with this Cloudflare Worker?" + }, + { + "title": "", + "description": "", + "prompt": "How do I use the image generation feature?" + }, + { + "title": "", + "description": "", + "prompt": "Can you explain how the random number generation works?" + } + ], + "name": "workers-mcp", + "repository": { + "type": "git", + "url": "https://github.com/cloudflare/workers-mcp" + }, + "homepage": "https://github.com/cloudflare/workers-mcp", + "author": { + "name": "cloudflare" + }, + "description": "This package provides both the CLI tooling and the in-Worker logic to connect Claude Desktop (or any [MCP Client](https://modelcontextprotocol.io/)) to a Cloudflare Worker on your account, so you can customise it to suit your needs. It works via a build step that can translate TypeScript methods of your Worker like this:", + "categories": [ + "Dev Tools" + ], + "is_official": false +}