# 8. Query Server

The Query server is an external process that communicates with CouchDB by JSON protocol through stdio interface and processed all design functions calls: views, shows, lists and more.

The default query server is written in JavaScript, running via Mozilla SpiderMonkey. You can use other languages by setting a Query server key in the `language` property of a design document or the Content-Type header of a temporary view. Design documents that do not specify a `language` property are assumed to be of type javascript.

- 8.1. Query Server Protocol
  - 8.1.1. `reset`
  - 8.1.2. `add_lib`
  - 8.1.3. `add_fun`
  - 8.1.4. `map_doc`
  - 8.1.5. `reduce`
  - 8.1.6. `rereduce`
  - 8.1.7. `ddoc`
  - 8.1.8. Returning errors
  - 8.1.9. Logging
- 8.2. JavaScript
  - 8.2.1. Design functions context
  - 8.2.2. CommonJS Modules
- 8.3. Erlang